diff --git a/packages/wallet-contracts/.eslintignore b/packages/wallet-contracts/.eslintignore deleted file mode 100644 index f0a62d6975..0000000000 --- a/packages/wallet-contracts/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -.eslintrc.js -node_modules -src/gen diff --git a/packages/wallet-contracts/.eslintrc.js b/packages/wallet-contracts/.eslintrc.js deleted file mode 100644 index 284d5a529c..0000000000 --- a/packages/wallet-contracts/.eslintrc.js +++ /dev/null @@ -1,38 +0,0 @@ -const { off } = require("process") - -module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module' - }, - - extends: [ - 'plugin:@typescript-eslint/recommended', - 'plugin:import/errors', - 'plugin:import/warnings', - 'plugin:import/typescript', - 'prettier' - ], - - rules: { - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/ban-types': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-inferrable-types': 'off', - '@typescript-eslint/no-var-requires': 'off', - '@typescript-eslint/no-non-null-asserted-optional-chain': 'off', - - 'prefer-spread': 'off', - 'prefer-const': 'off', - - 'import/no-unresolved': 'off', - // 'import/no-default-export': 2, - 'import/no-named-as-default-member': 'off', - - } -} diff --git a/packages/wallet-contracts/.gitattributes b/packages/wallet-contracts/.gitattributes deleted file mode 100644 index 52031de51c..0000000000 --- a/packages/wallet-contracts/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.sol linguist-language=Solidity diff --git a/packages/wallet-contracts/.github/actions/install-dependencies/action.yml b/packages/wallet-contracts/.github/actions/install-dependencies/action.yml deleted file mode 100644 index 2d96c7d588..0000000000 --- a/packages/wallet-contracts/.github/actions/install-dependencies/action.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Setup Node and PNPM dependencies - -runs: - using: 'composite' - - steps: - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Setup PNPM - uses: pnpm/action-setup@v3 - with: - version: 9 - run_install: false - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - - name: Setup pnpm cache - uses: actions/cache@v4 - with: - path: | - ${{ steps.pnpm-cache.outputs.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - shell: bash - run: pnpm install --frozen-lockfile - if: ${{ steps.pnpm-cache.outputs.cache-hit != 'true' }} diff --git a/packages/wallet-contracts/.github/workflows/ci.yml b/packages/wallet-contracts/.github/workflows/ci.yml deleted file mode 100644 index 820aa13c4c..0000000000 --- a/packages/wallet-contracts/.github/workflows/ci.yml +++ /dev/null @@ -1,108 +0,0 @@ -on: [push] - -name: ci - -jobs: - benchmark: - name: Benchmark - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/install-dependencies - - run: pnpm build - - run: pnpm benchmark - - lint-ts: - name: Typescript lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/install-dependencies - - run: pnpm lint:ts - - lint-sol: - name: Solidity lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/install-dependencies - - run: pnpm lint:sol - - test: - name: Test contracts - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/install-dependencies - - run: pnpm build - - run: pnpm test - - coverage: - name: Coverage - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/install-dependencies - - run: pnpm coverage || true - - name: Coveralls - uses: coverallsapp/github-action@master - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - huff-tests: - name: Huff tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install Huff - uses: huff-language/huff-toolchain@v3 - with: - version: nightly - - - name: Run tests - run: bash ./run_huff_tests.sh - - foundry-tests: - name: Foundry tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Install Huff - uses: huff-language/huff-toolchain@v3 - with: - version: nightly - - - name: Run tests - run: FOUNDRY_FUZZ_RUNS=2048 MAX_ARRAY_LEN=32 forge test -vvv - - foundry-tests-long-arrays: - name: Foundry tests (long arrays) - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Install Huff - uses: huff-language/huff-toolchain@v3 - with: - version: nightly - - - name: Run tests - run: FOUNDRY_FUZZ_RUNS=1024 forge test -vvv diff --git a/packages/wallet-contracts/.gitmodules b/packages/wallet-contracts/.gitmodules deleted file mode 100644 index b6622fb248..0000000000 --- a/packages/wallet-contracts/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "lib/forge-std"] - path = lib/forge-std - url = https://github.com/foundry-rs/forge-std -[submodule "lib/foundry-huff"] - path = lib/foundry-huff - url = https://github.com/huff-language/foundry-huff \ No newline at end of file diff --git a/packages/wallet-contracts/.prettierrc b/packages/wallet-contracts/.prettierrc deleted file mode 100644 index 421afa9791..0000000000 --- a/packages/wallet-contracts/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "tabWidth": 2, - "useTabs": false, - "semi": false, - "singleQuote": true, - "trailingComma": "none", - "arrowParens": "avoid", - "printWidth": 130 -} diff --git a/packages/wallet-contracts/.solcover.js b/packages/wallet-contracts/.solcover.js deleted file mode 100644 index fab8bc0e80..0000000000 --- a/packages/wallet-contracts/.solcover.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - skipFiles: ['mocks', 'migrations'] -} diff --git a/packages/wallet-contracts/.solhint.json b/packages/wallet-contracts/.solhint.json deleted file mode 100644 index 951b9ecc0b..0000000000 --- a/packages/wallet-contracts/.solhint.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "solhint:recommended", - "rules": { - "quotes": "off", - "const-name-snakecase": "off", - "contract-name-camelcase": "off", - "event-name-camelcase": "off", - "func-name-mixedcase": "off", - "func-param-name-mixedcase": "off", - "modifier-name-mixedcase": "off", - "private-vars-leading-underscore": "off", - "use-forbidden-name": "off", - "var-name-mixedcase": "off", - "func-order": "off", - "imports-on-top": "off", - "ordering": "off", - "no-global-import": "off", - "no-unused-vars": "error", - "not-rely-on-time": "off", - "no-inline-assembly": "off", - "visibility-modifier-order": "off", - "compiler-version": ["error", "0.8.18"], - "func-visibility": ["warn", {"ignoreConstructors":true}], - "reason-string": ["warn", {"maxLength": 96}] - } -} diff --git a/packages/wallet-contracts/0xsequence-wallet-contracts-3.0.1.tgz b/packages/wallet-contracts/0xsequence-wallet-contracts-3.0.1.tgz deleted file mode 100644 index 543d81b695..0000000000 Binary files a/packages/wallet-contracts/0xsequence-wallet-contracts-3.0.1.tgz and /dev/null differ diff --git a/packages/wallet-contracts/Counter/.github/workflows/test.yml b/packages/wallet-contracts/Counter/.github/workflows/test.yml deleted file mode 100644 index b79c8d4ffd..0000000000 --- a/packages/wallet-contracts/Counter/.github/workflows/test.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: CI - -permissions: {} - -on: - push: - pull_request: - workflow_dispatch: - -env: - FOUNDRY_PROFILE: ci - -jobs: - check: - name: Foundry project - runs-on: ubuntu-latest - permissions: - contents: read - steps: - - uses: actions/checkout@v5 - with: - persist-credentials: false - submodules: recursive - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - - - name: Show Forge version - run: forge --version - - - name: Run Forge fmt - run: forge fmt --check - - - name: Run Forge build - run: forge build --sizes - - - name: Run Forge tests - run: forge test -vvv diff --git a/packages/wallet-contracts/Counter/.gitmodules b/packages/wallet-contracts/Counter/.gitmodules deleted file mode 100644 index 888d42dcd9..0000000000 --- a/packages/wallet-contracts/Counter/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "lib/forge-std"] - path = lib/forge-std - url = https://github.com/foundry-rs/forge-std diff --git a/packages/wallet-contracts/Counter/README.md b/packages/wallet-contracts/Counter/README.md deleted file mode 100644 index 8817d6ab7b..0000000000 --- a/packages/wallet-contracts/Counter/README.md +++ /dev/null @@ -1,66 +0,0 @@ -## Foundry - -**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** - -Foundry consists of: - -- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). -- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. -- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. -- **Chisel**: Fast, utilitarian, and verbose solidity REPL. - -## Documentation - -https://book.getfoundry.sh/ - -## Usage - -### Build - -```shell -$ forge build -``` - -### Test - -```shell -$ forge test -``` - -### Format - -```shell -$ forge fmt -``` - -### Gas Snapshots - -```shell -$ forge snapshot -``` - -### Anvil - -```shell -$ anvil -``` - -### Deploy - -```shell -$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key -``` - -### Cast - -```shell -$ cast -``` - -### Help - -```shell -$ forge --help -$ anvil --help -$ cast --help -``` diff --git a/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-1763223074249.json b/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-1763223074249.json deleted file mode 100644 index e992522c60..0000000000 --- a/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-1763223074249.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xe967cfba140cfd311ae7b1b1b7e3722aa342485416fa71a65724a7c61ba242ac", - "transactionType": "CREATE", - "contractName": "Counter", - "contractAddress": "0x2bc0484b5b0fafff0a14b858d85e8830621fe0ca", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x31c50", - "value": "0x0", - "input": "0x6080604052348015600e575f5ffd5b506101e18061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80633fb5c1cb146100435780638381f58a1461005f578063d09de08a1461007d575b5f5ffd5b61005d600480360381019061005891906100e4565b610087565b005b610067610090565b604051610074919061011e565b60405180910390f35b610085610095565b005b805f8190555050565b5f5481565b5f5f8154809291906100a690610164565b9190505550565b5f5ffd5b5f819050919050565b6100c3816100b1565b81146100cd575f5ffd5b50565b5f813590506100de816100ba565b92915050565b5f602082840312156100f9576100f86100ad565b5b5f610106848285016100d0565b91505092915050565b610118816100b1565b82525050565b5f6020820190506101315f83018461010f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61016e826100b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036101a05761019f610137565b5b60018201905091905056fea2646970667358221220df4a76c68e7f061f542d26155d08ef6ac6937da6830d06a5a5c3e20d2c78b21164736f6c634300081e0033", - "nonce": "0xe6f", - "chainId": "0x1" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x2648d", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xe967cfba140cfd311ae7b1b1b7e3722aa342485416fa71a65724a7c61ba242ac", - "transactionIndex": "0x0", - "blockHash": "0x567bf85581af8ab194b098169c966fc2fa35547be5092b02ca8199f6a2fde371", - "blockNumber": "0x16b3eff", - "gasUsed": "0x2648d", - "effectiveGasPrice": "0x60f59cc", - "blobGasPrice": "0x13", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x2bc0484b5b0fafff0a14b858d85e8830621fe0ca" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1763223074249, - "chain": 1, - "commit": null -} \ No newline at end of file diff --git a/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-1763223530987.json b/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-1763223530987.json deleted file mode 100644 index 79ce8649c7..0000000000 --- a/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-1763223530987.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9fb638893fefbe8746ec8865245fbac0b6078c309be487fdf0e84e28ff1aaf3b", - "transactionType": "CREATE", - "contractName": "Counter", - "contractAddress": "0x1687d4bde380019748605231c956335a473fd3dc", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x31c50", - "value": "0x0", - "input": "0x6080604052348015600e575f5ffd5b506101e18061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80633fb5c1cb146100435780638381f58a1461005f578063d09de08a1461007d575b5f5ffd5b61005d600480360381019061005891906100e4565b610087565b005b610067610090565b604051610074919061011e565b60405180910390f35b610085610095565b005b805f8190555050565b5f5481565b5f5f8154809291906100a690610164565b9190505550565b5f5ffd5b5f819050919050565b6100c3816100b1565b81146100cd575f5ffd5b50565b5f813590506100de816100ba565b92915050565b5f602082840312156100f9576100f86100ad565b5b5f610106848285016100d0565b91505092915050565b610118816100b1565b82525050565b5f6020820190506101315f83018461010f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61016e826100b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036101a05761019f610137565b5b60018201905091905056fea2646970667358221220df4a76c68e7f061f542d26155d08ef6ac6937da6830d06a5a5c3e20d2c78b21164736f6c634300081e0033", - "nonce": "0xe71", - "chainId": "0x1" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x2648d", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9fb638893fefbe8746ec8865245fbac0b6078c309be487fdf0e84e28ff1aaf3b", - "transactionIndex": "0x0", - "blockHash": "0xedb6015df8ae2fa303919e4d754fe4ad683fa779a93b568a73205ac74c903755", - "blockNumber": "0x16b3f01", - "gasUsed": "0x2648d", - "effectiveGasPrice": "0x4a528c4", - "blobGasPrice": "0xb", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x1687d4bde380019748605231c956335a473fd3dc" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1763223530987, - "chain": 1, - "commit": null -} \ No newline at end of file diff --git a/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-latest.json b/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-latest.json deleted file mode 100644 index 79ce8649c7..0000000000 --- a/packages/wallet-contracts/Counter/broadcast/Counter.s.sol/1/run-latest.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "transactions": [ - { - "hash": "0x9fb638893fefbe8746ec8865245fbac0b6078c309be487fdf0e84e28ff1aaf3b", - "transactionType": "CREATE", - "contractName": "Counter", - "contractAddress": "0x1687d4bde380019748605231c956335a473fd3dc", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x31c50", - "value": "0x0", - "input": "0x6080604052348015600e575f5ffd5b506101e18061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80633fb5c1cb146100435780638381f58a1461005f578063d09de08a1461007d575b5f5ffd5b61005d600480360381019061005891906100e4565b610087565b005b610067610090565b604051610074919061011e565b60405180910390f35b610085610095565b005b805f8190555050565b5f5481565b5f5f8154809291906100a690610164565b9190505550565b5f5ffd5b5f819050919050565b6100c3816100b1565b81146100cd575f5ffd5b50565b5f813590506100de816100ba565b92915050565b5f602082840312156100f9576100f86100ad565b5b5f610106848285016100d0565b91505092915050565b610118816100b1565b82525050565b5f6020820190506101315f83018461010f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61016e826100b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036101a05761019f610137565b5b60018201905091905056fea2646970667358221220df4a76c68e7f061f542d26155d08ef6ac6937da6830d06a5a5c3e20d2c78b21164736f6c634300081e0033", - "nonce": "0xe71", - "chainId": "0x1" - }, - "additionalContracts": [], - "isFixedGasLimit": false - } - ], - "receipts": [ - { - "status": "0x1", - "cumulativeGasUsed": "0x2648d", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9fb638893fefbe8746ec8865245fbac0b6078c309be487fdf0e84e28ff1aaf3b", - "transactionIndex": "0x0", - "blockHash": "0xedb6015df8ae2fa303919e4d754fe4ad683fa779a93b568a73205ac74c903755", - "blockNumber": "0x16b3f01", - "gasUsed": "0x2648d", - "effectiveGasPrice": "0x4a528c4", - "blobGasPrice": "0xb", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contractAddress": "0x1687d4bde380019748605231c956335a473fd3dc" - } - ], - "libraries": [], - "pending": [], - "returns": {}, - "timestamp": 1763223530987, - "chain": 1, - "commit": null -} \ No newline at end of file diff --git a/packages/wallet-contracts/Counter/foundry.lock b/packages/wallet-contracts/Counter/foundry.lock deleted file mode 100644 index fee8a95759..0000000000 --- a/packages/wallet-contracts/Counter/foundry.lock +++ /dev/null @@ -1,8 +0,0 @@ -{ - "lib/forge-std": { - "tag": { - "name": "v1.11.0", - "rev": "8e40513d678f392f398620b3ef2b418648b33e89" - } - } -} \ No newline at end of file diff --git a/packages/wallet-contracts/Counter/foundry.toml b/packages/wallet-contracts/Counter/foundry.toml deleted file mode 100644 index 25b918f9c9..0000000000 --- a/packages/wallet-contracts/Counter/foundry.toml +++ /dev/null @@ -1,6 +0,0 @@ -[profile.default] -src = "src" -out = "out" -libs = ["lib"] - -# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/packages/wallet-contracts/Counter/lib/forge-std/.gitattributes b/packages/wallet-contracts/Counter/lib/forge-std/.gitattributes deleted file mode 100644 index 27042d458c..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -src/Vm.sol linguist-generated diff --git a/packages/wallet-contracts/Counter/lib/forge-std/.github/CODEOWNERS b/packages/wallet-contracts/Counter/lib/forge-std/.github/CODEOWNERS deleted file mode 100644 index beae7aa872..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @danipopes @klkvr @mattsse @grandizzy @yash-atreya @zerosnacks @onbjerg @0xrusowsky \ No newline at end of file diff --git a/packages/wallet-contracts/Counter/lib/forge-std/.github/dependabot.yml b/packages/wallet-contracts/Counter/lib/forge-std/.github/dependabot.yml deleted file mode 100644 index 5ace4600a1..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/.github/dependabot.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" diff --git a/packages/wallet-contracts/Counter/lib/forge-std/.github/workflows/ci.yml b/packages/wallet-contracts/Counter/lib/forge-std/.github/workflows/ci.yml deleted file mode 100644 index cede018c79..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/.github/workflows/ci.yml +++ /dev/null @@ -1,142 +0,0 @@ -name: CI - -permissions: {} - -on: - workflow_dispatch: - pull_request: - push: - branches: - - master - -jobs: - build: - name: build +${{ matrix.toolchain }} ${{ matrix.flags }} - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: read - strategy: - fail-fast: false - matrix: - toolchain: [stable, nightly] - flags: - - "" - - --via-ir - - --use solc:0.8.17 --via-ir - - --use solc:0.8.17 - - --use solc:0.8.0 - - --use solc:0.7.6 - - --use solc:0.7.0 - - --use solc:0.6.2 - - --use solc:0.6.12 - steps: - - uses: actions/checkout@v5 - with: - persist-credentials: false - - uses: foundry-rs/foundry-toolchain@v1 - - run: forge --version - - run: | - case "${{ matrix.flags }}" in - *"solc:0.8.0"* | *"solc:0.7"* | *"solc:0.6"*) - forge build --skip test --skip Config --skip StdConfig --skip LibVariable --deny-warnings ${{ matrix.flags }} - ;; - *) - forge build --skip test --deny-warnings ${{ matrix.flags }} - ;; - esac - # via-ir compilation time checks. - - if: contains(matrix.flags, '--via-ir') - run: forge build --skip test --deny-warnings ${{ matrix.flags }} --contracts 'test/compilation/*' - - test: - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: read - strategy: - fail-fast: false - matrix: - toolchain: [stable, nightly] - steps: - - uses: actions/checkout@v5 - with: - persist-credentials: false - - uses: foundry-rs/foundry-toolchain@v1 - with: - version: ${{ matrix.toolchain }} - - run: forge --version - - run: | - if [ "${{ matrix.toolchain }}" = "stable" ]; then - forge test -vvv --no-match-path "test/Config.t.sol" - else - forge test -vvv - fi - - fmt: - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: read - steps: - - uses: actions/checkout@v5 - with: - persist-credentials: false - - uses: foundry-rs/foundry-toolchain@v1 - - run: forge --version - - run: forge fmt --check - - typos: - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: read - steps: - - uses: actions/checkout@v5 - with: - persist-credentials: false - - uses: crate-ci/typos@7436548694def3314aacd93ed06c721b1f91ea04 # v1 - - codeql: - name: Analyze (${{ matrix.language }}) - runs-on: ubuntu-latest - permissions: - security-events: write - actions: read - contents: read - strategy: - fail-fast: false - matrix: - include: - - language: actions - build-mode: none - steps: - - name: Checkout repository - uses: actions/checkout@v5 - with: - persist-credentials: false - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - build-mode: ${{ matrix.build-mode }} - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - with: - category: "/language:${{matrix.language}}" - - ci-success: - runs-on: ubuntu-latest - if: always() - needs: - - build - - test - - fmt - - typos - - codeql - timeout-minutes: 10 - steps: - - name: Decide whether the needed jobs succeeded or failed - uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # release/v1 - with: - jobs: ${{ toJSON(needs) }} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/.github/workflows/sync.yml b/packages/wallet-contracts/Counter/lib/forge-std/.github/workflows/sync.yml deleted file mode 100644 index 15731cbbf3..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/.github/workflows/sync.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Sync Release Branch - -permissions: {} - -on: - release: - types: - - created - -jobs: - sync-release-branch: - runs-on: ubuntu-latest - permissions: - contents: write - if: startsWith(github.event.release.tag_name, 'v1') - steps: - - name: Check out the repo - uses: actions/checkout@v5 - with: - persist-credentials: true - fetch-depth: 0 - ref: v1 - - # The email is derived from the bots user id, - # found here: https://api.github.com/users/github-actions%5Bbot%5D - - name: Configure Git - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - - name: Sync Release Branch - run: | - git fetch --tags - git checkout v1 - git reset --hard ${GITHUB_REF} - git push --force diff --git a/packages/wallet-contracts/Counter/lib/forge-std/CONTRIBUTING.md b/packages/wallet-contracts/Counter/lib/forge-std/CONTRIBUTING.md deleted file mode 100644 index 89b75f3f78..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/CONTRIBUTING.md +++ /dev/null @@ -1,193 +0,0 @@ -## Contributing to Foundry - -Thanks for your interest in improving Foundry! - -There are multiple opportunities to contribute at any level. It doesn't matter if you are just getting started with Rust or are the most weathered expert, we can use your help. - -This document will help you get started. **Do not let the document intimidate you**. -It should be considered as a guide to help you navigate the process. - -The [dev Telegram][dev-tg] is available for any concerns you may have that are not covered in this guide. - -### Code of Conduct - -The Foundry project adheres to the [Rust Code of Conduct][rust-coc]. This code of conduct describes the _minimum_ behavior expected from all contributors. - -Instances of violations of the Code of Conduct can be reported by contacting the team at [me@gakonst.com](mailto:me@gakonst.com). - -### Ways to contribute - -There are fundamentally four ways an individual can contribute: - -1. **By opening an issue:** For example, if you believe that you have uncovered a bug - in Foundry, creating a new issue in the issue tracker is the way to report it. -2. **By adding context:** Providing additional context to existing issues, - such as screenshots and code snippets, which help resolve issues. -3. **By resolving issues:** Typically this is done in the form of either - demonstrating that the issue reported is not a problem after all, or more often, - by opening a pull request that fixes the underlying problem, in a concrete and - reviewable manner. - -**Anybody can participate in any stage of contribution**. We urge you to participate in the discussion -around bugs and participate in reviewing PRs. - -### Contributions Related to Spelling and Grammar - -At this time, we will not be accepting contributions that only fix spelling or grammatical errors in documentation, code or -elsewhere. - -### Asking for help - -If you have reviewed existing documentation and still have questions, or you are having problems, you can get help in the following ways: - -- **Asking in the support Telegram:** The [Foundry Support Telegram][support-tg] is a fast and easy way to ask questions. -- **Opening a discussion:** This repository comes with a discussions board where you can also ask for help. Click the "Discussions" tab at the top. - -As Foundry is still in heavy development, the documentation can be a bit scattered. -The [Foundry Book][foundry-book] is our current best-effort attempt at keeping up-to-date information. - -### Submitting a bug report - -When filing a new bug report in the issue tracker, you will be presented with a basic form to fill out. - -If you believe that you have uncovered a bug, please fill out the form to the best of your ability. Do not worry if you cannot answer every detail; just fill in what you can. Contributors will ask follow-up questions if something is unclear. - -The most important pieces of information we need in a bug report are: - -- The Foundry version you are on (and that it is up to date) -- The platform you are on (Windows, macOS, an M1 Mac or Linux) -- Code snippets if this is happening in relation to testing or building code -- Concrete steps to reproduce the bug - -In order to rule out the possibility of the bug being in your project, the code snippets should be as minimal -as possible. It is better if you can reproduce the bug with a small snippet as opposed to an entire project! - -See [this guide][mcve] on how to create a minimal, complete, and verifiable example. - -### Submitting a feature request - -When adding a feature request in the issue tracker, you will be presented with a basic form to fill out. - -Please include as detailed of an explanation as possible of the feature you would like, adding additional context if necessary. - -If you have examples of other tools that have the feature you are requesting, please include them as well. - -### Resolving an issue - -Pull requests are the way concrete changes are made to the code, documentation, and dependencies of Foundry. - -Even minor pull requests, such as those fixing wording, are greatly appreciated. Before making a large change, it is usually -a good idea to first open an issue describing the change to solicit feedback and guidance. This will increase -the likelihood of the PR getting merged. - -Please make sure that the following commands pass if you have changed the code: - -```sh -forge fmt --check -forge test -vvv -``` - -To make sure your changes are compatible with all compiler version targets, run the following commands: - -```sh -forge build --skip test --use solc:0.6.2 -forge build --skip test --use solc:0.6.12 -forge build --skip test --use solc:0.7.0 -forge build --skip test --use solc:0.7.6 -forge build --skip test --use solc:0.8.0 -``` - -The CI will also ensure that the code is formatted correctly and that the tests are passing across all compiler version targets. - -#### Adding cheatcodes - -Please follow the guide outlined in the [cheatcodes](https://github.com/foundry-rs/foundry/blob/master/docs/dev/cheatcodes.md#adding-a-new-cheatcode) documentation of Foundry. - -When making modifications to the native cheatcodes or adding new ones, please make sure to run [`./scripts/vm.py`](./scripts/vm.py) to update the cheatcodes in the [`src/Vm.sol`](./src/Vm.sol) file. - -By default the script will automatically generate the cheatcodes from the [`cheatcodes.json`](https://raw.githubusercontent.com/foundry-rs/foundry/master/crates/cheatcodes/assets/cheatcodes.json) file but alternatively you can provide a path to a JSON file containing the Vm interface, as generated by Foundry, with the `--from` flag. - -```sh -./scripts/vm.py --from path/to/cheatcodes.json -``` - -It is possible that the resulting [`src/Vm.sol`](./src/Vm.sol) file will have some changes that are not directly related to your changes, this is not a problem. - -#### Commits - -It is a recommended best practice to keep your changes as logically grouped as possible within individual commits. There is no limit to the number of commits any single pull request may have, and many contributors find it easier to review changes that are split across multiple commits. - -That said, if you have a number of commits that are "checkpoints" and don't represent a single logical change, please squash those together. - -#### Opening the pull request - -From within GitHub, opening a new pull request will present you with a template that should be filled out. Please try your best at filling out the details, but feel free to skip parts if you're not sure what to put. - -#### Discuss and update - -You will probably get feedback or requests for changes to your pull request. -This is a big part of the submission process, so don't be discouraged! Some contributors may sign off on the pull request right away, others may have more detailed comments or feedback. -This is a necessary part of the process in order to evaluate whether the changes are correct and necessary. - -**Any community member can review a PR, so you might get conflicting feedback**. -Keep an eye out for comments from code owners to provide guidance on conflicting feedback. - -#### Reviewing pull requests - -**Any Foundry community member is welcome to review any pull request**. - -All contributors who choose to review and provide feedback on pull requests have a responsibility to both the project and individual making the contribution. Reviews and feedback must be helpful, insightful, and geared towards improving the contribution as opposed to simply blocking it. If there are reasons why you feel the PR should not be merged, explain what those are. Do not expect to be able to block a PR from advancing simply because you say "no" without giving an explanation. Be open to having your mind changed. Be open to working _with_ the contributor to make the pull request better. - -Reviews that are dismissive or disrespectful of the contributor or any other reviewers are strictly counter to the Code of Conduct. - -When reviewing a pull request, the primary goals are for the codebase to improve and for the person submitting the request to succeed. **Even if a pull request is not merged, the submitter should come away from the experience feeling like their effort was not unappreciated**. Every PR from a new contributor is an opportunity to grow the community. - -##### Review a bit at a time - -Do not overwhelm new contributors. - -It is tempting to micro-optimize and make everything about relative performance, perfect grammar, or exact style matches. Do not succumb to that temptation.. - -Focus first on the most significant aspects of the change: - -1. Does this change make sense for Foundry? -2. Does this change make Foundry better, even if only incrementally? -3. Are there clear bugs or larger scale issues that need attending? -4. Are the commit messages readable and correct? If it contains a breaking change, is it clear enough? - -Note that only **incremental** improvement is needed to land a PR. This means that the PR does not need to be perfect, only better than the status quo. Follow-up PRs may be opened to continue iterating. - -When changes are necessary, _request_ them, do not _demand_ them, and **do not assume that the submitter already knows how to add a test or run a benchmark**. - -Specific performance optimization techniques, coding styles and conventions change over time. The first impression you give to a new contributor never does. - -Nits (requests for small changes that are not essential) are fine, but try to avoid stalling the pull request. Most nits can typically be fixed by the Foundry maintainers merging the pull request, but they can also be an opportunity for the contributor to learn a bit more about the project. - -It is always good to clearly indicate nits when you comment, e.g.: `Nit: change foo() to bar(). But this is not blocking`. - -If your comments were addressed but were not folded after new commits, or if they proved to be mistaken, please, [hide them][hiding-a-comment] with the appropriate reason to keep the conversation flow concise and relevant. - -##### Be aware of the person behind the code - -Be aware that _how_ you communicate requests and reviews in your feedback can have a significant impact on the success of the pull request. Yes, we may merge a particular change that makes Foundry better, but the individual might just not want to have anything to do with Foundry ever again. The goal is not just having good code. - -##### Abandoned or stale pull requests - -If a pull request appears to be abandoned or stalled, it is polite to first check with the contributor to see if they intend to continue the work before checking if they would mind if you took it over (especially if it just has nits left). When doing so, it is courteous to give the original contributor credit for the work they started, either by preserving their name and e-mail address in the commit log, or by using the `Author: ` or `Co-authored-by: ` metadata tag in the commits. - -_Adapted from the [ethers-rs contributing guide](https://github.com/gakonst/ethers-rs/blob/master/CONTRIBUTING.md)_. - -### Releasing - -Releases are automatically done by the release workflow when a tag is pushed, however, these steps still need to be taken: - -1. Ensure that the versions in the relevant `Cargo.toml` files are up-to-date. -2. Update documentation links -3. Perform a final audit for breaking changes. - -[rust-coc]: https://github.com/rust-lang/rust/blob/master/CODE_OF_CONDUCT.md -[dev-tg]: https://t.me/foundry_rs -[foundry-book]: https://github.com/foundry-rs/foundry-book -[support-tg]: https://t.me/foundry_support -[mcve]: https://stackoverflow.com/help/mcve -[hiding-a-comment]: https://help.github.com/articles/managing-disruptive-comments/#hiding-a-comment \ No newline at end of file diff --git a/packages/wallet-contracts/Counter/lib/forge-std/LICENSE-APACHE b/packages/wallet-contracts/Counter/lib/forge-std/LICENSE-APACHE deleted file mode 100644 index cf01a499fb..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/LICENSE-APACHE +++ /dev/null @@ -1,203 +0,0 @@ -Copyright Contributors to Forge Standard Library - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/packages/wallet-contracts/Counter/lib/forge-std/LICENSE-MIT b/packages/wallet-contracts/Counter/lib/forge-std/LICENSE-MIT deleted file mode 100644 index 28f98304ac..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/LICENSE-MIT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright Contributors to Forge Standard Library - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE O THE USE OR OTHER -DEALINGS IN THE SOFTWARE.R diff --git a/packages/wallet-contracts/Counter/lib/forge-std/README.md b/packages/wallet-contracts/Counter/lib/forge-std/README.md deleted file mode 100644 index 51673e5ee9..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/README.md +++ /dev/null @@ -1,266 +0,0 @@ -# Forge Standard Library • [![CI status](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml/badge.svg)](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml) - -Forge Standard Library is a collection of helpful contracts and libraries for use with [Forge and Foundry](https://github.com/foundry-rs/foundry). It leverages Forge's cheatcodes to make writing tests easier and faster, while improving the UX of cheatcodes. - -**Learn how to use Forge-Std with the [📖 Foundry Book (Forge-Std Guide)](https://getfoundry.sh/reference/forge-std/overview/).** - -## Install - -```bash -forge install foundry-rs/forge-std -``` - -## Contracts -### stdError - -This is a helper contract for errors and reverts. In Forge, this contract is particularly helpful for the `expectRevert` cheatcode, as it provides all compiler built-in errors. - -See the contract itself for all error codes. - -#### Example usage - -```solidity - -import "forge-std/Test.sol"; - -contract TestContract is Test { - ErrorsTest test; - - function setUp() public { - test = new ErrorsTest(); - } - - function testExpectArithmetic() public { - vm.expectRevert(stdError.arithmeticError); - test.arithmeticError(10); - } -} - -contract ErrorsTest { - function arithmeticError(uint256 a) public { - a = a - 100; - } -} -``` - -### stdStorage - -This is a rather large contract due to all of the overloading to make the UX decent. Primarily, it is a wrapper around the `record` and `accesses` cheatcodes. It can *always* find and write the storage slot(s) associated with a particular variable without knowing the storage layout. The one _major_ caveat to this is while a slot can be found for packed storage variables, we can't write to that variable safely. If a user tries to write to a packed slot, the execution throws an error, unless it is uninitialized (`bytes32(0)`). - -This works by recording all `SLOAD`s and `SSTORE`s during a function call. If there is a single slot read or written to, it immediately returns the slot. Otherwise, behind the scenes, we iterate through and check each one (assuming the user passed in a `depth` parameter). If the variable is a struct, you can pass in a `depth` parameter which is basically the field depth. - -I.e.: -```solidity -struct T { - // depth 0 - uint256 a; - // depth 1 - uint256 b; -} -``` - -#### Example usage - -```solidity -import "forge-std/Test.sol"; - -contract TestContract is Test { - using stdStorage for StdStorage; - - Storage test; - - function setUp() public { - test = new Storage(); - } - - function testFindExists() public { - // Lets say we want to find the slot for the public - // variable `exists`. We just pass in the function selector - // to the `find` command - uint256 slot = stdstore.target(address(test)).sig("exists()").find(); - assertEq(slot, 0); - } - - function testWriteExists() public { - // Lets say we want to write to the slot for the public - // variable `exists`. We just pass in the function selector - // to the `checked_write` command - stdstore.target(address(test)).sig("exists()").checked_write(100); - assertEq(test.exists(), 100); - } - - // It supports arbitrary storage layouts, like assembly based storage locations - function testFindHidden() public { - // `hidden` is a random hash of a bytes, iteration through slots would - // not find it. Our mechanism does - // Also, you can use the selector instead of a string - uint256 slot = stdstore.target(address(test)).sig(test.hidden.selector).find(); - assertEq(slot, uint256(keccak256("my.random.var"))); - } - - // If targeting a mapping, you have to pass in the keys necessary to perform the find - // i.e.: - function testFindMapping() public { - uint256 slot = stdstore - .target(address(test)) - .sig(test.map_addr.selector) - .with_key(address(this)) - .find(); - // in the `Storage` constructor, we wrote that this address' value was 1 in the map - // so when we load the slot, we expect it to be 1 - assertEq(uint(vm.load(address(test), bytes32(slot))), 1); - } - - // If the target is a struct, you can specify the field depth: - function testFindStruct() public { - // NOTE: see the depth parameter - 0 means 0th field, 1 means 1st field, etc. - uint256 slot_for_a_field = stdstore - .target(address(test)) - .sig(test.basicStruct.selector) - .depth(0) - .find(); - - uint256 slot_for_b_field = stdstore - .target(address(test)) - .sig(test.basicStruct.selector) - .depth(1) - .find(); - - assertEq(uint(vm.load(address(test), bytes32(slot_for_a_field))), 1); - assertEq(uint(vm.load(address(test), bytes32(slot_for_b_field))), 2); - } -} - -// A complex storage contract -contract Storage { - struct UnpackedStruct { - uint256 a; - uint256 b; - } - - constructor() { - map_addr[msg.sender] = 1; - } - - uint256 public exists = 1; - mapping(address => uint256) public map_addr; - // mapping(address => Packed) public map_packed; - mapping(address => UnpackedStruct) public map_struct; - mapping(address => mapping(address => uint256)) public deep_map; - mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; - UnpackedStruct public basicStruct = UnpackedStruct({ - a: 1, - b: 2 - }); - - function hidden() public view returns (bytes32 t) { - // an extremely hidden storage slot - bytes32 slot = keccak256("my.random.var"); - assembly { - t := sload(slot) - } - } -} -``` - -### stdCheats - -This is a wrapper over miscellaneous cheatcodes that need wrappers to be more dev friendly. Currently there are only functions related to `prank`. In general, users may expect ETH to be put into an address on `prank`, but this is not the case for safety reasons. Explicitly this `hoax` function should only be used for addresses that have expected balances as it will get overwritten. If an address already has ETH, you should just use `prank`. If you want to change that balance explicitly, just use `deal`. If you want to do both, `hoax` is also right for you. - - -#### Example usage: -```solidity - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; - -// Inherit the stdCheats -contract StdCheatsTest is Test { - Bar test; - function setUp() public { - test = new Bar(); - } - - function testHoax() public { - // we call `hoax`, which gives the target address - // eth and then calls `prank` - hoax(address(1337)); - test.bar{value: 100}(address(1337)); - - // overloaded to allow you to specify how much eth to - // initialize the address with - hoax(address(1337), 1); - test.bar{value: 1}(address(1337)); - } - - function testStartHoax() public { - // we call `startHoax`, which gives the target address - // eth and then calls `startPrank` - // - // it is also overloaded so that you can specify an eth amount - startHoax(address(1337)); - test.bar{value: 100}(address(1337)); - test.bar{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } -} - -contract Bar { - function bar(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - } -} -``` - -### Std Assertions - -Contains various assertions. - -### `console.log` - -Usage follows the same format as [Hardhat](https://hardhat.org/hardhat-network/reference/#console-log). -It's recommended to use `console2.sol` as shown below, as this will show the decoded logs in Forge traces. - -```solidity -// import it indirectly via Test.sol -import "forge-std/Test.sol"; -// or directly import it -import "forge-std/console2.sol"; -... -console2.log(someValue); -``` - -If you need compatibility with Hardhat, you must use the standard `console.sol` instead. -Due to a bug in `console.sol`, logs that use `uint256` or `int256` types will not be properly decoded in Forge traces. - -```solidity -// import it indirectly via Test.sol -import "forge-std/Test.sol"; -// or directly import it -import "forge-std/console.sol"; -... -console.log(someValue); -``` - -## Contributing - -See our [contributing guidelines](./CONTRIBUTING.md). - -## Getting Help - -First, see if the answer to your question can be found in [book](https://book.getfoundry.sh). - -If the answer is not there: - -- Join the [support Telegram](https://t.me/foundry_support) to get help, or -- Open a [discussion](https://github.com/foundry-rs/foundry/discussions/new/choose) with your question, or -- Open an issue with [the bug](https://github.com/foundry-rs/foundry/issues/new/choose) - -If you want to contribute, or follow along with contributor discussion, you can use our [main telegram](https://t.me/foundry_rs) to chat with us about the development of Foundry! - -## License - -Forge Standard Library is offered under either [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) license. diff --git a/packages/wallet-contracts/Counter/lib/forge-std/RELEASE_CHECKLIST.md b/packages/wallet-contracts/Counter/lib/forge-std/RELEASE_CHECKLIST.md deleted file mode 100644 index 4611de4dce..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/RELEASE_CHECKLIST.md +++ /dev/null @@ -1,12 +0,0 @@ -# Release checklist - -This checklist is meant to be used as a guide for the `forge-std` release process. - -## Steps - -- [ ] Update the version number in `package.json` -- [ ] Open and merge a PR with the version bump -- [ ] Tag the merged commit with the version number: `git tag v` -- [ ] Push the tag to the repository: `git push --tags` -- [ ] Create a new GitHub release with the automatically generated changelog and with the name set to `v` -- [ ] Add `## Featured Changes` section to the top of the release notes diff --git a/packages/wallet-contracts/Counter/lib/forge-std/foundry.toml b/packages/wallet-contracts/Counter/lib/forge-std/foundry.toml deleted file mode 100644 index b68bd546cc..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/foundry.toml +++ /dev/null @@ -1,27 +0,0 @@ -[profile.default] -fs_permissions = [{ access = "read-write", path = "./" }] -optimizer = true -optimizer_runs = 200 - -# A list of solidity error codes to ignore. -# 3860 = init-code-size -ignored_error_codes = [3860] - -[rpc_endpoints] -# The RPC URLs are modified versions of the default for testing initialization. -mainnet = "https://eth.merkle.io" # Different API key. -optimism_sepolia = "https://sepolia.optimism.io/" # Adds a trailing slash. -arbitrum_one_sepolia = "https://sepolia-rollup.arbitrum.io/rpc/" # Adds a trailing slash. -needs_undefined_env_var = "${UNDEFINED_RPC_URL_PLACEHOLDER}" - -[fmt] -# These are all the `forge fmt` defaults. -line_length = 120 -tab_width = 4 -bracket_spacing = false -int_types = 'long' -multiline_func_header = 'attributes_first' -quote_style = 'double' -number_underscore = 'preserve' -single_line_statement_blocks = 'preserve' -ignore = ["src/console.sol", "src/console2.sol"] diff --git a/packages/wallet-contracts/Counter/lib/forge-std/package.json b/packages/wallet-contracts/Counter/lib/forge-std/package.json deleted file mode 100644 index 09f5717329..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "forge-std", - "version": "1.11.0", - "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.", - "homepage": "https://book.getfoundry.sh/forge/forge-std", - "bugs": "https://github.com/foundry-rs/forge-std/issues", - "license": "(Apache-2.0 OR MIT)", - "author": "Contributors to Forge Standard Library", - "files": [ - "src/**/*" - ], - "repository": { - "type": "git", - "url": "https://github.com/foundry-rs/forge-std.git" - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/scripts/vm.py b/packages/wallet-contracts/Counter/lib/forge-std/scripts/vm.py deleted file mode 100644 index 3cd047d36d..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/scripts/vm.py +++ /dev/null @@ -1,646 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import copy -import json -import re -import subprocess -from enum import Enum as PyEnum -from pathlib import Path -from typing import Callable -from urllib import request - -VoidFn = Callable[[], None] - -CHEATCODES_JSON_URL = "https://raw.githubusercontent.com/foundry-rs/foundry/master/crates/cheatcodes/assets/cheatcodes.json" -OUT_PATH = "src/Vm.sol" - -VM_SAFE_DOC = """\ -/// The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may -/// result in Script simulations differing from on-chain execution. It is recommended to only use -/// these cheats in scripts. -""" - -VM_DOC = """\ -/// The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used -/// in tests, but it is not recommended to use these cheats in scripts. -""" - - -def main(): - parser = argparse.ArgumentParser( - description="Generate Vm.sol based on the cheatcodes json created by Foundry") - parser.add_argument( - "--from", - metavar="PATH", - dest="path", - required=False, - help="path to a json file containing the Vm interface, as generated by Foundry") - args = parser.parse_args() - json_str = request.urlopen(CHEATCODES_JSON_URL).read().decode("utf-8") if args.path is None else Path(args.path).read_text() - contract = Cheatcodes.from_json(json_str) - - ccs = contract.cheatcodes - ccs = list(filter(lambda cc: cc.status not in ["experimental", "internal"], ccs)) - ccs.sort(key=lambda cc: cc.func.id) - - safe = list(filter(lambda cc: cc.safety == "safe", ccs)) - safe.sort(key=CmpCheatcode) - unsafe = list(filter(lambda cc: cc.safety == "unsafe", ccs)) - unsafe.sort(key=CmpCheatcode) - assert len(safe) + len(unsafe) == len(ccs) - - prefix_with_group_headers(safe) - prefix_with_group_headers(unsafe) - - out = "" - - out += "// Automatically @generated by scripts/vm.py. Do not modify manually.\n\n" - - pp = CheatcodesPrinter( - spdx_identifier="MIT OR Apache-2.0", - solidity_requirement=">=0.6.2 <0.9.0", - abicoder_pragma=True, - ) - pp.p_prelude() - pp.prelude = False - out += pp.finish() - - out += "\n\n" - out += VM_SAFE_DOC - vm_safe = Cheatcodes( - # TODO: Custom errors were introduced in 0.8.4 - errors=[], # contract.errors - events=contract.events, - enums=contract.enums, - structs=contract.structs, - cheatcodes=safe, - ) - pp.p_contract(vm_safe, "VmSafe") - out += pp.finish() - - out += "\n\n" - out += VM_DOC - vm_unsafe = Cheatcodes( - errors=[], - events=[], - enums=[], - structs=[], - cheatcodes=unsafe, - ) - pp.p_contract(vm_unsafe, "Vm", "VmSafe") - out += pp.finish() - - # Compatibility with <0.8.0 - def memory_to_calldata(m: re.Match) -> str: - return " calldata " + m.group(1) - - out = re.sub(r" memory (.*returns)", memory_to_calldata, out) - - with open(OUT_PATH, "w") as f: - f.write(out) - - forge_fmt = ["forge", "fmt", OUT_PATH] - res = subprocess.run(forge_fmt) - assert res.returncode == 0, f"command failed: {forge_fmt}" - - print(f"Wrote to {OUT_PATH}") - - -class CmpCheatcode: - cheatcode: "Cheatcode" - - def __init__(self, cheatcode: "Cheatcode"): - self.cheatcode = cheatcode - - def __lt__(self, other: "CmpCheatcode") -> bool: - return cmp_cheatcode(self.cheatcode, other.cheatcode) < 0 - - def __eq__(self, other: "CmpCheatcode") -> bool: - return cmp_cheatcode(self.cheatcode, other.cheatcode) == 0 - - def __gt__(self, other: "CmpCheatcode") -> bool: - return cmp_cheatcode(self.cheatcode, other.cheatcode) > 0 - - -def cmp_cheatcode(a: "Cheatcode", b: "Cheatcode") -> int: - if a.group != b.group: - return -1 if a.group < b.group else 1 - if a.status != b.status: - return -1 if a.status < b.status else 1 - if a.safety != b.safety: - return -1 if a.safety < b.safety else 1 - if a.func.id != b.func.id: - return -1 if a.func.id < b.func.id else 1 - return 0 - - -# HACK: A way to add group header comments without having to modify printer code -def prefix_with_group_headers(cheats: list["Cheatcode"]): - s = set() - for i, cheat in enumerate(cheats): - if cheat.group in s: - continue - - s.add(cheat.group) - - c = copy.deepcopy(cheat) - c.func.description = "" - c.func.declaration = f"// ======== {group(c.group)} ========" - cheats.insert(i, c) - return cheats - - -def group(s: str) -> str: - if s == "evm": - return "EVM" - if s == "json": - return "JSON" - return s[0].upper() + s[1:] - - -class Visibility(PyEnum): - EXTERNAL: str = "external" - PUBLIC: str = "public" - INTERNAL: str = "internal" - PRIVATE: str = "private" - - def __str__(self): - return self.value - - -class Mutability(PyEnum): - PURE: str = "pure" - VIEW: str = "view" - NONE: str = "" - - def __str__(self): - return self.value - - -class Function: - id: str - description: str - declaration: str - visibility: Visibility - mutability: Mutability - signature: str - selector: str - selector_bytes: bytes - - def __init__( - self, - id: str, - description: str, - declaration: str, - visibility: Visibility, - mutability: Mutability, - signature: str, - selector: str, - selector_bytes: bytes, - ): - self.id = id - self.description = description - self.declaration = declaration - self.visibility = visibility - self.mutability = mutability - self.signature = signature - self.selector = selector - self.selector_bytes = selector_bytes - - @staticmethod - def from_dict(d: dict) -> "Function": - return Function( - d["id"], - d["description"], - d["declaration"], - Visibility(d["visibility"]), - Mutability(d["mutability"]), - d["signature"], - d["selector"], - bytes(d["selectorBytes"]), - ) - - -class Cheatcode: - func: Function - group: str - status: str - safety: str - - def __init__(self, func: Function, group: str, status: str, safety: str): - self.func = func - self.group = group - self.status = status - self.safety = safety - - @staticmethod - def from_dict(d: dict) -> "Cheatcode": - return Cheatcode( - Function.from_dict(d["func"]), - str(d["group"]), - str(d["status"]), - str(d["safety"]), - ) - - -class Error: - name: str - description: str - declaration: str - - def __init__(self, name: str, description: str, declaration: str): - self.name = name - self.description = description - self.declaration = declaration - - @staticmethod - def from_dict(d: dict) -> "Error": - return Error(**d) - - -class Event: - name: str - description: str - declaration: str - - def __init__(self, name: str, description: str, declaration: str): - self.name = name - self.description = description - self.declaration = declaration - - @staticmethod - def from_dict(d: dict) -> "Event": - return Event(**d) - - -class EnumVariant: - name: str - description: str - - def __init__(self, name: str, description: str): - self.name = name - self.description = description - - -class Enum: - name: str - description: str - variants: list[EnumVariant] - - def __init__(self, name: str, description: str, variants: list[EnumVariant]): - self.name = name - self.description = description - self.variants = variants - - @staticmethod - def from_dict(d: dict) -> "Enum": - return Enum( - d["name"], - d["description"], - list(map(lambda v: EnumVariant(**v), d["variants"])), - ) - - -class StructField: - name: str - ty: str - description: str - - def __init__(self, name: str, ty: str, description: str): - self.name = name - self.ty = ty - self.description = description - - -class Struct: - name: str - description: str - fields: list[StructField] - - def __init__(self, name: str, description: str, fields: list[StructField]): - self.name = name - self.description = description - self.fields = fields - - @staticmethod - def from_dict(d: dict) -> "Struct": - return Struct( - d["name"], - d["description"], - list(map(lambda f: StructField(**f), d["fields"])), - ) - - -class Cheatcodes: - errors: list[Error] - events: list[Event] - enums: list[Enum] - structs: list[Struct] - cheatcodes: list[Cheatcode] - - def __init__( - self, - errors: list[Error], - events: list[Event], - enums: list[Enum], - structs: list[Struct], - cheatcodes: list[Cheatcode], - ): - self.errors = errors - self.events = events - self.enums = enums - self.structs = structs - self.cheatcodes = cheatcodes - - @staticmethod - def from_dict(d: dict) -> "Cheatcodes": - return Cheatcodes( - errors=[Error.from_dict(e) for e in d["errors"]], - events=[Event.from_dict(e) for e in d["events"]], - enums=[Enum.from_dict(e) for e in d["enums"]], - structs=[Struct.from_dict(e) for e in d["structs"]], - cheatcodes=[Cheatcode.from_dict(e) for e in d["cheatcodes"]], - ) - - @staticmethod - def from_json(s) -> "Cheatcodes": - return Cheatcodes.from_dict(json.loads(s)) - - @staticmethod - def from_json_file(file_path: str) -> "Cheatcodes": - with open(file_path, "r") as f: - return Cheatcodes.from_dict(json.load(f)) - - -class Item(PyEnum): - ERROR: str = "error" - EVENT: str = "event" - ENUM: str = "enum" - STRUCT: str = "struct" - FUNCTION: str = "function" - - -class ItemOrder: - _list: list[Item] - - def __init__(self, list: list[Item]) -> None: - assert len(list) <= len(Item), "list must not contain more items than Item" - assert len(list) == len(set(list)), "list must not contain duplicates" - self._list = list - pass - - def get_list(self) -> list[Item]: - return self._list - - @staticmethod - def default() -> "ItemOrder": - return ItemOrder( - [ - Item.ERROR, - Item.EVENT, - Item.ENUM, - Item.STRUCT, - Item.FUNCTION, - ] - ) - - -class CheatcodesPrinter: - buffer: str - - prelude: bool - spdx_identifier: str - solidity_requirement: str - abicoder_v2: bool - - block_doc_style: bool - - indent_level: int - _indent_str: str - - nl_str: str - - items_order: ItemOrder - - def __init__( - self, - buffer: str = "", - prelude: bool = True, - spdx_identifier: str = "UNLICENSED", - solidity_requirement: str = "", - abicoder_pragma: bool = False, - block_doc_style: bool = False, - indent_level: int = 0, - indent_with: int | str = 4, - nl_str: str = "\n", - items_order: ItemOrder = ItemOrder.default(), - ): - self.prelude = prelude - self.spdx_identifier = spdx_identifier - self.solidity_requirement = solidity_requirement - self.abicoder_v2 = abicoder_pragma - self.block_doc_style = block_doc_style - self.buffer = buffer - self.indent_level = indent_level - self.nl_str = nl_str - - if isinstance(indent_with, int): - assert indent_with >= 0 - self._indent_str = " " * indent_with - elif isinstance(indent_with, str): - self._indent_str = indent_with - else: - assert False, "indent_with must be int or str" - - self.items_order = items_order - - def finish(self) -> str: - ret = self.buffer.rstrip() - self.buffer = "" - return ret - - def p_contract(self, contract: Cheatcodes, name: str, inherits: str = ""): - if self.prelude: - self.p_prelude(contract) - - self._p_str("interface ") - name = name.strip() - if name != "": - self._p_str(name) - self._p_str(" ") - if inherits != "": - self._p_str("is ") - self._p_str(inherits) - self._p_str(" ") - self._p_str("{") - self._p_nl() - self._with_indent(lambda: self._p_items(contract)) - self._p_str("}") - self._p_nl() - - def _p_items(self, contract: Cheatcodes): - for item in self.items_order.get_list(): - if item == Item.ERROR: - self.p_errors(contract.errors) - elif item == Item.EVENT: - self.p_events(contract.events) - elif item == Item.ENUM: - self.p_enums(contract.enums) - elif item == Item.STRUCT: - self.p_structs(contract.structs) - elif item == Item.FUNCTION: - self.p_functions(contract.cheatcodes) - else: - assert False, f"unknown item {item}" - - def p_prelude(self, contract: Cheatcodes | None = None): - self._p_str(f"// SPDX-License-Identifier: {self.spdx_identifier}") - self._p_nl() - - if self.solidity_requirement != "": - req = self.solidity_requirement - elif contract and len(contract.errors) > 0: - req = ">=0.8.4 <0.9.0" - else: - req = ">=0.6.0 <0.9.0" - self._p_str(f"pragma solidity {req};") - self._p_nl() - - if self.abicoder_v2: - self._p_str("pragma experimental ABIEncoderV2;") - self._p_nl() - - self._p_nl() - - def p_errors(self, errors: list[Error]): - for error in errors: - self._p_line(lambda: self.p_error(error)) - - def p_error(self, error: Error): - self._p_comment(error.description, doc=True) - self._p_line(lambda: self._p_str(error.declaration)) - - def p_events(self, events: list[Event]): - for event in events: - self._p_line(lambda: self.p_event(event)) - - def p_event(self, event: Event): - self._p_comment(event.description, doc=True) - self._p_line(lambda: self._p_str(event.declaration)) - - def p_enums(self, enums: list[Enum]): - for enum in enums: - self._p_line(lambda: self.p_enum(enum)) - - def p_enum(self, enum: Enum): - self._p_comment(enum.description, doc=True) - self._p_line(lambda: self._p_str(f"enum {enum.name} {{")) - self._with_indent(lambda: self.p_enum_variants(enum.variants)) - self._p_line(lambda: self._p_str("}")) - - def p_enum_variants(self, variants: list[EnumVariant]): - for i, variant in enumerate(variants): - self._p_indent() - self._p_comment(variant.description) - - self._p_indent() - self._p_str(variant.name) - if i < len(variants) - 1: - self._p_str(",") - self._p_nl() - - def p_structs(self, structs: list[Struct]): - for struct in structs: - self._p_line(lambda: self.p_struct(struct)) - - def p_struct(self, struct: Struct): - self._p_comment(struct.description, doc=True) - self._p_line(lambda: self._p_str(f"struct {struct.name} {{")) - self._with_indent(lambda: self.p_struct_fields(struct.fields)) - self._p_line(lambda: self._p_str("}")) - - def p_struct_fields(self, fields: list[StructField]): - for field in fields: - self._p_line(lambda: self.p_struct_field(field)) - - def p_struct_field(self, field: StructField): - self._p_comment(field.description) - self._p_indented(lambda: self._p_str(f"{field.ty} {field.name};")) - - def p_functions(self, cheatcodes: list[Cheatcode]): - for cheatcode in cheatcodes: - self._p_line(lambda: self.p_function(cheatcode.func)) - - def p_function(self, func: Function): - self._p_comment(func.description, doc=True) - self._p_line(lambda: self._p_str(func.declaration)) - - def _p_comment(self, s: str, doc: bool = False): - s = s.strip() - if s == "": - return - - s = map(lambda line: line.lstrip(), s.split("\n")) - if self.block_doc_style: - self._p_str("/*") - if doc: - self._p_str("*") - self._p_nl() - for line in s: - self._p_indent() - self._p_str(" ") - if doc: - self._p_str("* ") - self._p_str(line) - self._p_nl() - self._p_indent() - self._p_str(" */") - self._p_nl() - else: - first_line = True - for line in s: - if not first_line: - self._p_indent() - first_line = False - - if doc: - self._p_str("/// ") - else: - self._p_str("// ") - self._p_str(line) - self._p_nl() - - def _with_indent(self, f: VoidFn): - self._inc_indent() - f() - self._dec_indent() - - def _p_line(self, f: VoidFn): - self._p_indent() - f() - self._p_nl() - - def _p_indented(self, f: VoidFn): - self._p_indent() - f() - - def _p_indent(self): - for _ in range(self.indent_level): - self._p_str(self._indent_str) - - def _p_nl(self): - self._p_str(self.nl_str) - - def _p_str(self, txt: str): - self.buffer += txt - - def _inc_indent(self): - self.indent_level += 1 - - def _dec_indent(self): - self.indent_level -= 1 - - -if __name__ == "__main__": - main() diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/Base.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/Base.sol deleted file mode 100644 index 52a508210a..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/Base.sol +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {StdStorage} from "./StdStorage.sol"; -import {Vm, VmSafe} from "./Vm.sol"; - -abstract contract CommonBase { - /// @dev Cheat code address. - /// Calculated as `address(uint160(uint256(keccak256("hevm cheat code"))))`. - address internal constant VM_ADDRESS = 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D; - - /// @dev console.sol and console2.sol work by executing a staticcall to this address. - /// Calculated as `address(uint160(uint88(bytes11("console.log"))))`. - address internal constant CONSOLE = 0x000000000000000000636F6e736F6c652e6c6f67; - - /// @dev Used when deploying with create2. - /// Taken from https://github.com/Arachnid/deterministic-deployment-proxy. - address internal constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - - /// @dev The default address for tx.origin and msg.sender. - /// Calculated as `address(uint160(uint256(keccak256("foundry default caller"))))`. - address internal constant DEFAULT_SENDER = 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38; - - /// @dev The address of the first contract `CREATE`d by a running test contract. - /// When running tests, each test contract is `CREATE`d by `DEFAULT_SENDER` with nonce 1. - /// Calculated as `VM.computeCreateAddress(VM.computeCreateAddress(DEFAULT_SENDER, 1), 1)`. - address internal constant DEFAULT_TEST_CONTRACT = 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f; - - /// @dev Deterministic deployment address of the Multicall3 contract. - /// Taken from https://www.multicall3.com. - address internal constant MULTICALL3_ADDRESS = 0xcA11bde05977b3631167028862bE2a173976CA11; - - /// @dev The order of the secp256k1 curve. - uint256 internal constant SECP256K1_ORDER = - 115792089237316195423570985008687907852837564279074904382605163141518161494337; - - uint256 internal constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - Vm internal constant vm = Vm(VM_ADDRESS); - StdStorage internal stdstore; -} - -abstract contract TestBase is CommonBase {} - -abstract contract ScriptBase is CommonBase { - VmSafe internal constant vmSafe = VmSafe(VM_ADDRESS); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/Config.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/Config.sol deleted file mode 100644 index 1c63c8721b..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/Config.sol +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.13; - -import {console} from "./console.sol"; -import {StdConfig} from "./StdConfig.sol"; -import {CommonBase} from "./Base.sol"; - -/// @notice Boilerplate to streamline the setup of multi-chain environments. -abstract contract Config is CommonBase { - // -- STORAGE (CONFIG + CHAINS + FORKS) ------------------------------------ - - /// @dev Contract instance holding the data from the TOML config file. - StdConfig internal config; - - /// @dev Array of chain IDs for which forks have been created. - uint256[] internal chainIds; - - /// @dev A mapping from a chain ID to its initialized fork ID. - mapping(uint256 => uint256) internal forkOf; - - // -- HELPER FUNCTIONS ----------------------------------------------------- - - /// @notice Loads configuration from a file. - /// - /// @dev This function instantiates a `Config` contract, caching all its config variables. - /// - /// @param filePath: the path to the TOML configuration file. - /// @param writeToFile: whether updates are written back to the TOML file. - function _loadConfig(string memory filePath, bool writeToFile) internal { - console.log("----------"); - console.log(string.concat("Loading config from '", filePath, "'")); - config = new StdConfig(filePath, writeToFile); - vm.makePersistent(address(config)); - console.log("Config successfully loaded"); - console.log("----------"); - } - - /// @notice Loads configuration from a file and creates forks for each specified chain. - /// - /// @dev This function instantiates a `Config` contract, caching all its config variables, - /// reads the configured chain ids, and iterates through them to create a fork for each one. - /// It also creates a map `forkOf[chainId] -> forkId` to easily switch between forks. - /// - /// @param filePath: the path to the TOML configuration file. - /// @param writeToFile: whether updates are written back to the TOML file. - function _loadConfigAndForks(string memory filePath, bool writeToFile) internal { - _loadConfig(filePath, writeToFile); - - console.log("Setting up forks for the configured chains..."); - uint256[] memory chains = config.getChainIds(); - for (uint256 i = 0; i < chains.length; i++) { - uint256 chainId = chains[i]; - uint256 forkId = vm.createFork(config.getRpcUrl(chainId)); - forkOf[chainId] = forkId; - chainIds.push(chainId); - } - console.log("Forks successfully created"); - console.log("----------"); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/LibVariable.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/LibVariable.sol deleted file mode 100644 index c46b15328d..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/LibVariable.sol +++ /dev/null @@ -1,477 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.13; - -// Enable globally. -using LibVariable for Variable global; - -struct Variable { - Type ty; - bytes data; -} - -struct Type { - TypeKind kind; - bool isArray; -} - -enum TypeKind { - None, - Bool, - Address, - Bytes32, - Uint256, - Int256, - String, - Bytes -} - -/// @notice Library for type-safe coercion of the `Variable` struct to concrete types. -/// -/// @dev Ensures that when a `Variable` is cast to a concrete Solidity type, the operation is safe and the -/// underlying type matches what is expected. -/// Provides functions to check types, convert them to strings, and coerce `Variable` instances into -/// both single values and arrays of various types. -/// -/// Usage example: -/// ```solidity -/// import {LibVariable} from "./LibVariable.sol"; -/// -/// contract MyContract { -/// using LibVariable for Variable; -/// StdConfig config; // Assume 'config' is an instance of `StdConfig` and has already been loaded. -/// -/// function readValues() public { -/// // Retrieve a 'uint256' value from the config. -/// uint256 myNumber = config.get("important_number").toUint256(); -/// -/// // Would revert with `TypeMismatch` as 'important_number' isn't a `uint256` in the config file. -/// // string memory notANumber = config.get("important_number").toString(); -/// -/// // Retrieve a address array from the config. -/// string[] memory admins = config.get("whitelisted_admins").toAddressArray(); -/// } -/// } -/// ``` -library LibVariable { - error NotInitialized(); - error TypeMismatch(string expected, string actual); - error UnsafeCast(string message); - - // -- TYPE HELPERS ---------------------------------------------------- - - /// @notice Compares two Type instances for equality. - function isEqual(Type memory self, Type memory other) internal pure returns (bool) { - return self.kind == other.kind && self.isArray == other.isArray; - } - - /// @notice Compares two Type instances for equality. Reverts if they are not equal. - function assertEq(Type memory self, Type memory other) internal pure { - if (!isEqual(self, other)) { - revert TypeMismatch(toString(other), toString(self)); - } - } - - /// @notice Converts a Type struct to its full string representation (i.e. "uint256[]"). - function toString(Type memory self) internal pure returns (string memory) { - string memory tyStr = toString(self.kind); - if (!self.isArray || self.kind == TypeKind.None) { - return tyStr; - } else { - return string.concat(tyStr, "[]"); - } - } - - /// @dev Converts a `TypeKind` enum to its base string representation. - function toString(TypeKind self) internal pure returns (string memory) { - if (self == TypeKind.Bool) return "bool"; - if (self == TypeKind.Address) return "address"; - if (self == TypeKind.Bytes32) return "bytes32"; - if (self == TypeKind.Uint256) return "uint256"; - if (self == TypeKind.Int256) return "int256"; - if (self == TypeKind.String) return "string"; - if (self == TypeKind.Bytes) return "bytes"; - return "none"; - } - - /// @dev Converts a `TypeKind` enum to its base string representation. - function toTomlKey(TypeKind self) internal pure returns (string memory) { - if (self == TypeKind.Bool) return "bool"; - if (self == TypeKind.Address) return "address"; - if (self == TypeKind.Bytes32) return "bytes32"; - if (self == TypeKind.Uint256) return "uint"; - if (self == TypeKind.Int256) return "int"; - if (self == TypeKind.String) return "string"; - if (self == TypeKind.Bytes) return "bytes"; - return "none"; - } - - // -- VARIABLE HELPERS ---------------------------------------------------- - - /// @dev Checks if a `Variable` has been initialized and matches the expected type reverting if not. - modifier check(Variable memory self, Type memory expected) { - assertExists(self); - assertEq(self.ty, expected); - _; - } - - /// @dev Checks if a `Variable` has been initialized, reverting if not. - function assertExists(Variable memory self) public pure { - if (self.ty.kind == TypeKind.None) { - revert NotInitialized(); - } - } - - // -- VARIABLE COERCION FUNCTIONS (SINGLE VALUES) -------------------------- - - /// @notice Coerces a `Variable` to a `bool` value. - function toBool(Variable memory self) internal pure check(self, Type(TypeKind.Bool, false)) returns (bool) { - return abi.decode(self.data, (bool)); - } - - /// @notice Coerces a `Variable` to an `address` value. - function toAddress(Variable memory self) - internal - pure - check(self, Type(TypeKind.Address, false)) - returns (address) - { - return abi.decode(self.data, (address)); - } - - /// @notice Coerces a `Variable` to a `bytes32` value. - function toBytes32(Variable memory self) - internal - pure - check(self, Type(TypeKind.Bytes32, false)) - returns (bytes32) - { - return abi.decode(self.data, (bytes32)); - } - - /// @notice Coerces a `Variable` to a `uint256` value. - function toUint256(Variable memory self) - internal - pure - check(self, Type(TypeKind.Uint256, false)) - returns (uint256) - { - return abi.decode(self.data, (uint256)); - } - - /// @notice Coerces a `Variable` to a `uint128` value, checking for overflow. - function toUint128(Variable memory self) internal pure returns (uint128) { - uint256 value = self.toUint256(); - if (value > type(uint128).max) { - revert UnsafeCast("value does not fit in 'uint128'"); - } - return uint128(value); - } - - /// @notice Coerces a `Variable` to a `uint64` value, checking for overflow. - function toUint64(Variable memory self) internal pure returns (uint64) { - uint256 value = self.toUint256(); - if (value > type(uint64).max) { - revert UnsafeCast("value does not fit in 'uint64'"); - } - return uint64(value); - } - - /// @notice Coerces a `Variable` to a `uint32` value, checking for overflow. - function toUint32(Variable memory self) internal pure returns (uint32) { - uint256 value = self.toUint256(); - if (value > type(uint32).max) { - revert UnsafeCast("value does not fit in 'uint32'"); - } - return uint32(value); - } - - /// @notice Coerces a `Variable` to a `uint16` value, checking for overflow. - function toUint16(Variable memory self) internal pure returns (uint16) { - uint256 value = self.toUint256(); - if (value > type(uint16).max) { - revert UnsafeCast("value does not fit in 'uint16'"); - } - return uint16(value); - } - - /// @notice Coerces a `Variable` to a `uint8` value, checking for overflow. - function toUint8(Variable memory self) internal pure returns (uint8) { - uint256 value = self.toUint256(); - if (value > type(uint8).max) { - revert UnsafeCast("value does not fit in 'uint8'"); - } - return uint8(value); - } - - /// @notice Coerces a `Variable` to an `int256` value. - function toInt256(Variable memory self) internal pure check(self, Type(TypeKind.Int256, false)) returns (int256) { - return abi.decode(self.data, (int256)); - } - - /// @notice Coerces a `Variable` to an `int128` value, checking for overflow/underflow. - function toInt128(Variable memory self) internal pure returns (int128) { - int256 value = self.toInt256(); - if (value > type(int128).max || value < type(int128).min) { - revert UnsafeCast("value does not fit in 'int128'"); - } - return int128(value); - } - - /// @notice Coerces a `Variable` to an `int64` value, checking for overflow/underflow. - function toInt64(Variable memory self) internal pure returns (int64) { - int256 value = self.toInt256(); - if (value > type(int64).max || value < type(int64).min) { - revert UnsafeCast("value does not fit in 'int64'"); - } - return int64(value); - } - - /// @notice Coerces a `Variable` to an `int32` value, checking for overflow/underflow. - function toInt32(Variable memory self) internal pure returns (int32) { - int256 value = self.toInt256(); - if (value > type(int32).max || value < type(int32).min) { - revert UnsafeCast("value does not fit in 'int32'"); - } - return int32(value); - } - - /// @notice Coerces a `Variable` to an `int16` value, checking for overflow/underflow. - function toInt16(Variable memory self) internal pure returns (int16) { - int256 value = self.toInt256(); - if (value > type(int16).max || value < type(int16).min) { - revert UnsafeCast("value does not fit in 'int16'"); - } - return int16(value); - } - - /// @notice Coerces a `Variable` to an `int8` value, checking for overflow/underflow. - function toInt8(Variable memory self) internal pure returns (int8) { - int256 value = self.toInt256(); - if (value > type(int8).max || value < type(int8).min) { - revert UnsafeCast("value does not fit in 'int8'"); - } - return int8(value); - } - - /// @notice Coerces a `Variable` to a `string` value. - function toString(Variable memory self) - internal - pure - check(self, Type(TypeKind.String, false)) - returns (string memory) - { - return abi.decode(self.data, (string)); - } - - /// @notice Coerces a `Variable` to a `bytes` value. - function toBytes(Variable memory self) - internal - pure - check(self, Type(TypeKind.Bytes, false)) - returns (bytes memory) - { - return abi.decode(self.data, (bytes)); - } - - // -- VARIABLE COERCION FUNCTIONS (ARRAYS) --------------------------------- - - /// @notice Coerces a `Variable` to a `bool` array. - function toBoolArray(Variable memory self) - internal - pure - check(self, Type(TypeKind.Bool, true)) - returns (bool[] memory) - { - return abi.decode(self.data, (bool[])); - } - - /// @notice Coerces a `Variable` to an `address` array. - function toAddressArray(Variable memory self) - internal - pure - check(self, Type(TypeKind.Address, true)) - returns (address[] memory) - { - return abi.decode(self.data, (address[])); - } - - /// @notice Coerces a `Variable` to a `bytes32` array. - function toBytes32Array(Variable memory self) - internal - pure - check(self, Type(TypeKind.Bytes32, true)) - returns (bytes32[] memory) - { - return abi.decode(self.data, (bytes32[])); - } - - /// @notice Coerces a `Variable` to a `uint256` array. - function toUint256Array(Variable memory self) - internal - pure - check(self, Type(TypeKind.Uint256, true)) - returns (uint256[] memory) - { - return abi.decode(self.data, (uint256[])); - } - - /// @notice Coerces a `Variable` to a `uint128` array, checking for overflow. - function toUint128Array(Variable memory self) internal pure returns (uint128[] memory) { - uint256[] memory values = self.toUint256Array(); - uint128[] memory result = new uint128[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(uint128).max) { - revert UnsafeCast("value in array does not fit in 'uint128'"); - } - result[i] = uint128(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `uint64` array, checking for overflow. - function toUint64Array(Variable memory self) internal pure returns (uint64[] memory) { - uint256[] memory values = self.toUint256Array(); - uint64[] memory result = new uint64[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(uint64).max) { - revert UnsafeCast("value in array does not fit in 'uint64'"); - } - result[i] = uint64(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `uint32` array, checking for overflow. - function toUint32Array(Variable memory self) internal pure returns (uint32[] memory) { - uint256[] memory values = self.toUint256Array(); - uint32[] memory result = new uint32[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(uint32).max) { - revert UnsafeCast("value in array does not fit in 'uint32'"); - } - result[i] = uint32(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `uint16` array, checking for overflow. - function toUint16Array(Variable memory self) internal pure returns (uint16[] memory) { - uint256[] memory values = self.toUint256Array(); - uint16[] memory result = new uint16[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(uint16).max) { - revert UnsafeCast("value in array does not fit in 'uint16'"); - } - result[i] = uint16(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `uint8` array, checking for overflow. - function toUint8Array(Variable memory self) internal pure returns (uint8[] memory) { - uint256[] memory values = self.toUint256Array(); - uint8[] memory result = new uint8[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(uint8).max) { - revert UnsafeCast("value in array does not fit in 'uint8'"); - } - result[i] = uint8(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to an `int256` array. - function toInt256Array(Variable memory self) - internal - pure - check(self, Type(TypeKind.Int256, true)) - returns (int256[] memory) - { - return abi.decode(self.data, (int256[])); - } - - /// @notice Coerces a `Variable` to a `int128` array, checking for overflow/underflow. - function toInt128Array(Variable memory self) internal pure returns (int128[] memory) { - int256[] memory values = self.toInt256Array(); - int128[] memory result = new int128[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(int128).max || values[i] < type(int128).min) { - revert UnsafeCast("value in array does not fit in 'int128'"); - } - result[i] = int128(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `int64` array, checking for overflow/underflow. - function toInt64Array(Variable memory self) internal pure returns (int64[] memory) { - int256[] memory values = self.toInt256Array(); - int64[] memory result = new int64[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(int64).max || values[i] < type(int64).min) { - revert UnsafeCast("value in array does not fit in 'int64'"); - } - result[i] = int64(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `int32` array, checking for overflow/underflow. - function toInt32Array(Variable memory self) internal pure returns (int32[] memory) { - int256[] memory values = self.toInt256Array(); - int32[] memory result = new int32[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(int32).max || values[i] < type(int32).min) { - revert UnsafeCast("value in array does not fit in 'int32'"); - } - result[i] = int32(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `int16` array, checking for overflow/underflow. - function toInt16Array(Variable memory self) internal pure returns (int16[] memory) { - int256[] memory values = self.toInt256Array(); - int16[] memory result = new int16[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(int16).max || values[i] < type(int16).min) { - revert UnsafeCast("value in array does not fit in 'int16'"); - } - result[i] = int16(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `int8` array, checking for overflow/underflow. - function toInt8Array(Variable memory self) internal pure returns (int8[] memory) { - int256[] memory values = self.toInt256Array(); - int8[] memory result = new int8[](values.length); - for (uint256 i = 0; i < values.length; i++) { - if (values[i] > type(int8).max || values[i] < type(int8).min) { - revert UnsafeCast("value in array does not fit in 'int8'"); - } - result[i] = int8(values[i]); - } - return result; - } - - /// @notice Coerces a `Variable` to a `string` array. - function toStringArray(Variable memory self) - internal - pure - check(self, Type(TypeKind.String, true)) - returns (string[] memory) - { - return abi.decode(self.data, (string[])); - } - - /// @notice Coerces a `Variable` to a `bytes` array. - function toBytesArray(Variable memory self) - internal - pure - check(self, Type(TypeKind.Bytes, true)) - returns (bytes[] memory) - { - return abi.decode(self.data, (bytes[])); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/Script.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/Script.sol deleted file mode 100644 index a2e2aa1cd0..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/Script.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -// 💬 ABOUT -// Forge Std's default Script. - -// 🧩 MODULES -import {console} from "./console.sol"; -import {console2} from "./console2.sol"; -import {safeconsole} from "./safeconsole.sol"; -import {StdChains} from "./StdChains.sol"; -import {StdCheatsSafe} from "./StdCheats.sol"; -import {StdConstants} from "./StdConstants.sol"; -import {stdJson} from "./StdJson.sol"; -import {stdMath} from "./StdMath.sol"; -import {StdStorage, stdStorageSafe} from "./StdStorage.sol"; -import {StdStyle} from "./StdStyle.sol"; -import {StdUtils} from "./StdUtils.sol"; -import {VmSafe} from "./Vm.sol"; - -// 📦 BOILERPLATE -import {ScriptBase} from "./Base.sol"; - -// ⭐️ SCRIPT -abstract contract Script is ScriptBase, StdChains, StdCheatsSafe, StdUtils { - // Note: IS_SCRIPT() must return true. - bool public IS_SCRIPT = true; -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdAssertions.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdAssertions.sol deleted file mode 100644 index 4248170da0..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdAssertions.sol +++ /dev/null @@ -1,764 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; -pragma experimental ABIEncoderV2; - -import {Vm} from "./Vm.sol"; - -abstract contract StdAssertions { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - event log(string); - event logs(bytes); - - event log_address(address); - event log_bytes32(bytes32); - event log_int(int256); - event log_uint(uint256); - event log_bytes(bytes); - event log_string(string); - - event log_named_address(string key, address val); - event log_named_bytes32(string key, bytes32 val); - event log_named_decimal_int(string key, int256 val, uint256 decimals); - event log_named_decimal_uint(string key, uint256 val, uint256 decimals); - event log_named_int(string key, int256 val); - event log_named_uint(string key, uint256 val); - event log_named_bytes(string key, bytes val); - event log_named_string(string key, string val); - - event log_array(uint256[] val); - event log_array(int256[] val); - event log_array(address[] val); - event log_named_array(string key, uint256[] val); - event log_named_array(string key, int256[] val); - event log_named_array(string key, address[] val); - - bytes32 private constant FAILED_SLOT = bytes32("failed"); - - bool private _failed; - - function failed() public view returns (bool) { - if (_failed) { - return true; - } else { - return vm.load(address(vm), FAILED_SLOT) != bytes32(0); - } - } - - function fail() internal virtual { - vm.store(address(vm), FAILED_SLOT, bytes32(uint256(1))); - _failed = true; - } - - function fail(string memory message) internal virtual { - fail(); - vm.assertTrue(false, message); - } - - function assertTrue(bool data) internal pure virtual { - if (!data) { - vm.assertTrue(data); - } - } - - function assertTrue(bool data, string memory err) internal pure virtual { - if (!data) { - vm.assertTrue(data, err); - } - } - - function assertFalse(bool data) internal pure virtual { - if (data) { - vm.assertFalse(data); - } - } - - function assertFalse(bool data, string memory err) internal pure virtual { - if (data) { - vm.assertFalse(data, err); - } - } - - function assertEq(bool left, bool right) internal pure virtual { - if (left != right) { - vm.assertEq(left, right); - } - } - - function assertEq(bool left, bool right, string memory err) internal pure virtual { - if (left != right) { - vm.assertEq(left, right, err); - } - } - - function assertEq(uint256 left, uint256 right) internal pure virtual { - if (left != right) { - vm.assertEq(left, right); - } - } - - function assertEq(uint256 left, uint256 right, string memory err) internal pure virtual { - if (left != right) { - vm.assertEq(left, right, err); - } - } - - function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertEqDecimal(left, right, decimals); - } - - function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertEqDecimal(left, right, decimals, err); - } - - function assertEq(int256 left, int256 right) internal pure virtual { - if (left != right) { - vm.assertEq(left, right); - } - } - - function assertEq(int256 left, int256 right, string memory err) internal pure virtual { - if (left != right) { - vm.assertEq(left, right, err); - } - } - - function assertEqDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertEqDecimal(left, right, decimals); - } - - function assertEqDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertEqDecimal(left, right, decimals, err); - } - - function assertEq(address left, address right) internal pure virtual { - if (left != right) { - vm.assertEq(left, right); - } - } - - function assertEq(address left, address right, string memory err) internal pure virtual { - if (left != right) { - vm.assertEq(left, right, err); - } - } - - function assertEq(bytes32 left, bytes32 right) internal pure virtual { - if (left != right) { - vm.assertEq(left, right); - } - } - - function assertEq(bytes32 left, bytes32 right, string memory err) internal pure virtual { - if (left != right) { - vm.assertEq(left, right, err); - } - } - - function assertEq32(bytes32 left, bytes32 right) internal pure virtual { - if (left != right) { - vm.assertEq(left, right); - } - } - - function assertEq32(bytes32 left, bytes32 right, string memory err) internal pure virtual { - if (left != right) { - vm.assertEq(left, right, err); - } - } - - function assertEq(string memory left, string memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(string memory left, string memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bytes memory left, bytes memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bytes memory left, bytes memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bool[] memory left, bool[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bool[] memory left, bool[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(uint256[] memory left, uint256[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(uint256[] memory left, uint256[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(int256[] memory left, int256[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(int256[] memory left, int256[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(address[] memory left, address[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(address[] memory left, address[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bytes32[] memory left, bytes32[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bytes32[] memory left, bytes32[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(string[] memory left, string[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(string[] memory left, string[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - function assertEq(bytes[] memory left, bytes[] memory right) internal pure virtual { - vm.assertEq(left, right); - } - - function assertEq(bytes[] memory left, bytes[] memory right, string memory err) internal pure virtual { - vm.assertEq(left, right, err); - } - - // Legacy helper - function assertEqUint(uint256 left, uint256 right) internal pure virtual { - assertEq(left, right); - } - - function assertNotEq(bool left, bool right) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right); - } - } - - function assertNotEq(bool left, bool right, string memory err) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right, err); - } - } - - function assertNotEq(uint256 left, uint256 right) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right); - } - } - - function assertNotEq(uint256 left, uint256 right, string memory err) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right, err); - } - } - - function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertNotEqDecimal(left, right, decimals); - } - - function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) - internal - pure - virtual - { - vm.assertNotEqDecimal(left, right, decimals, err); - } - - function assertNotEq(int256 left, int256 right) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right); - } - } - - function assertNotEq(int256 left, int256 right, string memory err) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right, err); - } - } - - function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertNotEqDecimal(left, right, decimals); - } - - function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertNotEqDecimal(left, right, decimals, err); - } - - function assertNotEq(address left, address right) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right); - } - } - - function assertNotEq(address left, address right, string memory err) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right, err); - } - } - - function assertNotEq(bytes32 left, bytes32 right) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right); - } - } - - function assertNotEq(bytes32 left, bytes32 right, string memory err) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right, err); - } - } - - function assertNotEq32(bytes32 left, bytes32 right) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right); - } - } - - function assertNotEq32(bytes32 left, bytes32 right, string memory err) internal pure virtual { - if (left == right) { - vm.assertNotEq(left, right, err); - } - } - - function assertNotEq(string memory left, string memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(string memory left, string memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bytes memory left, bytes memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bytes memory left, bytes memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bool[] memory left, bool[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bool[] memory left, bool[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(uint256[] memory left, uint256[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(uint256[] memory left, uint256[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(int256[] memory left, int256[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(int256[] memory left, int256[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(address[] memory left, address[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(address[] memory left, address[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bytes32[] memory left, bytes32[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bytes32[] memory left, bytes32[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(string[] memory left, string[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(string[] memory left, string[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertNotEq(bytes[] memory left, bytes[] memory right) internal pure virtual { - vm.assertNotEq(left, right); - } - - function assertNotEq(bytes[] memory left, bytes[] memory right, string memory err) internal pure virtual { - vm.assertNotEq(left, right, err); - } - - function assertLt(uint256 left, uint256 right) internal pure virtual { - if (left >= right) { - vm.assertLt(left, right); - } - } - - function assertLt(uint256 left, uint256 right, string memory err) internal pure virtual { - if (left >= right) { - vm.assertLt(left, right, err); - } - } - - function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertLtDecimal(left, right, decimals); - } - - function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertLtDecimal(left, right, decimals, err); - } - - function assertLt(int256 left, int256 right) internal pure virtual { - if (left >= right) { - vm.assertLt(left, right); - } - } - - function assertLt(int256 left, int256 right, string memory err) internal pure virtual { - if (left >= right) { - vm.assertLt(left, right, err); - } - } - - function assertLtDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertLtDecimal(left, right, decimals); - } - - function assertLtDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertLtDecimal(left, right, decimals, err); - } - - function assertGt(uint256 left, uint256 right) internal pure virtual { - if (left <= right) { - vm.assertGt(left, right); - } - } - - function assertGt(uint256 left, uint256 right, string memory err) internal pure virtual { - if (left <= right) { - vm.assertGt(left, right, err); - } - } - - function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertGtDecimal(left, right, decimals); - } - - function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertGtDecimal(left, right, decimals, err); - } - - function assertGt(int256 left, int256 right) internal pure virtual { - if (left <= right) { - vm.assertGt(left, right); - } - } - - function assertGt(int256 left, int256 right, string memory err) internal pure virtual { - if (left <= right) { - vm.assertGt(left, right, err); - } - } - - function assertGtDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertGtDecimal(left, right, decimals); - } - - function assertGtDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertGtDecimal(left, right, decimals, err); - } - - function assertLe(uint256 left, uint256 right) internal pure virtual { - if (left > right) { - vm.assertLe(left, right); - } - } - - function assertLe(uint256 left, uint256 right, string memory err) internal pure virtual { - if (left > right) { - vm.assertLe(left, right, err); - } - } - - function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertLeDecimal(left, right, decimals); - } - - function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertLeDecimal(left, right, decimals, err); - } - - function assertLe(int256 left, int256 right) internal pure virtual { - if (left > right) { - vm.assertLe(left, right); - } - } - - function assertLe(int256 left, int256 right, string memory err) internal pure virtual { - if (left > right) { - vm.assertLe(left, right, err); - } - } - - function assertLeDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertLeDecimal(left, right, decimals); - } - - function assertLeDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertLeDecimal(left, right, decimals, err); - } - - function assertGe(uint256 left, uint256 right) internal pure virtual { - if (left < right) { - vm.assertGe(left, right); - } - } - - function assertGe(uint256 left, uint256 right, string memory err) internal pure virtual { - if (left < right) { - vm.assertGe(left, right, err); - } - } - - function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { - vm.assertGeDecimal(left, right, decimals); - } - - function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertGeDecimal(left, right, decimals, err); - } - - function assertGe(int256 left, int256 right) internal pure virtual { - if (left < right) { - vm.assertGe(left, right); - } - } - - function assertGe(int256 left, int256 right, string memory err) internal pure virtual { - if (left < right) { - vm.assertGe(left, right, err); - } - } - - function assertGeDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { - vm.assertGeDecimal(left, right, decimals); - } - - function assertGeDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { - vm.assertGeDecimal(left, right, decimals, err); - } - - function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) internal pure virtual { - vm.assertApproxEqAbs(left, right, maxDelta); - } - - function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string memory err) - internal - pure - virtual - { - vm.assertApproxEqAbs(left, right, maxDelta, err); - } - - function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) - internal - pure - virtual - { - vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals); - } - - function assertApproxEqAbsDecimal( - uint256 left, - uint256 right, - uint256 maxDelta, - uint256 decimals, - string memory err - ) internal pure virtual { - vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals, err); - } - - function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) internal pure virtual { - vm.assertApproxEqAbs(left, right, maxDelta); - } - - function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string memory err) internal pure virtual { - vm.assertApproxEqAbs(left, right, maxDelta, err); - } - - function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) - internal - pure - virtual - { - vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals); - } - - function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string memory err) - internal - pure - virtual - { - vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals, err); - } - - function assertApproxEqRel( - uint256 left, - uint256 right, - uint256 maxPercentDelta // An 18 decimal fixed point number, where 1e18 == 100% - ) internal pure virtual { - vm.assertApproxEqRel(left, right, maxPercentDelta); - } - - function assertApproxEqRel( - uint256 left, - uint256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - string memory err - ) internal pure virtual { - vm.assertApproxEqRel(left, right, maxPercentDelta, err); - } - - function assertApproxEqRelDecimal( - uint256 left, - uint256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals - ) internal pure virtual { - vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals); - } - - function assertApproxEqRelDecimal( - uint256 left, - uint256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals, - string memory err - ) internal pure virtual { - vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals, err); - } - - function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) internal pure virtual { - vm.assertApproxEqRel(left, right, maxPercentDelta); - } - - function assertApproxEqRel( - int256 left, - int256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - string memory err - ) internal pure virtual { - vm.assertApproxEqRel(left, right, maxPercentDelta, err); - } - - function assertApproxEqRelDecimal( - int256 left, - int256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals - ) internal pure virtual { - vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals); - } - - function assertApproxEqRelDecimal( - int256 left, - int256 right, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals, - string memory err - ) internal pure virtual { - vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals, err); - } - - // Inherited from DSTest, not used but kept for backwards-compatibility - function checkEq0(bytes memory left, bytes memory right) internal pure returns (bool) { - return keccak256(left) == keccak256(right); - } - - function assertEq0(bytes memory left, bytes memory right) internal pure virtual { - assertEq(left, right); - } - - function assertEq0(bytes memory left, bytes memory right, string memory err) internal pure virtual { - assertEq(left, right, err); - } - - function assertNotEq0(bytes memory left, bytes memory right) internal pure virtual { - assertNotEq(left, right); - } - - function assertNotEq0(bytes memory left, bytes memory right, string memory err) internal pure virtual { - assertNotEq(left, right, err); - } - - function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB) internal virtual { - assertEqCall(target, callDataA, target, callDataB, true); - } - - function assertEqCall(address targetA, bytes memory callDataA, address targetB, bytes memory callDataB) - internal - virtual - { - assertEqCall(targetA, callDataA, targetB, callDataB, true); - } - - function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB, bool strictRevertData) - internal - virtual - { - assertEqCall(target, callDataA, target, callDataB, strictRevertData); - } - - function assertEqCall( - address targetA, - bytes memory callDataA, - address targetB, - bytes memory callDataB, - bool strictRevertData - ) internal virtual { - (bool successA, bytes memory returnDataA) = address(targetA).call(callDataA); - (bool successB, bytes memory returnDataB) = address(targetB).call(callDataB); - - if (successA && successB) { - assertEq(returnDataA, returnDataB, "Call return data does not match"); - } - - if (!successA && !successB && strictRevertData) { - assertEq(returnDataA, returnDataB, "Call revert data does not match"); - } - - if (!successA && successB) { - emit log("Error: Calls were not equal"); - emit log_named_bytes(" Left call revert data", returnDataA); - emit log_named_bytes(" Right call return data", returnDataB); - revert("assertion failed"); - } - - if (successA && !successB) { - emit log("Error: Calls were not equal"); - emit log_named_bytes(" Left call return data", returnDataA); - emit log_named_bytes(" Right call revert data", returnDataB); - revert("assertion failed"); - } - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdChains.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdChains.sol deleted file mode 100644 index 3bc5f43af1..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdChains.sol +++ /dev/null @@ -1,287 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; -pragma experimental ABIEncoderV2; - -import {VmSafe} from "./Vm.sol"; - -/** - * StdChains provides information about EVM compatible chains that can be used in scripts/tests. - * For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are - * identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of - * the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the - * alias used in this contract, which can be found as the first argument to the - * `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. - * - * There are two main ways to use this contract: - * 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or - * `setChain(string memory chainAlias, Chain memory chain)` - * 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. - * - * The first time either of those are used, chains are initialized with the default set of RPC URLs. - * This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in - * `defaultRpcUrls`. - * - * The `setChain` function is straightforward, and it simply saves off the given chain data. - * - * The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say - * we want to retrieve the RPC URL for `mainnet`: - * - If you have specified data with `setChain`, it will return that. - * - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it - * is valid (e.g. a URL is specified, or an environment variable is given and exists). - * - If neither of the above conditions is met, the default data is returned. - * - * Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults. - */ -abstract contract StdChains { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - bool private stdChainsInitialized; - - struct ChainData { - string name; - uint256 chainId; - string rpcUrl; - } - - struct Chain { - // The chain name. - string name; - // The chain's Chain ID. - uint256 chainId; - // The chain's alias. (i.e. what gets specified in `foundry.toml`). - string chainAlias; - // A default RPC endpoint for this chain. - // NOTE: This default RPC URL is included for convenience to facilitate quick tests and - // experimentation. Do not use this RPC URL for production test suites, CI, or other heavy - // usage as you will be throttled and this is a disservice to others who need this endpoint. - string rpcUrl; - } - - // Maps from the chain's alias (matching the alias in the `foundry.toml` file) to chain data. - mapping(string => Chain) private chains; - // Maps from the chain's alias to it's default RPC URL. - mapping(string => string) private defaultRpcUrls; - // Maps from a chain ID to it's alias. - mapping(uint256 => string) private idToAlias; - - bool private fallbackToDefaultRpcUrls = true; - - // The RPC URL will be fetched from config or defaultRpcUrls if possible. - function getChain(string memory chainAlias) internal virtual returns (Chain memory chain) { - require(bytes(chainAlias).length != 0, "StdChains getChain(string): Chain alias cannot be the empty string."); - - initializeStdChains(); - chain = chains[chainAlias]; - require( - chain.chainId != 0, - string(abi.encodePacked("StdChains getChain(string): Chain with alias \"", chainAlias, "\" not found.")) - ); - - chain = getChainWithUpdatedRpcUrl(chainAlias, chain); - } - - function getChain(uint256 chainId) internal virtual returns (Chain memory chain) { - require(chainId != 0, "StdChains getChain(uint256): Chain ID cannot be 0."); - initializeStdChains(); - string memory chainAlias = idToAlias[chainId]; - - chain = chains[chainAlias]; - - require( - chain.chainId != 0, - string(abi.encodePacked("StdChains getChain(uint256): Chain with ID ", vm.toString(chainId), " not found.")) - ); - - chain = getChainWithUpdatedRpcUrl(chainAlias, chain); - } - - // set chain info, with priority to argument's rpcUrl field. - function setChain(string memory chainAlias, ChainData memory chain) internal virtual { - require( - bytes(chainAlias).length != 0, - "StdChains setChain(string,ChainData): Chain alias cannot be the empty string." - ); - - require(chain.chainId != 0, "StdChains setChain(string,ChainData): Chain ID cannot be 0."); - - initializeStdChains(); - string memory foundAlias = idToAlias[chain.chainId]; - - require( - bytes(foundAlias).length == 0 || keccak256(bytes(foundAlias)) == keccak256(bytes(chainAlias)), - string( - abi.encodePacked( - "StdChains setChain(string,ChainData): Chain ID ", - vm.toString(chain.chainId), - " already used by \"", - foundAlias, - "\"." - ) - ) - ); - - uint256 oldChainId = chains[chainAlias].chainId; - delete idToAlias[oldChainId]; - - chains[chainAlias] = - Chain({name: chain.name, chainId: chain.chainId, chainAlias: chainAlias, rpcUrl: chain.rpcUrl}); - idToAlias[chain.chainId] = chainAlias; - } - - // set chain info, with priority to argument's rpcUrl field. - function setChain(string memory chainAlias, Chain memory chain) internal virtual { - setChain(chainAlias, ChainData({name: chain.name, chainId: chain.chainId, rpcUrl: chain.rpcUrl})); - } - - function _toUpper(string memory str) private pure returns (string memory) { - bytes memory strb = bytes(str); - bytes memory copy = new bytes(strb.length); - for (uint256 i = 0; i < strb.length; i++) { - bytes1 b = strb[i]; - if (b >= 0x61 && b <= 0x7A) { - copy[i] = bytes1(uint8(b) - 32); - } else { - copy[i] = b; - } - } - return string(copy); - } - - // lookup rpcUrl, in descending order of priority: - // current -> config (foundry.toml) -> environment variable -> default - function getChainWithUpdatedRpcUrl(string memory chainAlias, Chain memory chain) - private - view - returns (Chain memory) - { - if (bytes(chain.rpcUrl).length == 0) { - try vm.rpcUrl(chainAlias) returns (string memory configRpcUrl) { - chain.rpcUrl = configRpcUrl; - } catch (bytes memory err) { - string memory envName = string(abi.encodePacked(_toUpper(chainAlias), "_RPC_URL")); - if (fallbackToDefaultRpcUrls) { - chain.rpcUrl = vm.envOr(envName, defaultRpcUrls[chainAlias]); - } else { - chain.rpcUrl = vm.envString(envName); - } - // Distinguish 'not found' from 'cannot read' - // The upstream error thrown by forge for failing cheats changed so we check both the old and new versions - bytes memory oldNotFoundError = - abi.encodeWithSignature("CheatCodeError", string(abi.encodePacked("invalid rpc url ", chainAlias))); - bytes memory newNotFoundError = abi.encodeWithSignature( - "CheatcodeError(string)", string(abi.encodePacked("invalid rpc url: ", chainAlias)) - ); - bytes32 errHash = keccak256(err); - if ( - (errHash != keccak256(oldNotFoundError) && errHash != keccak256(newNotFoundError)) - || bytes(chain.rpcUrl).length == 0 - ) { - /// @solidity memory-safe-assembly - assembly { - revert(add(32, err), mload(err)) - } - } - } - } - return chain; - } - - function setFallbackToDefaultRpcUrls(bool useDefault) internal { - fallbackToDefaultRpcUrls = useDefault; - } - - function initializeStdChains() private { - if (stdChainsInitialized) return; - - stdChainsInitialized = true; - - // If adding an RPC here, make sure to test the default RPC URL in `test_Rpcs` in `StdChains.t.sol` - setChainWithDefaultRpcUrl("anvil", ChainData("Anvil", 31337, "http://127.0.0.1:8545")); - setChainWithDefaultRpcUrl("mainnet", ChainData("Mainnet", 1, "https://eth.llamarpc.com")); - setChainWithDefaultRpcUrl( - "sepolia", ChainData("Sepolia", 11155111, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") - ); - setChainWithDefaultRpcUrl("holesky", ChainData("Holesky", 17000, "https://rpc.holesky.ethpandaops.io")); - setChainWithDefaultRpcUrl("hoodi", ChainData("Hoodi", 560048, "https://rpc.hoodi.ethpandaops.io")); - setChainWithDefaultRpcUrl("optimism", ChainData("Optimism", 10, "https://mainnet.optimism.io")); - setChainWithDefaultRpcUrl( - "optimism_sepolia", ChainData("Optimism Sepolia", 11155420, "https://sepolia.optimism.io") - ); - setChainWithDefaultRpcUrl("arbitrum_one", ChainData("Arbitrum One", 42161, "https://arb1.arbitrum.io/rpc")); - setChainWithDefaultRpcUrl( - "arbitrum_one_sepolia", ChainData("Arbitrum One Sepolia", 421614, "https://sepolia-rollup.arbitrum.io/rpc") - ); - setChainWithDefaultRpcUrl("arbitrum_nova", ChainData("Arbitrum Nova", 42170, "https://nova.arbitrum.io/rpc")); - setChainWithDefaultRpcUrl("polygon", ChainData("Polygon", 137, "https://polygon-rpc.com")); - setChainWithDefaultRpcUrl( - "polygon_amoy", ChainData("Polygon Amoy", 80002, "https://rpc-amoy.polygon.technology") - ); - setChainWithDefaultRpcUrl("avalanche", ChainData("Avalanche", 43114, "https://api.avax.network/ext/bc/C/rpc")); - setChainWithDefaultRpcUrl( - "avalanche_fuji", ChainData("Avalanche Fuji", 43113, "https://api.avax-test.network/ext/bc/C/rpc") - ); - setChainWithDefaultRpcUrl( - "bnb_smart_chain", ChainData("BNB Smart Chain", 56, "https://bsc-dataseed1.binance.org") - ); - setChainWithDefaultRpcUrl( - "bnb_smart_chain_testnet", - ChainData("BNB Smart Chain Testnet", 97, "https://rpc.ankr.com/bsc_testnet_chapel") - ); - setChainWithDefaultRpcUrl("gnosis_chain", ChainData("Gnosis Chain", 100, "https://rpc.gnosischain.com")); - setChainWithDefaultRpcUrl("moonbeam", ChainData("Moonbeam", 1284, "https://rpc.api.moonbeam.network")); - setChainWithDefaultRpcUrl( - "moonriver", ChainData("Moonriver", 1285, "https://rpc.api.moonriver.moonbeam.network") - ); - setChainWithDefaultRpcUrl("moonbase", ChainData("Moonbase", 1287, "https://rpc.testnet.moonbeam.network")); - setChainWithDefaultRpcUrl("base_sepolia", ChainData("Base Sepolia", 84532, "https://sepolia.base.org")); - setChainWithDefaultRpcUrl("base", ChainData("Base", 8453, "https://mainnet.base.org")); - setChainWithDefaultRpcUrl("blast_sepolia", ChainData("Blast Sepolia", 168587773, "https://sepolia.blast.io")); - setChainWithDefaultRpcUrl("blast", ChainData("Blast", 81457, "https://rpc.blast.io")); - setChainWithDefaultRpcUrl("fantom_opera", ChainData("Fantom Opera", 250, "https://rpc.ankr.com/fantom/")); - setChainWithDefaultRpcUrl( - "fantom_opera_testnet", ChainData("Fantom Opera Testnet", 4002, "https://rpc.ankr.com/fantom_testnet/") - ); - setChainWithDefaultRpcUrl("fraxtal", ChainData("Fraxtal", 252, "https://rpc.frax.com")); - setChainWithDefaultRpcUrl("fraxtal_testnet", ChainData("Fraxtal Testnet", 2522, "https://rpc.testnet.frax.com")); - setChainWithDefaultRpcUrl( - "berachain_bartio_testnet", ChainData("Berachain bArtio Testnet", 80084, "https://bartio.rpc.berachain.com") - ); - setChainWithDefaultRpcUrl("flare", ChainData("Flare", 14, "https://flare-api.flare.network/ext/C/rpc")); - setChainWithDefaultRpcUrl( - "flare_coston2", ChainData("Flare Coston2", 114, "https://coston2-api.flare.network/ext/C/rpc") - ); - - setChainWithDefaultRpcUrl("mode", ChainData("Mode", 34443, "https://mode.drpc.org")); - setChainWithDefaultRpcUrl("mode_sepolia", ChainData("Mode Sepolia", 919, "https://sepolia.mode.network")); - - setChainWithDefaultRpcUrl("zora", ChainData("Zora", 7777777, "https://zora.drpc.org")); - setChainWithDefaultRpcUrl( - "zora_sepolia", ChainData("Zora Sepolia", 999999999, "https://sepolia.rpc.zora.energy") - ); - - setChainWithDefaultRpcUrl("race", ChainData("Race", 6805, "https://racemainnet.io")); - setChainWithDefaultRpcUrl("race_sepolia", ChainData("Race Sepolia", 6806, "https://racemainnet.io")); - - setChainWithDefaultRpcUrl("metal", ChainData("Metal", 1750, "https://metall2.drpc.org")); - setChainWithDefaultRpcUrl("metal_sepolia", ChainData("Metal Sepolia", 1740, "https://testnet.rpc.metall2.com")); - - setChainWithDefaultRpcUrl("binary", ChainData("Binary", 624, "https://rpc.zero.thebinaryholdings.com")); - setChainWithDefaultRpcUrl( - "binary_sepolia", ChainData("Binary Sepolia", 625, "https://rpc.zero.thebinaryholdings.com") - ); - - setChainWithDefaultRpcUrl("orderly", ChainData("Orderly", 291, "https://rpc.orderly.network")); - setChainWithDefaultRpcUrl( - "orderly_sepolia", ChainData("Orderly Sepolia", 4460, "https://testnet-rpc.orderly.org") - ); - } - - // set chain info, with priority to chainAlias' rpc url in foundry.toml - function setChainWithDefaultRpcUrl(string memory chainAlias, ChainData memory chain) private { - string memory rpcUrl = chain.rpcUrl; - defaultRpcUrls[chainAlias] = rpcUrl; - chain.rpcUrl = ""; - setChain(chainAlias, chain); - chain.rpcUrl = rpcUrl; // restore argument - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdCheats.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdCheats.sol deleted file mode 100644 index 9f360dec21..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdCheats.sol +++ /dev/null @@ -1,829 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {StdStorage, stdStorage} from "./StdStorage.sol"; -import {console2} from "./console2.sol"; -import {Vm} from "./Vm.sol"; - -abstract contract StdCheatsSafe { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - uint256 private constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - bool private gasMeteringOff; - - // Data structures to parse Transaction objects from the broadcast artifact - // that conform to EIP1559. The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct RawTx1559 { - string[] arguments; - address contractAddress; - string contractName; - // json value name = function - string functionSig; - bytes32 hash; - // json value name = tx - RawTx1559Detail txDetail; - // json value name = type - string opcode; - } - - struct RawTx1559Detail { - AccessList[] accessList; - bytes data; - address from; - bytes gas; - bytes nonce; - address to; - bytes txType; - bytes value; - } - - struct Tx1559 { - string[] arguments; - address contractAddress; - string contractName; - string functionSig; - bytes32 hash; - Tx1559Detail txDetail; - string opcode; - } - - struct Tx1559Detail { - AccessList[] accessList; - bytes data; - address from; - uint256 gas; - uint256 nonce; - address to; - uint256 txType; - uint256 value; - } - - // Data structures to parse Transaction objects from the broadcast artifact - // that DO NOT conform to EIP1559. The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct TxLegacy { - string[] arguments; - address contractAddress; - string contractName; - string functionSig; - string hash; - string opcode; - TxDetailLegacy transaction; - } - - struct TxDetailLegacy { - AccessList[] accessList; - uint256 chainId; - bytes data; - address from; - uint256 gas; - uint256 gasPrice; - bytes32 hash; - uint256 nonce; - bytes1 opcode; - bytes32 r; - bytes32 s; - uint256 txType; - address to; - uint8 v; - uint256 value; - } - - struct AccessList { - address accessAddress; - bytes32[] storageKeys; - } - - // Data structures to parse Receipt objects from the broadcast artifact. - // The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct RawReceipt { - bytes32 blockHash; - bytes blockNumber; - address contractAddress; - bytes cumulativeGasUsed; - bytes effectiveGasPrice; - address from; - bytes gasUsed; - RawReceiptLog[] logs; - bytes logsBloom; - bytes status; - address to; - bytes32 transactionHash; - bytes transactionIndex; - } - - struct Receipt { - bytes32 blockHash; - uint256 blockNumber; - address contractAddress; - uint256 cumulativeGasUsed; - uint256 effectiveGasPrice; - address from; - uint256 gasUsed; - ReceiptLog[] logs; - bytes logsBloom; - uint256 status; - address to; - bytes32 transactionHash; - uint256 transactionIndex; - } - - // Data structures to parse the entire broadcast artifact, assuming the - // transactions conform to EIP1559. - - struct EIP1559ScriptArtifact { - string[] libraries; - string path; - string[] pending; - Receipt[] receipts; - uint256 timestamp; - Tx1559[] transactions; - TxReturn[] txReturns; - } - - struct RawEIP1559ScriptArtifact { - string[] libraries; - string path; - string[] pending; - RawReceipt[] receipts; - TxReturn[] txReturns; - uint256 timestamp; - RawTx1559[] transactions; - } - - struct RawReceiptLog { - // json value = address - address logAddress; - bytes32 blockHash; - bytes blockNumber; - bytes data; - bytes logIndex; - bool removed; - bytes32[] topics; - bytes32 transactionHash; - bytes transactionIndex; - bytes transactionLogIndex; - } - - struct ReceiptLog { - // json value = address - address logAddress; - bytes32 blockHash; - uint256 blockNumber; - bytes data; - uint256 logIndex; - bytes32[] topics; - uint256 transactionIndex; - uint256 transactionLogIndex; - bool removed; - } - - struct TxReturn { - string internalType; - string value; - } - - struct Account { - address addr; - uint256 key; - } - - enum AddressType { - Payable, - NonPayable, - ZeroAddress, - Precompile, - ForgeAddress - } - - // Checks that `addr` is not blacklisted by token contracts that have a blacklist. - function assumeNotBlacklisted(address token, address addr) internal view virtual { - // Nothing to check if `token` is not a contract. - uint256 tokenCodeSize; - assembly { - tokenCodeSize := extcodesize(token) - } - require(tokenCodeSize > 0, "StdCheats assumeNotBlacklisted(address,address): Token address is not a contract."); - - bool success; - bytes memory returnData; - - // 4-byte selector for `isBlacklisted(address)`, used by USDC. - (success, returnData) = token.staticcall(abi.encodeWithSelector(0xfe575a87, addr)); - vm.assume(!success || abi.decode(returnData, (bool)) == false); - - // 4-byte selector for `isBlackListed(address)`, used by USDT. - (success, returnData) = token.staticcall(abi.encodeWithSelector(0xe47d6060, addr)); - vm.assume(!success || abi.decode(returnData, (bool)) == false); - } - - // Checks that `addr` is not blacklisted by token contracts that have a blacklist. - // This is identical to `assumeNotBlacklisted(address,address)` but with a different name, for - // backwards compatibility, since this name was used in the original PR which already has - // a release. This function can be removed in a future release once we want a breaking change. - function assumeNoBlacklisted(address token, address addr) internal view virtual { - assumeNotBlacklisted(token, addr); - } - - function assumeAddressIsNot(address addr, AddressType addressType) internal virtual { - if (addressType == AddressType.Payable) { - assumeNotPayable(addr); - } else if (addressType == AddressType.NonPayable) { - assumePayable(addr); - } else if (addressType == AddressType.ZeroAddress) { - assumeNotZeroAddress(addr); - } else if (addressType == AddressType.Precompile) { - assumeNotPrecompile(addr); - } else if (addressType == AddressType.ForgeAddress) { - assumeNotForgeAddress(addr); - } - } - - function assumeAddressIsNot(address addr, AddressType addressType1, AddressType addressType2) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - } - - function assumeAddressIsNot( - address addr, - AddressType addressType1, - AddressType addressType2, - AddressType addressType3 - ) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - assumeAddressIsNot(addr, addressType3); - } - - function assumeAddressIsNot( - address addr, - AddressType addressType1, - AddressType addressType2, - AddressType addressType3, - AddressType addressType4 - ) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - assumeAddressIsNot(addr, addressType3); - assumeAddressIsNot(addr, addressType4); - } - - // This function checks whether an address, `addr`, is payable. It works by sending 1 wei to - // `addr` and checking the `success` return value. - // NOTE: This function may result in state changes depending on the fallback/receive logic - // implemented by `addr`, which should be taken into account when this function is used. - function _isPayable(address addr) private returns (bool) { - require( - addr.balance < UINT256_MAX, - "StdCheats _isPayable(address): Balance equals max uint256, so it cannot receive any more funds" - ); - uint256 origBalanceTest = address(this).balance; - uint256 origBalanceAddr = address(addr).balance; - - vm.deal(address(this), 1); - (bool success,) = payable(addr).call{value: 1}(""); - - // reset balances - vm.deal(address(this), origBalanceTest); - vm.deal(addr, origBalanceAddr); - - return success; - } - - // NOTE: This function may result in state changes depending on the fallback/receive logic - // implemented by `addr`, which should be taken into account when this function is used. See the - // `_isPayable` method for more information. - function assumePayable(address addr) internal virtual { - vm.assume(_isPayable(addr)); - } - - function assumeNotPayable(address addr) internal virtual { - vm.assume(!_isPayable(addr)); - } - - function assumeNotZeroAddress(address addr) internal pure virtual { - vm.assume(addr != address(0)); - } - - function assumeNotPrecompile(address addr) internal pure virtual { - assumeNotPrecompile(addr, _pureChainId()); - } - - function assumeNotPrecompile(address addr, uint256 chainId) internal pure virtual { - // Note: For some chains like Optimism these are technically predeploys (i.e. bytecode placed at a specific - // address), but the same rationale for excluding them applies so we include those too. - - // These are reserved by Ethereum and may be on all EVM-compatible chains. - vm.assume(addr < address(0x1) || addr > address(0xff)); - - // forgefmt: disable-start - if (chainId == 10 || chainId == 420) { - // https://github.com/ethereum-optimism/optimism/blob/eaa371a0184b56b7ca6d9eb9cb0a2b78b2ccd864/op-bindings/predeploys/addresses.go#L6-L21 - vm.assume(addr < address(0x4200000000000000000000000000000000000000) || addr > address(0x4200000000000000000000000000000000000800)); - } else if (chainId == 42161 || chainId == 421613) { - // https://developer.arbitrum.io/useful-addresses#arbitrum-precompiles-l2-same-on-all-arb-chains - vm.assume(addr < address(0x0000000000000000000000000000000000000064) || addr > address(0x0000000000000000000000000000000000000068)); - } else if (chainId == 43114 || chainId == 43113) { - // https://github.com/ava-labs/subnet-evm/blob/47c03fd007ecaa6de2c52ea081596e0a88401f58/precompile/params.go#L18-L59 - vm.assume(addr < address(0x0100000000000000000000000000000000000000) || addr > address(0x01000000000000000000000000000000000000ff)); - vm.assume(addr < address(0x0200000000000000000000000000000000000000) || addr > address(0x02000000000000000000000000000000000000FF)); - vm.assume(addr < address(0x0300000000000000000000000000000000000000) || addr > address(0x03000000000000000000000000000000000000Ff)); - } - // forgefmt: disable-end - } - - function assumeNotForgeAddress(address addr) internal pure virtual { - // vm, console, and Create2Deployer addresses - vm.assume( - addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67 - && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C - ); - } - - function assumeUnusedAddress(address addr) internal view virtual { - uint256 size; - assembly { - size := extcodesize(addr) - } - vm.assume(size == 0); - - assumeNotPrecompile(addr); - assumeNotZeroAddress(addr); - assumeNotForgeAddress(addr); - } - - function readEIP1559ScriptArtifact(string memory path) - internal - view - virtual - returns (EIP1559ScriptArtifact memory) - { - string memory data = vm.readFile(path); - bytes memory parsedData = vm.parseJson(data); - RawEIP1559ScriptArtifact memory rawArtifact = abi.decode(parsedData, (RawEIP1559ScriptArtifact)); - EIP1559ScriptArtifact memory artifact; - artifact.libraries = rawArtifact.libraries; - artifact.path = rawArtifact.path; - artifact.timestamp = rawArtifact.timestamp; - artifact.pending = rawArtifact.pending; - artifact.txReturns = rawArtifact.txReturns; - artifact.receipts = rawToConvertedReceipts(rawArtifact.receipts); - artifact.transactions = rawToConvertedEIPTx1559s(rawArtifact.transactions); - return artifact; - } - - function rawToConvertedEIPTx1559s(RawTx1559[] memory rawTxs) internal pure virtual returns (Tx1559[] memory) { - Tx1559[] memory txs = new Tx1559[](rawTxs.length); - for (uint256 i; i < rawTxs.length; i++) { - txs[i] = rawToConvertedEIPTx1559(rawTxs[i]); - } - return txs; - } - - function rawToConvertedEIPTx1559(RawTx1559 memory rawTx) internal pure virtual returns (Tx1559 memory) { - Tx1559 memory transaction; - transaction.arguments = rawTx.arguments; - transaction.contractName = rawTx.contractName; - transaction.functionSig = rawTx.functionSig; - transaction.hash = rawTx.hash; - transaction.txDetail = rawToConvertedEIP1559Detail(rawTx.txDetail); - transaction.opcode = rawTx.opcode; - return transaction; - } - - function rawToConvertedEIP1559Detail(RawTx1559Detail memory rawDetail) - internal - pure - virtual - returns (Tx1559Detail memory) - { - Tx1559Detail memory txDetail; - txDetail.data = rawDetail.data; - txDetail.from = rawDetail.from; - txDetail.to = rawDetail.to; - txDetail.nonce = _bytesToUint(rawDetail.nonce); - txDetail.txType = _bytesToUint(rawDetail.txType); - txDetail.value = _bytesToUint(rawDetail.value); - txDetail.gas = _bytesToUint(rawDetail.gas); - txDetail.accessList = rawDetail.accessList; - return txDetail; - } - - function readTx1559s(string memory path) internal view virtual returns (Tx1559[] memory) { - string memory deployData = vm.readFile(path); - bytes memory parsedDeployData = vm.parseJson(deployData, ".transactions"); - RawTx1559[] memory rawTxs = abi.decode(parsedDeployData, (RawTx1559[])); - return rawToConvertedEIPTx1559s(rawTxs); - } - - function readTx1559(string memory path, uint256 index) internal view virtual returns (Tx1559 memory) { - string memory deployData = vm.readFile(path); - string memory key = string(abi.encodePacked(".transactions[", vm.toString(index), "]")); - bytes memory parsedDeployData = vm.parseJson(deployData, key); - RawTx1559 memory rawTx = abi.decode(parsedDeployData, (RawTx1559)); - return rawToConvertedEIPTx1559(rawTx); - } - - // Analogous to readTransactions, but for receipts. - function readReceipts(string memory path) internal view virtual returns (Receipt[] memory) { - string memory deployData = vm.readFile(path); - bytes memory parsedDeployData = vm.parseJson(deployData, ".receipts"); - RawReceipt[] memory rawReceipts = abi.decode(parsedDeployData, (RawReceipt[])); - return rawToConvertedReceipts(rawReceipts); - } - - function readReceipt(string memory path, uint256 index) internal view virtual returns (Receipt memory) { - string memory deployData = vm.readFile(path); - string memory key = string(abi.encodePacked(".receipts[", vm.toString(index), "]")); - bytes memory parsedDeployData = vm.parseJson(deployData, key); - RawReceipt memory rawReceipt = abi.decode(parsedDeployData, (RawReceipt)); - return rawToConvertedReceipt(rawReceipt); - } - - function rawToConvertedReceipts(RawReceipt[] memory rawReceipts) internal pure virtual returns (Receipt[] memory) { - Receipt[] memory receipts = new Receipt[](rawReceipts.length); - for (uint256 i; i < rawReceipts.length; i++) { - receipts[i] = rawToConvertedReceipt(rawReceipts[i]); - } - return receipts; - } - - function rawToConvertedReceipt(RawReceipt memory rawReceipt) internal pure virtual returns (Receipt memory) { - Receipt memory receipt; - receipt.blockHash = rawReceipt.blockHash; - receipt.to = rawReceipt.to; - receipt.from = rawReceipt.from; - receipt.contractAddress = rawReceipt.contractAddress; - receipt.effectiveGasPrice = _bytesToUint(rawReceipt.effectiveGasPrice); - receipt.cumulativeGasUsed = _bytesToUint(rawReceipt.cumulativeGasUsed); - receipt.gasUsed = _bytesToUint(rawReceipt.gasUsed); - receipt.status = _bytesToUint(rawReceipt.status); - receipt.transactionIndex = _bytesToUint(rawReceipt.transactionIndex); - receipt.blockNumber = _bytesToUint(rawReceipt.blockNumber); - receipt.logs = rawToConvertedReceiptLogs(rawReceipt.logs); - receipt.logsBloom = rawReceipt.logsBloom; - receipt.transactionHash = rawReceipt.transactionHash; - return receipt; - } - - function rawToConvertedReceiptLogs(RawReceiptLog[] memory rawLogs) - internal - pure - virtual - returns (ReceiptLog[] memory) - { - ReceiptLog[] memory logs = new ReceiptLog[](rawLogs.length); - for (uint256 i; i < rawLogs.length; i++) { - logs[i].logAddress = rawLogs[i].logAddress; - logs[i].blockHash = rawLogs[i].blockHash; - logs[i].blockNumber = _bytesToUint(rawLogs[i].blockNumber); - logs[i].data = rawLogs[i].data; - logs[i].logIndex = _bytesToUint(rawLogs[i].logIndex); - logs[i].topics = rawLogs[i].topics; - logs[i].transactionIndex = _bytesToUint(rawLogs[i].transactionIndex); - logs[i].transactionLogIndex = _bytesToUint(rawLogs[i].transactionLogIndex); - logs[i].removed = rawLogs[i].removed; - } - return logs; - } - - // Deploy a contract by fetching the contract bytecode from - // the artifacts directory - // e.g. `deployCode(code, abi.encode(arg1,arg2,arg3))` - function deployCode(string memory what, bytes memory args) internal virtual returns (address addr) { - bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); - /// @solidity memory-safe-assembly - assembly { - addr := create(0, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,bytes): Deployment failed."); - } - - function deployCode(string memory what) internal virtual returns (address addr) { - bytes memory bytecode = vm.getCode(what); - /// @solidity memory-safe-assembly - assembly { - addr := create(0, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string): Deployment failed."); - } - - /// @dev deploy contract with value on construction - function deployCode(string memory what, bytes memory args, uint256 val) internal virtual returns (address addr) { - bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); - /// @solidity memory-safe-assembly - assembly { - addr := create(val, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,bytes,uint256): Deployment failed."); - } - - function deployCode(string memory what, uint256 val) internal virtual returns (address addr) { - bytes memory bytecode = vm.getCode(what); - /// @solidity memory-safe-assembly - assembly { - addr := create(val, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,uint256): Deployment failed."); - } - - // creates a labeled address and the corresponding private key - function makeAddrAndKey(string memory name) internal virtual returns (address addr, uint256 privateKey) { - privateKey = uint256(keccak256(abi.encodePacked(name))); - addr = vm.addr(privateKey); - vm.label(addr, name); - } - - // creates a labeled address - function makeAddr(string memory name) internal virtual returns (address addr) { - (addr,) = makeAddrAndKey(name); - } - - // Destroys an account immediately, sending the balance to beneficiary. - // Destroying means: balance will be zero, code will be empty, and nonce will be 0 - // This is similar to selfdestruct but not identical: selfdestruct destroys code and nonce - // only after tx ends, this will run immediately. - function destroyAccount(address who, address beneficiary) internal virtual { - uint256 currBalance = who.balance; - vm.etch(who, abi.encode()); - vm.deal(who, 0); - vm.resetNonce(who); - - uint256 beneficiaryBalance = beneficiary.balance; - vm.deal(beneficiary, currBalance + beneficiaryBalance); - } - - // creates a struct containing both a labeled address and the corresponding private key - function makeAccount(string memory name) internal virtual returns (Account memory account) { - (account.addr, account.key) = makeAddrAndKey(name); - } - - function deriveRememberKey(string memory mnemonic, uint32 index) - internal - virtual - returns (address who, uint256 privateKey) - { - privateKey = vm.deriveKey(mnemonic, index); - who = vm.rememberKey(privateKey); - } - - function _bytesToUint(bytes memory b) private pure returns (uint256) { - require(b.length <= 32, "StdCheats _bytesToUint(bytes): Bytes length exceeds 32."); - return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); - } - - function isFork() internal view virtual returns (bool status) { - try vm.activeFork() { - status = true; - } catch (bytes memory) {} - } - - modifier skipWhenForking() { - if (!isFork()) { - _; - } - } - - modifier skipWhenNotForking() { - if (isFork()) { - _; - } - } - - modifier noGasMetering() { - vm.pauseGasMetering(); - // To prevent turning gas monitoring back on with nested functions that use this modifier, - // we check if gasMetering started in the off position. If it did, we don't want to turn - // it back on until we exit the top level function that used the modifier - // - // i.e. funcA() noGasMetering { funcB() }, where funcB has noGasMetering as well. - // funcA will have `gasStartedOff` as false, funcB will have it as true, - // so we only turn metering back on at the end of the funcA - bool gasStartedOff = gasMeteringOff; - gasMeteringOff = true; - - _; - - // if gas metering was on when this modifier was called, turn it back on at the end - if (!gasStartedOff) { - gasMeteringOff = false; - vm.resumeGasMetering(); - } - } - - // We use this complex approach of `_viewChainId` and `_pureChainId` to ensure there are no - // compiler warnings when accessing chain ID in any solidity version supported by forge-std. We - // can't simply access the chain ID in a normal view or pure function because the solc View Pure - // Checker changed `chainid` from pure to view in 0.8.0. - function _viewChainId() private view returns (uint256 chainId) { - // Assembly required since `block.chainid` was introduced in 0.8.0. - assembly { - chainId := chainid() - } - - address(this); // Silence warnings in older Solc versions. - } - - function _pureChainId() private pure returns (uint256 chainId) { - function() internal view returns (uint256) fnIn = _viewChainId; - function() internal pure returns (uint256) pureChainId; - assembly { - pureChainId := fnIn - } - chainId = pureChainId(); - } -} - -// Wrappers around cheatcodes to avoid footguns -abstract contract StdCheats is StdCheatsSafe { - using stdStorage for StdStorage; - - StdStorage private stdstore; - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; - - // Skip forward or rewind time by the specified number of seconds - function skip(uint256 time) internal virtual { - vm.warp(vm.getBlockTimestamp() + time); - } - - function rewind(uint256 time) internal virtual { - vm.warp(vm.getBlockTimestamp() - time); - } - - // Setup a prank from an address that has some ether - function hoax(address msgSender) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.prank(msgSender); - } - - function hoax(address msgSender, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.prank(msgSender); - } - - function hoax(address msgSender, address origin) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.prank(msgSender, origin); - } - - function hoax(address msgSender, address origin, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.prank(msgSender, origin); - } - - // Start perpetual prank from an address that has some ether - function startHoax(address msgSender) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.startPrank(msgSender); - } - - function startHoax(address msgSender, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.startPrank(msgSender); - } - - // Start perpetual prank from an address that has some ether - // tx.origin is set to the origin parameter - function startHoax(address msgSender, address origin) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.startPrank(msgSender, origin); - } - - function startHoax(address msgSender, address origin, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.startPrank(msgSender, origin); - } - - function changePrank(address msgSender) internal virtual { - console2_log_StdCheats("changePrank is deprecated. Please use vm.startPrank instead."); - vm.stopPrank(); - vm.startPrank(msgSender); - } - - function changePrank(address msgSender, address txOrigin) internal virtual { - vm.stopPrank(); - vm.startPrank(msgSender, txOrigin); - } - - // The same as Vm's `deal` - // Use the alternative signature for ERC20 tokens - function deal(address to, uint256 give) internal virtual { - vm.deal(to, give); - } - - // Set the balance of an account for any ERC20 token - // Use the alternative signature to update `totalSupply` - function deal(address token, address to, uint256 give) internal virtual { - deal(token, to, give, false); - } - - // Set the balance of an account for any ERC1155 token - // Use the alternative signature to update `totalSupply` - function dealERC1155(address token, address to, uint256 id, uint256 give) internal virtual { - dealERC1155(token, to, id, give, false); - } - - function deal(address token, address to, uint256 give, bool adjust) internal virtual { - // get current balance - (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to)); - uint256 prevBal = abi.decode(balData, (uint256)); - - // update balance - stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(give); - - // update total supply - if (adjust) { - (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0x18160ddd)); - uint256 totSup = abi.decode(totSupData, (uint256)); - if (give < prevBal) { - totSup -= (prevBal - give); - } else { - totSup += (give - prevBal); - } - stdstore.target(token).sig(0x18160ddd).checked_write(totSup); - } - } - - function dealERC1155(address token, address to, uint256 id, uint256 give, bool adjust) internal virtual { - // get current balance - (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x00fdd58e, to, id)); - uint256 prevBal = abi.decode(balData, (uint256)); - - // update balance - stdstore.target(token).sig(0x00fdd58e).with_key(to).with_key(id).checked_write(give); - - // update total supply - if (adjust) { - (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0xbd85b039, id)); - require( - totSupData.length != 0, - "StdCheats deal(address,address,uint,uint,bool): target contract is not ERC1155Supply." - ); - uint256 totSup = abi.decode(totSupData, (uint256)); - if (give < prevBal) { - totSup -= (prevBal - give); - } else { - totSup += (give - prevBal); - } - stdstore.target(token).sig(0xbd85b039).with_key(id).checked_write(totSup); - } - } - - function dealERC721(address token, address to, uint256 id) internal virtual { - // check if token id is already minted and the actual owner. - (bool successMinted, bytes memory ownerData) = token.staticcall(abi.encodeWithSelector(0x6352211e, id)); - require(successMinted, "StdCheats deal(address,address,uint,bool): id not minted."); - - // get owner current balance - (, bytes memory fromBalData) = - token.staticcall(abi.encodeWithSelector(0x70a08231, abi.decode(ownerData, (address)))); - uint256 fromPrevBal = abi.decode(fromBalData, (uint256)); - - // get new user current balance - (, bytes memory toBalData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to)); - uint256 toPrevBal = abi.decode(toBalData, (uint256)); - - // update balances - stdstore.target(token).sig(0x70a08231).with_key(abi.decode(ownerData, (address))).checked_write(--fromPrevBal); - stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(++toPrevBal); - - // update owner - stdstore.target(token).sig(0x6352211e).with_key(id).checked_write(to); - } - - function deployCodeTo(string memory what, address where) internal virtual { - deployCodeTo(what, "", 0, where); - } - - function deployCodeTo(string memory what, bytes memory args, address where) internal virtual { - deployCodeTo(what, args, 0, where); - } - - function deployCodeTo(string memory what, bytes memory args, uint256 value, address where) internal virtual { - bytes memory creationCode = vm.getCode(what); - vm.etch(where, abi.encodePacked(creationCode, args)); - (bool success, bytes memory runtimeBytecode) = where.call{value: value}(""); - require(success, "StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode."); - vm.etch(where, runtimeBytecode); - } - - // Used to prevent the compilation of console, which shortens the compilation time when console is not used elsewhere. - function console2_log_StdCheats(string memory p0) private view { - (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string)", p0)); - status; - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdConfig.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdConfig.sol deleted file mode 100644 index 506ac34a58..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdConfig.sol +++ /dev/null @@ -1,612 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.13; - -import {VmSafe} from "./Vm.sol"; -import {Variable, Type, TypeKind, LibVariable} from "./LibVariable.sol"; - -/// @notice A contract that parses a toml configuration file and load its -/// variables into storage, automatically casting them, on deployment. -/// -/// @dev This contract assumes a toml structure where top-level keys -/// represent chain ids or aliases. Under each chain key, variables are -/// organized by type in separate sub-tables like `[.]`, where -/// type must be: `bool`, `address`, `bytes32`, `uint`, `ìnt`, `string`, or `bytes`. -/// -/// Supported format: -/// ``` -/// [mainnet] -/// endpoint_url = "${MAINNET_RPC}" -/// -/// [mainnet.bool] -/// is_live = true -/// -/// [mainnet.address] -/// weth = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" -/// whitelisted_admins = [ -/// "${MAINNET_ADMIN}", -/// "0x00000000000000000000000000000000deadbeef", -/// "0x000000000000000000000000000000c0ffeebabe" -/// ] -/// -/// [mainnet.uint] -/// important_number = 123 -/// ``` -contract StdConfig { - using LibVariable for Type; - using LibVariable for TypeKind; - - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - /// @dev Types: `bool`, `address`, `bytes32`, `uint`, `ìnt`, `string`, `bytes`. - uint8 private constant NUM_TYPES = 7; - - // -- ERRORS --------------------------------------------------------------- - - error AlreadyInitialized(string key); - error InvalidChainKey(string aliasOrId); - error ChainNotInitialized(uint256 chainId); - error UnableToParseVariable(string key); - error WriteToFileInForbiddenCtxt(); - - // -- STORAGE (CACHE FROM CONFIG FILE) ------------------------------------ - - /// @dev Path to the loaded TOML configuration file. - string private _filePath; - - /// @dev List of top-level keys found in the TOML file, assumed to be chain names/aliases. - string[] private _chainKeys; - - /// @dev Storage for the configured RPC URL for each chain. - mapping(uint256 => string) private _rpcOf; - - /// @dev Storage for values, organized by chain ID and variable key. - mapping(uint256 => mapping(string => bytes)) private _dataOf; - - /// @dev Type cache for runtime checking when casting. - mapping(uint256 => mapping(string => Type)) private _typeOf; - - /// @dev When enabled, `set` will always write updates back to the configuration file. - /// Can only be enabled in a scripting context to prevent file corruption from - /// concurrent I/O access, as tests run in parallel. - bool private _writeToFile; - - // -- CONSTRUCTOR ---------------------------------------------------------- - - /// @notice Reads the TOML file and iterates through each top-level key, which is - /// assumed to be a chain name or ID. For each chain, it caches its RPC - /// endpoint and all variables defined in typed sub-tables like `[.]`, - /// where type must be: `bool`, `address`, `uint`, `bytes32`, `string`, or `bytes`. - /// - /// The constructor attempts to parse each variable first as a single value, - /// and if that fails, as an array of that type. If a variable cannot be - /// parsed as either, the constructor will revert with an error. - /// - /// @param configFilePath: The local path to the TOML configuration file. - /// @param writeToFile: Whether to write updates back to the TOML file. Only for scripts. - constructor(string memory configFilePath, bool writeToFile) { - if (writeToFile && !vm.isContext(VmSafe.ForgeContext.ScriptGroup)) { - revert WriteToFileInForbiddenCtxt(); - } - - _filePath = configFilePath; - _writeToFile = writeToFile; - string memory content = vm.resolveEnv(vm.readFile(configFilePath)); - string[] memory chain_keys = vm.parseTomlKeys(content, "$"); - - // Cache the entire configuration to storage - for (uint256 i = 0; i < chain_keys.length; i++) { - string memory chain_key = chain_keys[i]; - // Ignore top-level keys that are not tables - if (vm.parseTomlKeys(content, string.concat("$.", chain_key)).length == 0) { - continue; - } - uint256 chainId = resolveChainId(chain_key); - _chainKeys.push(chain_key); - - // Cache the configure rpc endpoint for that chain. - // Falls back to `[rpc_endpoints]`. Panics if no rpc endpoint is configured. - try vm.parseTomlString(content, string.concat("$.", chain_key, ".endpoint_url")) returns (string memory url) - { - _rpcOf[chainId] = vm.resolveEnv(url); - } catch { - _rpcOf[chainId] = vm.resolveEnv(vm.rpcUrl(chain_key)); - } - - // Iterate through all the available `TypeKind`s (except `None`) to create the sub-section paths - for (uint8 t = 1; t <= NUM_TYPES; t++) { - TypeKind ty = TypeKind(t); - string memory typePath = string.concat("$.", chain_key, ".", ty.toTomlKey()); - - try vm.parseTomlKeys(content, typePath) returns (string[] memory keys) { - for (uint256 j = 0; j < keys.length; j++) { - string memory key = keys[j]; - if (_typeOf[chainId][key].kind == TypeKind.None) { - _loadAndCacheValue(content, string.concat(typePath, ".", key), chainId, key, ty); - } else { - revert AlreadyInitialized(key); - } - } - } catch {} // Section does not exist, ignore. - } - } - } - - function _loadAndCacheValue( - string memory content, - string memory path, - uint256 chainId, - string memory key, - TypeKind ty - ) private { - bool success = false; - if (ty == TypeKind.Bool) { - try vm.parseTomlBool(content, path) returns (bool val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Bool, false); - success = true; - } catch { - try vm.parseTomlBoolArray(content, path) returns (bool[] memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Bool, true); - success = true; - } catch {} - } - } else if (ty == TypeKind.Address) { - try vm.parseTomlAddress(content, path) returns (address val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Address, false); - success = true; - } catch { - try vm.parseTomlAddressArray(content, path) returns (address[] memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Address, true); - success = true; - } catch {} - } - } else if (ty == TypeKind.Bytes32) { - try vm.parseTomlBytes32(content, path) returns (bytes32 val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Bytes32, false); - success = true; - } catch { - try vm.parseTomlBytes32Array(content, path) returns (bytes32[] memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Bytes32, true); - success = true; - } catch {} - } - } else if (ty == TypeKind.Uint256) { - try vm.parseTomlUint(content, path) returns (uint256 val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Uint256, false); - success = true; - } catch { - try vm.parseTomlUintArray(content, path) returns (uint256[] memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Uint256, true); - success = true; - } catch {} - } - } else if (ty == TypeKind.Int256) { - try vm.parseTomlInt(content, path) returns (int256 val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Int256, false); - success = true; - } catch { - try vm.parseTomlIntArray(content, path) returns (int256[] memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Int256, true); - success = true; - } catch {} - } - } else if (ty == TypeKind.Bytes) { - try vm.parseTomlBytes(content, path) returns (bytes memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Bytes, false); - success = true; - } catch { - try vm.parseTomlBytesArray(content, path) returns (bytes[] memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.Bytes, true); - success = true; - } catch {} - } - } else if (ty == TypeKind.String) { - try vm.parseTomlString(content, path) returns (string memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.String, false); - success = true; - } catch { - try vm.parseTomlStringArray(content, path) returns (string[] memory val) { - _dataOf[chainId][key] = abi.encode(val); - _typeOf[chainId][key] = Type(TypeKind.String, true); - success = true; - } catch {} - } - } - - if (!success) { - revert UnableToParseVariable(key); - } - } - - // -- HELPER FUNCTIONS ----------------------------------------------------- - - /// @notice Enable or disable automatic writing to the TOML file on `set`. - /// Can only be enabled when scripting. - function writeUpdatesBackToFile(bool enabled) public { - if (enabled && !vm.isContext(VmSafe.ForgeContext.ScriptGroup)) { - revert WriteToFileInForbiddenCtxt(); - } - - _writeToFile = enabled; - } - - /// @notice Resolves a chain alias or a chain id string to its numerical chain id. - /// @param aliasOrId The string representing the chain alias (i.e. "mainnet") or a numerical ID (i.e. "1"). - /// @return The numerical chain ID. - /// @dev It first attempts to parse the input as a number. If that fails, it uses `vm.getChain` to resolve a named alias. - /// Reverts if the alias is not valid or not a number. - function resolveChainId(string memory aliasOrId) public view returns (uint256) { - try vm.parseUint(aliasOrId) returns (uint256 chainId) { - return chainId; - } catch { - try vm.getChain(aliasOrId) returns (VmSafe.Chain memory chainInfo) { - return chainInfo.chainId; - } catch { - revert InvalidChainKey(aliasOrId); - } - } - } - - /// @dev Retrieves the chain key/alias from the configuration based on the chain ID. - function _getChainKeyFromId(uint256 chainId) private view returns (string memory) { - for (uint256 i = 0; i < _chainKeys.length; i++) { - if (resolveChainId(_chainKeys[i]) == chainId) { - return _chainKeys[i]; - } - } - revert ChainNotInitialized(chainId); - } - - /// @dev Ensures type consistency when setting a value - prevents changing types unless uninitialized. - /// Updates type only when the previous type was `None`. - function _ensureTypeConsistency(uint256 chainId, string memory key, Type memory ty) private { - Type memory current = _typeOf[chainId][key]; - - if (current.kind == TypeKind.None) { - _typeOf[chainId][key] = ty; - } else { - current.assertEq(ty); - } - } - - /// @dev Wraps a string in double quotes for JSON compatibility. - function _quote(string memory s) private pure returns (string memory) { - return string.concat('"', s, '"'); - } - - /// @dev Writes a JSON-formatted value to a specific key in the TOML file. - /// @param chainId The chain id to write under. - /// @param ty The type category ('bool', 'address', 'uint', 'bytes32', 'string', or 'bytes'). - /// @param key The variable key name. - /// @param jsonValue The JSON-formatted value to write. - function _writeToToml(uint256 chainId, string memory ty, string memory key, string memory jsonValue) private { - string memory chainKey = _getChainKeyFromId(chainId); - string memory valueKey = string.concat("$.", chainKey, ".", ty, ".", key); - vm.writeToml(jsonValue, _filePath, valueKey); - } - - // -- GETTER FUNCTIONS ----------------------------------------------------- - - /// @dev Reads a variable for a given chain id and key, and returns it in a generic container. - /// The caller should use `LibVariable` to safely coerce the type. - /// Example: `uint256 myVar = config.get("my_key").toUint256();` - /// - /// @param chain_id The chain ID to read from. - /// @param key The key of the variable to retrieve. - /// @return `Variable` struct containing the type and the ABI-encoded value. - function get(uint256 chain_id, string memory key) public view returns (Variable memory) { - return Variable(_typeOf[chain_id][key], _dataOf[chain_id][key]); - } - - /// @dev Reads a variable for the current chain and a given key, and returns it in a generic container. - /// The caller should use `LibVariable` to safely coerce the type. - /// Example: `uint256 myVar = config.get("my_key").toUint256();` - /// - /// @param key The key of the variable to retrieve. - /// @return `Variable` struct containing the type and the ABI-encoded value. - function get(string memory key) public view returns (Variable memory) { - return get(vm.getChainId(), key); - } - - /// @notice Returns the numerical chain ids for all configured chains. - function getChainIds() public view returns (uint256[] memory) { - string[] memory keys = _chainKeys; - - uint256[] memory ids = new uint256[](keys.length); - for (uint256 i = 0; i < keys.length; i++) { - ids[i] = resolveChainId(keys[i]); - } - - return ids; - } - - /// @notice Reads the RPC URL for a specific chain id. - function getRpcUrl(uint256 chainId) public view returns (string memory) { - return _rpcOf[chainId]; - } - - /// @notice Reads the RPC URL for the current chain. - function getRpcUrl() public view returns (string memory) { - return _rpcOf[vm.getChainId()]; - } - - // -- SETTER FUNCTIONS (SINGLE VALUES) ------------------------------------- - - /// @notice Sets a boolean value for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, bool value) public { - Type memory ty = Type(TypeKind.Bool, false); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) _writeToToml(chainId, ty.kind.toTomlKey(), key, vm.toString(value)); - } - - /// @notice Sets a boolean value for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, bool value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets an address value for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, address value) public { - Type memory ty = Type(TypeKind.Address, false); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) _writeToToml(chainId, ty.kind.toTomlKey(), key, _quote(vm.toString(value))); - } - - /// @notice Sets an address value for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, address value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a bytes32 value for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, bytes32 value) public { - Type memory ty = Type(TypeKind.Bytes32, false); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) _writeToToml(chainId, ty.kind.toTomlKey(), key, _quote(vm.toString(value))); - } - - /// @notice Sets a bytes32 value for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, bytes32 value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a uint256 value for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, uint256 value) public { - Type memory ty = Type(TypeKind.Uint256, false); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) _writeToToml(chainId, ty.kind.toTomlKey(), key, vm.toString(value)); - } - - /// @notice Sets a uint256 value for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, uint256 value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets an int256 value for a given key and chain ID. - function set(uint256 chainId, string memory key, int256 value) public { - Type memory ty = Type(TypeKind.Int256, false); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) _writeToToml(chainId, ty.kind.toTomlKey(), key, vm.toString(value)); - } - - /// @notice Sets an int256 value for a given key on the current chain. - function set(string memory key, int256 value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a string value for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, string memory value) public { - Type memory ty = Type(TypeKind.String, false); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) _writeToToml(chainId, ty.kind.toTomlKey(), key, _quote(value)); - } - - /// @notice Sets a string value for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, string memory value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a bytes value for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, bytes memory value) public { - Type memory ty = Type(TypeKind.Bytes, false); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) _writeToToml(chainId, ty.kind.toTomlKey(), key, _quote(vm.toString(value))); - } - - /// @notice Sets a bytes value for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, bytes memory value) public { - set(vm.getChainId(), key, value); - } - - // -- SETTER FUNCTIONS (ARRAYS) -------------------------------------------- - - /// @notice Sets a boolean array for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, bool[] memory value) public { - Type memory ty = Type(TypeKind.Bool, true); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) { - string memory json = "["; - for (uint256 i = 0; i < value.length; i++) { - json = string.concat(json, vm.toString(value[i])); - if (i < value.length - 1) json = string.concat(json, ","); - } - json = string.concat(json, "]"); - _writeToToml(chainId, ty.kind.toTomlKey(), key, json); - } - } - - /// @notice Sets a boolean array for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, bool[] memory value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets an address array for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, address[] memory value) public { - Type memory ty = Type(TypeKind.Address, true); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) { - string memory json = "["; - for (uint256 i = 0; i < value.length; i++) { - json = string.concat(json, _quote(vm.toString(value[i]))); - if (i < value.length - 1) json = string.concat(json, ","); - } - json = string.concat(json, "]"); - _writeToToml(chainId, ty.kind.toTomlKey(), key, json); - } - } - - /// @notice Sets an address array for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, address[] memory value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a bytes32 array for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, bytes32[] memory value) public { - Type memory ty = Type(TypeKind.Bytes32, true); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) { - string memory json = "["; - for (uint256 i = 0; i < value.length; i++) { - json = string.concat(json, _quote(vm.toString(value[i]))); - if (i < value.length - 1) json = string.concat(json, ","); - } - json = string.concat(json, "]"); - _writeToToml(chainId, ty.kind.toTomlKey(), key, json); - } - } - - /// @notice Sets a bytes32 array for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, bytes32[] memory value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a uint256 array for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, uint256[] memory value) public { - Type memory ty = Type(TypeKind.Uint256, true); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) { - string memory json = "["; - for (uint256 i = 0; i < value.length; i++) { - json = string.concat(json, vm.toString(value[i])); - if (i < value.length - 1) json = string.concat(json, ","); - } - json = string.concat(json, "]"); - _writeToToml(chainId, ty.kind.toTomlKey(), key, json); - } - } - - /// @notice Sets a uint256 array for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, uint256[] memory value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a int256 array for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, int256[] memory value) public { - Type memory ty = Type(TypeKind.Int256, true); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) { - string memory json = "["; - for (uint256 i = 0; i < value.length; i++) { - json = string.concat(json, vm.toString(value[i])); - if (i < value.length - 1) json = string.concat(json, ","); - } - json = string.concat(json, "]"); - _writeToToml(chainId, ty.kind.toTomlKey(), key, json); - } - } - - /// @notice Sets a int256 array for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, int256[] memory value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a string array for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, string[] memory value) public { - Type memory ty = Type(TypeKind.String, true); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) { - string memory json = "["; - for (uint256 i = 0; i < value.length; i++) { - json = string.concat(json, _quote(value[i])); - if (i < value.length - 1) json = string.concat(json, ","); - } - json = string.concat(json, "]"); - _writeToToml(chainId, ty.kind.toTomlKey(), key, json); - } - } - - /// @notice Sets a string array for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, string[] memory value) public { - set(vm.getChainId(), key, value); - } - - /// @notice Sets a bytes array for a given key and chain ID. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(uint256 chainId, string memory key, bytes[] memory value) public { - Type memory ty = Type(TypeKind.Bytes, true); - _ensureTypeConsistency(chainId, key, ty); - _dataOf[chainId][key] = abi.encode(value); - if (_writeToFile) { - string memory json = "["; - for (uint256 i = 0; i < value.length; i++) { - json = string.concat(json, _quote(vm.toString(value[i]))); - if (i < value.length - 1) json = string.concat(json, ","); - } - json = string.concat(json, "]"); - _writeToToml(chainId, ty.kind.toTomlKey(), key, json); - } - } - - /// @notice Sets a bytes array for a given key on the current chain. - /// @dev Sets the cached value in storage and writes the change back to the TOML file if `autoWrite` is enabled. - function set(string memory key, bytes[] memory value) public { - set(vm.getChainId(), key, value); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdConstants.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdConstants.sol deleted file mode 100644 index 2047d2b33d..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdConstants.sol +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {IMulticall3} from "./interfaces/IMulticall3.sol"; -import {Vm} from "./Vm.sol"; - -library StdConstants { - /// @dev Cheat code address. - /// Calculated as `address(uint160(uint256(keccak256("hevm cheat code"))))`. - Vm internal constant VM = Vm(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); - /// @dev console.sol and console2.sol work by executing a staticcall to this address. - /// Calculated as `address(uint160(uint88(bytes11("console.log"))))`. - address internal constant CONSOLE = 0x000000000000000000636F6e736F6c652e6c6f67; - /// @dev Used when deploying with create2. - /// Taken from https://github.com/Arachnid/deterministic-deployment-proxy. - address internal constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - /// @dev The default address for tx.origin and msg.sender. - /// Calculated as `address(uint160(uint256(keccak256("foundry default caller"))))`. - address internal constant DEFAULT_SENDER = 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38; - /// @dev The address of the first contract `CREATE`d by a running test contract. - /// When running tests, each test contract is `CREATE`d by `DEFAULT_SENDER` with nonce 1. - /// Calculated as `VM.computeCreateAddress(VM.computeCreateAddress(DEFAULT_SENDER, 1), 1)`. - address internal constant DEFAULT_TEST_CONTRACT = 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f; - /// @dev Deterministic deployment address of the Multicall3 contract. - /// Taken from https://www.multicall3.com. - IMulticall3 internal constant MULTICALL3_ADDRESS = IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11); - /// @dev The order of the secp256k1 curve. - uint256 internal constant SECP256K1_ORDER = - 115792089237316195423570985008687907852837564279074904382605163141518161494337; -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdError.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdError.sol deleted file mode 100644 index a302191faa..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdError.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: MIT -// Panics work for versions >=0.8.0, but we lowered the pragma to make this compatible with Test -pragma solidity >=0.6.2 <0.9.0; - -library stdError { - bytes public constant assertionError = abi.encodeWithSignature("Panic(uint256)", 0x01); - bytes public constant arithmeticError = abi.encodeWithSignature("Panic(uint256)", 0x11); - bytes public constant divisionError = abi.encodeWithSignature("Panic(uint256)", 0x12); - bytes public constant enumConversionError = abi.encodeWithSignature("Panic(uint256)", 0x21); - bytes public constant encodeStorageError = abi.encodeWithSignature("Panic(uint256)", 0x22); - bytes public constant popError = abi.encodeWithSignature("Panic(uint256)", 0x31); - bytes public constant indexOOBError = abi.encodeWithSignature("Panic(uint256)", 0x32); - bytes public constant memOverflowError = abi.encodeWithSignature("Panic(uint256)", 0x41); - bytes public constant zeroVarError = abi.encodeWithSignature("Panic(uint256)", 0x51); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdInvariant.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdInvariant.sol deleted file mode 100644 index 056db98fcf..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdInvariant.sol +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -abstract contract StdInvariant { - struct FuzzSelector { - address addr; - bytes4[] selectors; - } - - struct FuzzArtifactSelector { - string artifact; - bytes4[] selectors; - } - - struct FuzzInterface { - address addr; - string[] artifacts; - } - - address[] private _excludedContracts; - address[] private _excludedSenders; - address[] private _targetedContracts; - address[] private _targetedSenders; - - string[] private _excludedArtifacts; - string[] private _targetedArtifacts; - - FuzzArtifactSelector[] private _targetedArtifactSelectors; - - FuzzSelector[] private _excludedSelectors; - FuzzSelector[] private _targetedSelectors; - - FuzzInterface[] private _targetedInterfaces; - - // Functions for users: - // These are intended to be called in tests. - - function excludeContract(address newExcludedContract_) internal { - _excludedContracts.push(newExcludedContract_); - } - - function excludeSelector(FuzzSelector memory newExcludedSelector_) internal { - _excludedSelectors.push(newExcludedSelector_); - } - - function excludeSender(address newExcludedSender_) internal { - _excludedSenders.push(newExcludedSender_); - } - - function excludeArtifact(string memory newExcludedArtifact_) internal { - _excludedArtifacts.push(newExcludedArtifact_); - } - - function targetArtifact(string memory newTargetedArtifact_) internal { - _targetedArtifacts.push(newTargetedArtifact_); - } - - function targetArtifactSelector(FuzzArtifactSelector memory newTargetedArtifactSelector_) internal { - _targetedArtifactSelectors.push(newTargetedArtifactSelector_); - } - - function targetContract(address newTargetedContract_) internal { - _targetedContracts.push(newTargetedContract_); - } - - function targetSelector(FuzzSelector memory newTargetedSelector_) internal { - _targetedSelectors.push(newTargetedSelector_); - } - - function targetSender(address newTargetedSender_) internal { - _targetedSenders.push(newTargetedSender_); - } - - function targetInterface(FuzzInterface memory newTargetedInterface_) internal { - _targetedInterfaces.push(newTargetedInterface_); - } - - // Functions for forge: - // These are called by forge to run invariant tests and don't need to be called in tests. - - function excludeArtifacts() public view returns (string[] memory excludedArtifacts_) { - excludedArtifacts_ = _excludedArtifacts; - } - - function excludeContracts() public view returns (address[] memory excludedContracts_) { - excludedContracts_ = _excludedContracts; - } - - function excludeSelectors() public view returns (FuzzSelector[] memory excludedSelectors_) { - excludedSelectors_ = _excludedSelectors; - } - - function excludeSenders() public view returns (address[] memory excludedSenders_) { - excludedSenders_ = _excludedSenders; - } - - function targetArtifacts() public view returns (string[] memory targetedArtifacts_) { - targetedArtifacts_ = _targetedArtifacts; - } - - function targetArtifactSelectors() public view returns (FuzzArtifactSelector[] memory targetedArtifactSelectors_) { - targetedArtifactSelectors_ = _targetedArtifactSelectors; - } - - function targetContracts() public view returns (address[] memory targetedContracts_) { - targetedContracts_ = _targetedContracts; - } - - function targetSelectors() public view returns (FuzzSelector[] memory targetedSelectors_) { - targetedSelectors_ = _targetedSelectors; - } - - function targetSenders() public view returns (address[] memory targetedSenders_) { - targetedSenders_ = _targetedSenders; - } - - function targetInterfaces() public view returns (FuzzInterface[] memory targetedInterfaces_) { - targetedInterfaces_ = _targetedInterfaces; - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdJson.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdJson.sol deleted file mode 100644 index 2a033c03a7..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdJson.sol +++ /dev/null @@ -1,283 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.0 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {VmSafe} from "./Vm.sol"; - -// Helpers for parsing and writing JSON files -// To parse: -// ``` -// using stdJson for string; -// string memory json = vm.readFile(""); -// json.readUint(""); -// ``` -// To write: -// ``` -// using stdJson for string; -// string memory json = "json"; -// json.serialize("a", uint256(123)); -// string memory semiFinal = json.serialize("b", string("test")); -// string memory finalJson = json.serialize("c", semiFinal); -// finalJson.write(""); -// ``` - -library stdJson { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function keyExists(string memory json, string memory key) internal view returns (bool) { - return vm.keyExistsJson(json, key); - } - - function parseRaw(string memory json, string memory key) internal pure returns (bytes memory) { - return vm.parseJson(json, key); - } - - function readUint(string memory json, string memory key) internal pure returns (uint256) { - return vm.parseJsonUint(json, key); - } - - function readUintArray(string memory json, string memory key) internal pure returns (uint256[] memory) { - return vm.parseJsonUintArray(json, key); - } - - function readInt(string memory json, string memory key) internal pure returns (int256) { - return vm.parseJsonInt(json, key); - } - - function readIntArray(string memory json, string memory key) internal pure returns (int256[] memory) { - return vm.parseJsonIntArray(json, key); - } - - function readBytes32(string memory json, string memory key) internal pure returns (bytes32) { - return vm.parseJsonBytes32(json, key); - } - - function readBytes32Array(string memory json, string memory key) internal pure returns (bytes32[] memory) { - return vm.parseJsonBytes32Array(json, key); - } - - function readString(string memory json, string memory key) internal pure returns (string memory) { - return vm.parseJsonString(json, key); - } - - function readStringArray(string memory json, string memory key) internal pure returns (string[] memory) { - return vm.parseJsonStringArray(json, key); - } - - function readAddress(string memory json, string memory key) internal pure returns (address) { - return vm.parseJsonAddress(json, key); - } - - function readAddressArray(string memory json, string memory key) internal pure returns (address[] memory) { - return vm.parseJsonAddressArray(json, key); - } - - function readBool(string memory json, string memory key) internal pure returns (bool) { - return vm.parseJsonBool(json, key); - } - - function readBoolArray(string memory json, string memory key) internal pure returns (bool[] memory) { - return vm.parseJsonBoolArray(json, key); - } - - function readBytes(string memory json, string memory key) internal pure returns (bytes memory) { - return vm.parseJsonBytes(json, key); - } - - function readBytesArray(string memory json, string memory key) internal pure returns (bytes[] memory) { - return vm.parseJsonBytesArray(json, key); - } - - function readUintOr(string memory json, string memory key, uint256 defaultValue) internal view returns (uint256) { - return keyExists(json, key) ? readUint(json, key) : defaultValue; - } - - function readUintArrayOr(string memory json, string memory key, uint256[] memory defaultValue) - internal - view - returns (uint256[] memory) - { - return keyExists(json, key) ? readUintArray(json, key) : defaultValue; - } - - function readIntOr(string memory json, string memory key, int256 defaultValue) internal view returns (int256) { - return keyExists(json, key) ? readInt(json, key) : defaultValue; - } - - function readIntArrayOr(string memory json, string memory key, int256[] memory defaultValue) - internal - view - returns (int256[] memory) - { - return keyExists(json, key) ? readIntArray(json, key) : defaultValue; - } - - function readBytes32Or(string memory json, string memory key, bytes32 defaultValue) - internal - view - returns (bytes32) - { - return keyExists(json, key) ? readBytes32(json, key) : defaultValue; - } - - function readBytes32ArrayOr(string memory json, string memory key, bytes32[] memory defaultValue) - internal - view - returns (bytes32[] memory) - { - return keyExists(json, key) ? readBytes32Array(json, key) : defaultValue; - } - - function readStringOr(string memory json, string memory key, string memory defaultValue) - internal - view - returns (string memory) - { - return keyExists(json, key) ? readString(json, key) : defaultValue; - } - - function readStringArrayOr(string memory json, string memory key, string[] memory defaultValue) - internal - view - returns (string[] memory) - { - return keyExists(json, key) ? readStringArray(json, key) : defaultValue; - } - - function readAddressOr(string memory json, string memory key, address defaultValue) - internal - view - returns (address) - { - return keyExists(json, key) ? readAddress(json, key) : defaultValue; - } - - function readAddressArrayOr(string memory json, string memory key, address[] memory defaultValue) - internal - view - returns (address[] memory) - { - return keyExists(json, key) ? readAddressArray(json, key) : defaultValue; - } - - function readBoolOr(string memory json, string memory key, bool defaultValue) internal view returns (bool) { - return keyExists(json, key) ? readBool(json, key) : defaultValue; - } - - function readBoolArrayOr(string memory json, string memory key, bool[] memory defaultValue) - internal - view - returns (bool[] memory) - { - return keyExists(json, key) ? readBoolArray(json, key) : defaultValue; - } - - function readBytesOr(string memory json, string memory key, bytes memory defaultValue) - internal - view - returns (bytes memory) - { - return keyExists(json, key) ? readBytes(json, key) : defaultValue; - } - - function readBytesArrayOr(string memory json, string memory key, bytes[] memory defaultValue) - internal - view - returns (bytes[] memory) - { - return keyExists(json, key) ? readBytesArray(json, key) : defaultValue; - } - - function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) { - return vm.serializeJson(jsonKey, rootObject); - } - - function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bool[] memory value) - internal - returns (string memory) - { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256[] memory value) - internal - returns (string memory) - { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256[] memory value) - internal - returns (string memory) - { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address[] memory value) - internal - returns (string memory) - { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string[] memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function write(string memory jsonKey, string memory path) internal { - vm.writeJson(jsonKey, path); - } - - function write(string memory jsonKey, string memory path, string memory valueKey) internal { - vm.writeJson(jsonKey, path, valueKey); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdMath.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdMath.sol deleted file mode 100644 index 459523bdac..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdMath.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -library stdMath { - int256 private constant INT256_MIN = -57896044618658097711785492504343953926634992332820282019728792003956564819968; - - function abs(int256 a) internal pure returns (uint256) { - // Required or it will fail when `a = type(int256).min` - if (a == INT256_MIN) { - return 57896044618658097711785492504343953926634992332820282019728792003956564819968; - } - - return uint256(a > 0 ? a : -a); - } - - function delta(uint256 a, uint256 b) internal pure returns (uint256) { - return a > b ? a - b : b - a; - } - - function delta(int256 a, int256 b) internal pure returns (uint256) { - // a and b are of the same sign - // this works thanks to two's complement, the left-most bit is the sign bit - if ((a ^ b) > -1) { - return delta(abs(a), abs(b)); - } - - // a and b are of opposite signs - return abs(a) + abs(b); - } - - function percentDelta(uint256 a, uint256 b) internal pure returns (uint256) { - uint256 absDelta = delta(a, b); - - return absDelta * 1e18 / b; - } - - function percentDelta(int256 a, int256 b) internal pure returns (uint256) { - uint256 absDelta = delta(a, b); - uint256 absB = abs(b); - - return absDelta * 1e18 / absB; - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdStorage.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdStorage.sol deleted file mode 100644 index 1627af7534..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdStorage.sol +++ /dev/null @@ -1,473 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {Vm} from "./Vm.sol"; - -struct FindData { - uint256 slot; - uint256 offsetLeft; - uint256 offsetRight; - bool found; -} - -struct StdStorage { - mapping(address => mapping(bytes4 => mapping(bytes32 => FindData))) finds; - bytes32[] _keys; - bytes4 _sig; - uint256 _depth; - address _target; - bytes32 _set; - bool _enable_packed_slots; - bytes _calldata; -} - -library stdStorageSafe { - event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot); - event WARNING_UninitedSlot(address who, uint256 slot); - - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - uint256 constant UINT256_MAX = 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - function sigs(string memory sigStr) internal pure returns (bytes4) { - return bytes4(keccak256(bytes(sigStr))); - } - - function getCallParams(StdStorage storage self) internal view returns (bytes memory) { - if (self._calldata.length == 0) { - return flatten(self._keys); - } else { - return self._calldata; - } - } - - // Calls target contract with configured parameters - function callTarget(StdStorage storage self) internal view returns (bool, bytes32) { - bytes memory cd = abi.encodePacked(self._sig, getCallParams(self)); - (bool success, bytes memory rdat) = self._target.staticcall(cd); - bytes32 result = bytesToBytes32(rdat, 32 * self._depth); - - return (success, result); - } - - // Tries mutating slot value to determine if the targeted value is stored in it. - // If current value is 0, then we are setting slot value to type(uint256).max - // Otherwise, we set it to 0. That way, return value should always be affected. - function checkSlotMutatesCall(StdStorage storage self, bytes32 slot) internal returns (bool) { - bytes32 prevSlotValue = vm.load(self._target, slot); - (bool success, bytes32 prevReturnValue) = callTarget(self); - - bytes32 testVal = prevReturnValue == bytes32(0) ? bytes32(UINT256_MAX) : bytes32(0); - vm.store(self._target, slot, testVal); - - (, bytes32 newReturnValue) = callTarget(self); - - vm.store(self._target, slot, prevSlotValue); - - return (success && (prevReturnValue != newReturnValue)); - } - - // Tries setting one of the bits in slot to 1 until return value changes. - // Index of resulted bit is an offset packed slot has from left/right side - function findOffset(StdStorage storage self, bytes32 slot, bool left) internal returns (bool, uint256) { - for (uint256 offset = 0; offset < 256; offset++) { - uint256 valueToPut = left ? (1 << (255 - offset)) : (1 << offset); - vm.store(self._target, slot, bytes32(valueToPut)); - - (bool success, bytes32 data) = callTarget(self); - - if (success && (uint256(data) > 0)) { - return (true, offset); - } - } - return (false, 0); - } - - function findOffsets(StdStorage storage self, bytes32 slot) internal returns (bool, uint256, uint256) { - bytes32 prevSlotValue = vm.load(self._target, slot); - - (bool foundLeft, uint256 offsetLeft) = findOffset(self, slot, true); - (bool foundRight, uint256 offsetRight) = findOffset(self, slot, false); - - // `findOffset` may mutate slot value, so we are setting it to initial value - vm.store(self._target, slot, prevSlotValue); - return (foundLeft && foundRight, offsetLeft, offsetRight); - } - - function find(StdStorage storage self) internal returns (FindData storage) { - return find(self, true); - } - - /// @notice find an arbitrary storage slot given a function sig, input data, address of the contract and a value to check against - // slot complexity: - // if flat, will be bytes32(uint256(uint)); - // if map, will be keccak256(abi.encode(key, uint(slot))); - // if deep map, will be keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot))))); - // if map struct, will be bytes32(uint256(keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot)))))) + structFieldDepth); - function find(StdStorage storage self, bool _clear) internal returns (FindData storage) { - address who = self._target; - bytes4 fsig = self._sig; - uint256 field_depth = self._depth; - bytes memory params = getCallParams(self); - - // calldata to test against - if (self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found) { - if (_clear) { - clear(self); - } - return self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; - } - vm.record(); - (, bytes32 callResult) = callTarget(self); - (bytes32[] memory reads,) = vm.accesses(address(who)); - - if (reads.length == 0) { - revert("stdStorage find(StdStorage): No storage use detected for target."); - } else { - for (uint256 i = reads.length; --i >= 0;) { - bytes32 prev = vm.load(who, reads[i]); - if (prev == bytes32(0)) { - emit WARNING_UninitedSlot(who, uint256(reads[i])); - } - - if (!checkSlotMutatesCall(self, reads[i])) { - continue; - } - - (uint256 offsetLeft, uint256 offsetRight) = (0, 0); - - if (self._enable_packed_slots) { - bool found; - (found, offsetLeft, offsetRight) = findOffsets(self, reads[i]); - if (!found) { - continue; - } - } - - // Check that value between found offsets is equal to the current call result - uint256 curVal = (uint256(prev) & getMaskByOffsets(offsetLeft, offsetRight)) >> offsetRight; - - if (uint256(callResult) != curVal) { - continue; - } - - emit SlotFound(who, fsig, keccak256(abi.encodePacked(params, field_depth)), uint256(reads[i])); - self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))] = - FindData(uint256(reads[i]), offsetLeft, offsetRight, true); - break; - } - } - - require( - self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found, - "stdStorage find(StdStorage): Slot(s) not found." - ); - - if (_clear) { - clear(self); - } - return self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; - } - - function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { - self._target = _target; - return self; - } - - function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { - self._sig = _sig; - return self; - } - - function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { - self._sig = sigs(_sig); - return self; - } - - function with_calldata(StdStorage storage self, bytes memory _calldata) internal returns (StdStorage storage) { - self._calldata = _calldata; - return self; - } - - function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { - self._keys.push(bytes32(uint256(uint160(who)))); - return self; - } - - function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { - self._keys.push(bytes32(amt)); - return self; - } - - function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { - self._keys.push(key); - return self; - } - - function enable_packed_slots(StdStorage storage self) internal returns (StdStorage storage) { - self._enable_packed_slots = true; - return self; - } - - function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { - self._depth = _depth; - return self; - } - - function read(StdStorage storage self) private returns (bytes memory) { - FindData storage data = find(self, false); - uint256 mask = getMaskByOffsets(data.offsetLeft, data.offsetRight); - uint256 value = (uint256(vm.load(self._target, bytes32(data.slot))) & mask) >> data.offsetRight; - clear(self); - return abi.encode(value); - } - - function read_bytes32(StdStorage storage self) internal returns (bytes32) { - return abi.decode(read(self), (bytes32)); - } - - function read_bool(StdStorage storage self) internal returns (bool) { - int256 v = read_int(self); - if (v == 0) return false; - if (v == 1) return true; - revert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); - } - - function read_address(StdStorage storage self) internal returns (address) { - return abi.decode(read(self), (address)); - } - - function read_uint(StdStorage storage self) internal returns (uint256) { - return abi.decode(read(self), (uint256)); - } - - function read_int(StdStorage storage self) internal returns (int256) { - return abi.decode(read(self), (int256)); - } - - function parent(StdStorage storage self) internal returns (uint256, bytes32) { - address who = self._target; - uint256 field_depth = self._depth; - vm.startMappingRecording(); - uint256 child = find(self, true).slot - field_depth; - (bool found, bytes32 key, bytes32 parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(child)); - if (!found) { - revert( - "stdStorage read_bool(StdStorage): Cannot find parent. Make sure you give a slot and startMappingRecording() has been called." - ); - } - return (uint256(parent_slot), key); - } - - function root(StdStorage storage self) internal returns (uint256) { - address who = self._target; - uint256 field_depth = self._depth; - vm.startMappingRecording(); - uint256 child = find(self, true).slot - field_depth; - bool found; - bytes32 root_slot; - bytes32 parent_slot; - (found,, parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(child)); - if (!found) { - revert( - "stdStorage read_bool(StdStorage): Cannot find parent. Make sure you give a slot and startMappingRecording() has been called." - ); - } - while (found) { - root_slot = parent_slot; - (found,, parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(root_slot)); - } - return uint256(root_slot); - } - - function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) { - bytes32 out; - - uint256 max = b.length > 32 ? 32 : b.length; - for (uint256 i = 0; i < max; i++) { - out |= bytes32(b[offset + i] & 0xFF) >> (i * 8); - } - return out; - } - - function flatten(bytes32[] memory b) private pure returns (bytes memory) { - bytes memory result = new bytes(b.length * 32); - for (uint256 i = 0; i < b.length; i++) { - bytes32 k = b[i]; - /// @solidity memory-safe-assembly - assembly { - mstore(add(result, add(32, mul(32, i))), k) - } - } - - return result; - } - - function clear(StdStorage storage self) internal { - delete self._target; - delete self._sig; - delete self._keys; - delete self._depth; - delete self._enable_packed_slots; - delete self._calldata; - } - - // Returns mask which contains non-zero bits for values between `offsetLeft` and `offsetRight` - // (slotValue & mask) >> offsetRight will be the value of the given packed variable - function getMaskByOffsets(uint256 offsetLeft, uint256 offsetRight) internal pure returns (uint256 mask) { - // mask = ((1 << (256 - (offsetRight + offsetLeft))) - 1) << offsetRight; - // using assembly because (1 << 256) causes overflow - assembly { - mask := shl(offsetRight, sub(shl(sub(256, add(offsetRight, offsetLeft)), 1), 1)) - } - } - - // Returns slot value with updated packed variable. - function getUpdatedSlotValue(bytes32 curValue, uint256 varValue, uint256 offsetLeft, uint256 offsetRight) - internal - pure - returns (bytes32 newValue) - { - return bytes32((uint256(curValue) & ~getMaskByOffsets(offsetLeft, offsetRight)) | (varValue << offsetRight)); - } -} - -library stdStorage { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function sigs(string memory sigStr) internal pure returns (bytes4) { - return stdStorageSafe.sigs(sigStr); - } - - function find(StdStorage storage self) internal returns (uint256) { - return find(self, true); - } - - function find(StdStorage storage self, bool _clear) internal returns (uint256) { - return stdStorageSafe.find(self, _clear).slot; - } - - function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { - return stdStorageSafe.target(self, _target); - } - - function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { - return stdStorageSafe.sig(self, _sig); - } - - function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { - return stdStorageSafe.sig(self, _sig); - } - - function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, who); - } - - function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, amt); - } - - function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, key); - } - - function with_calldata(StdStorage storage self, bytes memory _calldata) internal returns (StdStorage storage) { - return stdStorageSafe.with_calldata(self, _calldata); - } - - function enable_packed_slots(StdStorage storage self) internal returns (StdStorage storage) { - return stdStorageSafe.enable_packed_slots(self); - } - - function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { - return stdStorageSafe.depth(self, _depth); - } - - function clear(StdStorage storage self) internal { - stdStorageSafe.clear(self); - } - - function checked_write(StdStorage storage self, address who) internal { - checked_write(self, bytes32(uint256(uint160(who)))); - } - - function checked_write(StdStorage storage self, uint256 amt) internal { - checked_write(self, bytes32(amt)); - } - - function checked_write_int(StdStorage storage self, int256 val) internal { - checked_write(self, bytes32(uint256(val))); - } - - function checked_write(StdStorage storage self, bool write) internal { - bytes32 t; - /// @solidity memory-safe-assembly - assembly { - t := write - } - checked_write(self, t); - } - - function checked_write(StdStorage storage self, bytes32 set) internal { - address who = self._target; - bytes4 fsig = self._sig; - uint256 field_depth = self._depth; - bytes memory params = stdStorageSafe.getCallParams(self); - - if (!self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))].found) { - find(self, false); - } - FindData storage data = self.finds[who][fsig][keccak256(abi.encodePacked(params, field_depth))]; - if ((data.offsetLeft + data.offsetRight) > 0) { - uint256 maxVal = 2 ** (256 - (data.offsetLeft + data.offsetRight)); - require( - uint256(set) < maxVal, - string( - abi.encodePacked( - "stdStorage find(StdStorage): Packed slot. We can't fit value greater than ", - vm.toString(maxVal) - ) - ) - ); - } - bytes32 curVal = vm.load(who, bytes32(data.slot)); - bytes32 valToSet = stdStorageSafe.getUpdatedSlotValue(curVal, uint256(set), data.offsetLeft, data.offsetRight); - - vm.store(who, bytes32(data.slot), valToSet); - - (bool success, bytes32 callResult) = stdStorageSafe.callTarget(self); - - if (!success || callResult != set) { - vm.store(who, bytes32(data.slot), curVal); - revert("stdStorage find(StdStorage): Failed to write value."); - } - clear(self); - } - - function read_bytes32(StdStorage storage self) internal returns (bytes32) { - return stdStorageSafe.read_bytes32(self); - } - - function read_bool(StdStorage storage self) internal returns (bool) { - return stdStorageSafe.read_bool(self); - } - - function read_address(StdStorage storage self) internal returns (address) { - return stdStorageSafe.read_address(self); - } - - function read_uint(StdStorage storage self) internal returns (uint256) { - return stdStorageSafe.read_uint(self); - } - - function read_int(StdStorage storage self) internal returns (int256) { - return stdStorageSafe.read_int(self); - } - - function parent(StdStorage storage self) internal returns (uint256, bytes32) { - return stdStorageSafe.parent(self); - } - - function root(StdStorage storage self) internal returns (uint256) { - return stdStorageSafe.root(self); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdStyle.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdStyle.sol deleted file mode 100644 index d371e0c60a..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdStyle.sol +++ /dev/null @@ -1,333 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -import {VmSafe} from "./Vm.sol"; - -library StdStyle { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - string constant RED = "\u001b[91m"; - string constant GREEN = "\u001b[92m"; - string constant YELLOW = "\u001b[93m"; - string constant BLUE = "\u001b[94m"; - string constant MAGENTA = "\u001b[95m"; - string constant CYAN = "\u001b[96m"; - string constant BOLD = "\u001b[1m"; - string constant DIM = "\u001b[2m"; - string constant ITALIC = "\u001b[3m"; - string constant UNDERLINE = "\u001b[4m"; - string constant INVERSE = "\u001b[7m"; - string constant RESET = "\u001b[0m"; - - function styleConcat(string memory style, string memory self) private pure returns (string memory) { - return string(abi.encodePacked(style, self, RESET)); - } - - function red(string memory self) internal pure returns (string memory) { - return styleConcat(RED, self); - } - - function red(uint256 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(int256 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(address self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(bool self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function redBytes(bytes memory self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function redBytes32(bytes32 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function green(string memory self) internal pure returns (string memory) { - return styleConcat(GREEN, self); - } - - function green(uint256 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(int256 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(address self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(bool self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function greenBytes(bytes memory self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function greenBytes32(bytes32 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function yellow(string memory self) internal pure returns (string memory) { - return styleConcat(YELLOW, self); - } - - function yellow(uint256 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(int256 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(address self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(bool self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellowBytes(bytes memory self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellowBytes32(bytes32 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function blue(string memory self) internal pure returns (string memory) { - return styleConcat(BLUE, self); - } - - function blue(uint256 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(int256 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(address self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(bool self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blueBytes(bytes memory self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blueBytes32(bytes32 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function magenta(string memory self) internal pure returns (string memory) { - return styleConcat(MAGENTA, self); - } - - function magenta(uint256 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(int256 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(address self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(bool self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magentaBytes(bytes memory self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magentaBytes32(bytes32 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function cyan(string memory self) internal pure returns (string memory) { - return styleConcat(CYAN, self); - } - - function cyan(uint256 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(int256 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(address self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(bool self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyanBytes(bytes memory self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyanBytes32(bytes32 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function bold(string memory self) internal pure returns (string memory) { - return styleConcat(BOLD, self); - } - - function bold(uint256 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(int256 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(address self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(bool self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function boldBytes(bytes memory self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function boldBytes32(bytes32 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function dim(string memory self) internal pure returns (string memory) { - return styleConcat(DIM, self); - } - - function dim(uint256 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(int256 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(address self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(bool self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dimBytes(bytes memory self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dimBytes32(bytes32 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function italic(string memory self) internal pure returns (string memory) { - return styleConcat(ITALIC, self); - } - - function italic(uint256 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(int256 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(address self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(bool self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italicBytes(bytes memory self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italicBytes32(bytes32 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function underline(string memory self) internal pure returns (string memory) { - return styleConcat(UNDERLINE, self); - } - - function underline(uint256 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(int256 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(address self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(bool self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underlineBytes(bytes memory self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underlineBytes32(bytes32 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function inverse(string memory self) internal pure returns (string memory) { - return styleConcat(INVERSE, self); - } - - function inverse(uint256 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(int256 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(address self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(bool self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverseBytes(bytes memory self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverseBytes32(bytes32 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdToml.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdToml.sol deleted file mode 100644 index 7ad3be2f97..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdToml.sol +++ /dev/null @@ -1,283 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.0 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {VmSafe} from "./Vm.sol"; - -// Helpers for parsing and writing TOML files -// To parse: -// ``` -// using stdToml for string; -// string memory toml = vm.readFile(""); -// toml.readUint(""); -// ``` -// To write: -// ``` -// using stdToml for string; -// string memory json = "json"; -// json.serialize("a", uint256(123)); -// string memory semiFinal = json.serialize("b", string("test")); -// string memory finalJson = json.serialize("c", semiFinal); -// finalJson.write(""); -// ``` - -library stdToml { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function keyExists(string memory toml, string memory key) internal view returns (bool) { - return vm.keyExistsToml(toml, key); - } - - function parseRaw(string memory toml, string memory key) internal pure returns (bytes memory) { - return vm.parseToml(toml, key); - } - - function readUint(string memory toml, string memory key) internal pure returns (uint256) { - return vm.parseTomlUint(toml, key); - } - - function readUintArray(string memory toml, string memory key) internal pure returns (uint256[] memory) { - return vm.parseTomlUintArray(toml, key); - } - - function readInt(string memory toml, string memory key) internal pure returns (int256) { - return vm.parseTomlInt(toml, key); - } - - function readIntArray(string memory toml, string memory key) internal pure returns (int256[] memory) { - return vm.parseTomlIntArray(toml, key); - } - - function readBytes32(string memory toml, string memory key) internal pure returns (bytes32) { - return vm.parseTomlBytes32(toml, key); - } - - function readBytes32Array(string memory toml, string memory key) internal pure returns (bytes32[] memory) { - return vm.parseTomlBytes32Array(toml, key); - } - - function readString(string memory toml, string memory key) internal pure returns (string memory) { - return vm.parseTomlString(toml, key); - } - - function readStringArray(string memory toml, string memory key) internal pure returns (string[] memory) { - return vm.parseTomlStringArray(toml, key); - } - - function readAddress(string memory toml, string memory key) internal pure returns (address) { - return vm.parseTomlAddress(toml, key); - } - - function readAddressArray(string memory toml, string memory key) internal pure returns (address[] memory) { - return vm.parseTomlAddressArray(toml, key); - } - - function readBool(string memory toml, string memory key) internal pure returns (bool) { - return vm.parseTomlBool(toml, key); - } - - function readBoolArray(string memory toml, string memory key) internal pure returns (bool[] memory) { - return vm.parseTomlBoolArray(toml, key); - } - - function readBytes(string memory toml, string memory key) internal pure returns (bytes memory) { - return vm.parseTomlBytes(toml, key); - } - - function readBytesArray(string memory toml, string memory key) internal pure returns (bytes[] memory) { - return vm.parseTomlBytesArray(toml, key); - } - - function readUintOr(string memory toml, string memory key, uint256 defaultValue) internal view returns (uint256) { - return keyExists(toml, key) ? readUint(toml, key) : defaultValue; - } - - function readUintArrayOr(string memory toml, string memory key, uint256[] memory defaultValue) - internal - view - returns (uint256[] memory) - { - return keyExists(toml, key) ? readUintArray(toml, key) : defaultValue; - } - - function readIntOr(string memory toml, string memory key, int256 defaultValue) internal view returns (int256) { - return keyExists(toml, key) ? readInt(toml, key) : defaultValue; - } - - function readIntArrayOr(string memory toml, string memory key, int256[] memory defaultValue) - internal - view - returns (int256[] memory) - { - return keyExists(toml, key) ? readIntArray(toml, key) : defaultValue; - } - - function readBytes32Or(string memory toml, string memory key, bytes32 defaultValue) - internal - view - returns (bytes32) - { - return keyExists(toml, key) ? readBytes32(toml, key) : defaultValue; - } - - function readBytes32ArrayOr(string memory toml, string memory key, bytes32[] memory defaultValue) - internal - view - returns (bytes32[] memory) - { - return keyExists(toml, key) ? readBytes32Array(toml, key) : defaultValue; - } - - function readStringOr(string memory toml, string memory key, string memory defaultValue) - internal - view - returns (string memory) - { - return keyExists(toml, key) ? readString(toml, key) : defaultValue; - } - - function readStringArrayOr(string memory toml, string memory key, string[] memory defaultValue) - internal - view - returns (string[] memory) - { - return keyExists(toml, key) ? readStringArray(toml, key) : defaultValue; - } - - function readAddressOr(string memory toml, string memory key, address defaultValue) - internal - view - returns (address) - { - return keyExists(toml, key) ? readAddress(toml, key) : defaultValue; - } - - function readAddressArrayOr(string memory toml, string memory key, address[] memory defaultValue) - internal - view - returns (address[] memory) - { - return keyExists(toml, key) ? readAddressArray(toml, key) : defaultValue; - } - - function readBoolOr(string memory toml, string memory key, bool defaultValue) internal view returns (bool) { - return keyExists(toml, key) ? readBool(toml, key) : defaultValue; - } - - function readBoolArrayOr(string memory toml, string memory key, bool[] memory defaultValue) - internal - view - returns (bool[] memory) - { - return keyExists(toml, key) ? readBoolArray(toml, key) : defaultValue; - } - - function readBytesOr(string memory toml, string memory key, bytes memory defaultValue) - internal - view - returns (bytes memory) - { - return keyExists(toml, key) ? readBytes(toml, key) : defaultValue; - } - - function readBytesArrayOr(string memory toml, string memory key, bytes[] memory defaultValue) - internal - view - returns (bytes[] memory) - { - return keyExists(toml, key) ? readBytesArray(toml, key) : defaultValue; - } - - function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) { - return vm.serializeJson(jsonKey, rootObject); - } - - function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bool[] memory value) - internal - returns (string memory) - { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256[] memory value) - internal - returns (string memory) - { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256[] memory value) - internal - returns (string memory) - { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address[] memory value) - internal - returns (string memory) - { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string[] memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function write(string memory jsonKey, string memory path) internal { - vm.writeToml(jsonKey, path); - } - - function write(string memory jsonKey, string memory path, string memory valueKey) internal { - vm.writeToml(jsonKey, path, valueKey); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/StdUtils.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/StdUtils.sol deleted file mode 100644 index 9321df1430..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/StdUtils.sol +++ /dev/null @@ -1,208 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {IMulticall3} from "./interfaces/IMulticall3.sol"; -import {VmSafe} from "./Vm.sol"; - -abstract contract StdUtils { - /*////////////////////////////////////////////////////////////////////////// - CONSTANTS - //////////////////////////////////////////////////////////////////////////*/ - - IMulticall3 private constant multicall = IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11); - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; - uint256 private constant INT256_MIN_ABS = - 57896044618658097711785492504343953926634992332820282019728792003956564819968; - uint256 private constant SECP256K1_ORDER = - 115792089237316195423570985008687907852837564279074904382605163141518161494337; - uint256 private constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - // Used by default when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. - address private constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - - /*////////////////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////////////////*/ - - function _bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) { - require(min <= max, "StdUtils bound(uint256,uint256,uint256): Max is less than min."); - // If x is between min and max, return x directly. This is to ensure that dictionary values - // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188 - if (x >= min && x <= max) return x; - - uint256 size = max - min + 1; - - // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side. - // This helps ensure coverage of the min/max values. - if (x <= 3 && size > x) return min + x; - if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) return max - (UINT256_MAX - x); - - // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive. - if (x > max) { - uint256 diff = x - max; - uint256 rem = diff % size; - if (rem == 0) return max; - result = min + rem - 1; - } else if (x < min) { - uint256 diff = min - x; - uint256 rem = diff % size; - if (rem == 0) return min; - result = max - rem + 1; - } - } - - function bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) { - result = _bound(x, min, max); - console2_log_StdUtils("Bound result", result); - } - - function _bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) { - require(min <= max, "StdUtils bound(int256,int256,int256): Max is less than min."); - - // Shifting all int256 values to uint256 to use _bound function. The range of two types are: - // int256 : -(2**255) ~ (2**255 - 1) - // uint256: 0 ~ (2**256 - 1) - // So, add 2**255, INT256_MIN_ABS to the integer values. - // - // If the given integer value is -2**255, we cannot use `-uint256(-x)` because of the overflow. - // So, use `~uint256(x) + 1` instead. - uint256 _x = x < 0 ? (INT256_MIN_ABS - ~uint256(x) - 1) : (uint256(x) + INT256_MIN_ABS); - uint256 _min = min < 0 ? (INT256_MIN_ABS - ~uint256(min) - 1) : (uint256(min) + INT256_MIN_ABS); - uint256 _max = max < 0 ? (INT256_MIN_ABS - ~uint256(max) - 1) : (uint256(max) + INT256_MIN_ABS); - - uint256 y = _bound(_x, _min, _max); - - // To move it back to int256 value, subtract INT256_MIN_ABS at here. - result = y < INT256_MIN_ABS ? int256(~(INT256_MIN_ABS - y) + 1) : int256(y - INT256_MIN_ABS); - } - - function bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) { - result = _bound(x, min, max); - console2_log_StdUtils("Bound result", vm.toString(result)); - } - - function boundPrivateKey(uint256 privateKey) internal pure virtual returns (uint256 result) { - result = _bound(privateKey, 1, SECP256K1_ORDER - 1); - } - - function bytesToUint(bytes memory b) internal pure virtual returns (uint256) { - require(b.length <= 32, "StdUtils bytesToUint(bytes): Bytes length exceeds 32."); - return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); - } - - /// @dev Compute the address a contract will be deployed at for a given deployer address and nonce - function computeCreateAddress(address deployer, uint256 nonce) internal pure virtual returns (address) { - console2_log_StdUtils("computeCreateAddress is deprecated. Please use vm.computeCreateAddress instead."); - return vm.computeCreateAddress(deployer, nonce); - } - - function computeCreate2Address(bytes32 salt, bytes32 initcodeHash, address deployer) - internal - pure - virtual - returns (address) - { - console2_log_StdUtils("computeCreate2Address is deprecated. Please use vm.computeCreate2Address instead."); - return vm.computeCreate2Address(salt, initcodeHash, deployer); - } - - /// @dev returns the address of a contract created with CREATE2 using the default CREATE2 deployer - function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) internal pure returns (address) { - console2_log_StdUtils("computeCreate2Address is deprecated. Please use vm.computeCreate2Address instead."); - return vm.computeCreate2Address(salt, initCodeHash); - } - - /// @dev returns the hash of the init code (creation code + no args) used in CREATE2 with no constructor arguments - /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode - function hashInitCode(bytes memory creationCode) internal pure returns (bytes32) { - return hashInitCode(creationCode, ""); - } - - /// @dev returns the hash of the init code (creation code + ABI-encoded args) used in CREATE2 - /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode - /// @param args the ABI-encoded arguments to the constructor of C - function hashInitCode(bytes memory creationCode, bytes memory args) internal pure returns (bytes32) { - return keccak256(abi.encodePacked(creationCode, args)); - } - - // Performs a single call with Multicall3 to query the ERC-20 token balances of the given addresses. - function getTokenBalances(address token, address[] memory addresses) - internal - virtual - returns (uint256[] memory balances) - { - uint256 tokenCodeSize; - assembly { - tokenCodeSize := extcodesize(token) - } - require(tokenCodeSize > 0, "StdUtils getTokenBalances(address,address[]): Token address is not a contract."); - - // ABI encode the aggregate call to Multicall3. - uint256 length = addresses.length; - IMulticall3.Call[] memory calls = new IMulticall3.Call[](length); - for (uint256 i = 0; i < length; ++i) { - // 0x70a08231 = bytes4("balanceOf(address)")) - calls[i] = IMulticall3.Call({target: token, callData: abi.encodeWithSelector(0x70a08231, (addresses[i]))}); - } - - // Make the aggregate call. - (, bytes[] memory returnData) = multicall.aggregate(calls); - - // ABI decode the return data and return the balances. - balances = new uint256[](length); - for (uint256 i = 0; i < length; ++i) { - balances[i] = abi.decode(returnData[i], (uint256)); - } - } - - /*////////////////////////////////////////////////////////////////////////// - PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////////////////*/ - - function addressFromLast20Bytes(bytes32 bytesValue) private pure returns (address) { - return address(uint160(uint256(bytesValue))); - } - - // This section is used to prevent the compilation of console, which shortens the compilation time when console is - // not used elsewhere. We also trick the compiler into letting us make the console log methods as `pure` to avoid - // any breaking changes to function signatures. - function _castLogPayloadViewToPure(function(bytes memory) internal view fnIn) - internal - pure - returns (function(bytes memory) internal pure fnOut) - { - assembly { - fnOut := fnIn - } - } - - function _sendLogPayload(bytes memory payload) internal pure { - _castLogPayloadViewToPure(_sendLogPayloadView)(payload); - } - - function _sendLogPayloadView(bytes memory payload) private view { - uint256 payloadLength = payload.length; - address consoleAddress = CONSOLE2_ADDRESS; - /// @solidity memory-safe-assembly - assembly { - let payloadStart := add(payload, 32) - let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) - } - } - - function console2_log_StdUtils(string memory p0) private pure { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function console2_log_StdUtils(string memory p0, uint256 p1) private pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); - } - - function console2_log_StdUtils(string memory p0, string memory p1) private pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/Test.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/Test.sol deleted file mode 100644 index 11b18f29f3..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/Test.sol +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -// 💬 ABOUT -// Forge Std's default Test. - -// 🧩 MODULES -import {console} from "./console.sol"; -import {console2} from "./console2.sol"; -import {safeconsole} from "./safeconsole.sol"; -import {StdAssertions} from "./StdAssertions.sol"; -import {StdChains} from "./StdChains.sol"; -import {StdCheats} from "./StdCheats.sol"; -import {StdConstants} from "./StdConstants.sol"; -import {stdError} from "./StdError.sol"; -import {StdInvariant} from "./StdInvariant.sol"; -import {stdJson} from "./StdJson.sol"; -import {stdMath} from "./StdMath.sol"; -import {StdStorage, stdStorage} from "./StdStorage.sol"; -import {StdStyle} from "./StdStyle.sol"; -import {stdToml} from "./StdToml.sol"; -import {StdUtils} from "./StdUtils.sol"; -import {Vm} from "./Vm.sol"; - -// 📦 BOILERPLATE -import {TestBase} from "./Base.sol"; - -// ⭐️ TEST -abstract contract Test is TestBase, StdAssertions, StdChains, StdCheats, StdInvariant, StdUtils { - // Note: IS_TEST() must return true. - bool public IS_TEST = true; -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/Vm.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/Vm.sol deleted file mode 100644 index cd883706a1..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/Vm.sol +++ /dev/null @@ -1,2494 +0,0 @@ -// Automatically @generated by scripts/vm.py. Do not modify manually. - -// SPDX-License-Identifier: MIT OR Apache-2.0 -pragma solidity >=0.6.2 <0.9.0; -pragma experimental ABIEncoderV2; - -/// The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may -/// result in Script simulations differing from on-chain execution. It is recommended to only use -/// these cheats in scripts. -interface VmSafe { - /// A modification applied to either `msg.sender` or `tx.origin`. Returned by `readCallers`. - enum CallerMode { - // No caller modification is currently active. - None, - // A one time broadcast triggered by a `vm.broadcast()` call is currently active. - Broadcast, - // A recurrent broadcast triggered by a `vm.startBroadcast()` call is currently active. - RecurrentBroadcast, - // A one time prank triggered by a `vm.prank()` call is currently active. - Prank, - // A recurrent prank triggered by a `vm.startPrank()` call is currently active. - RecurrentPrank - } - - /// The kind of account access that occurred. - enum AccountAccessKind { - // The account was called. - Call, - // The account was called via delegatecall. - DelegateCall, - // The account was called via callcode. - CallCode, - // The account was called via staticcall. - StaticCall, - // The account was created. - Create, - // The account was selfdestructed. - SelfDestruct, - // Synthetic access indicating the current context has resumed after a previous sub-context (AccountAccess). - Resume, - // The account's balance was read. - Balance, - // The account's codesize was read. - Extcodesize, - // The account's codehash was read. - Extcodehash, - // The account's code was copied. - Extcodecopy - } - - /// Forge execution contexts. - enum ForgeContext { - // Test group execution context (test, coverage or snapshot). - TestGroup, - // `forge test` execution context. - Test, - // `forge coverage` execution context. - Coverage, - // `forge snapshot` execution context. - Snapshot, - // Script group execution context (dry run, broadcast or resume). - ScriptGroup, - // `forge script` execution context. - ScriptDryRun, - // `forge script --broadcast` execution context. - ScriptBroadcast, - // `forge script --resume` execution context. - ScriptResume, - // Unknown `forge` execution context. - Unknown - } - - /// The transaction type (`txType`) of the broadcast. - enum BroadcastTxType { - // Represents a CALL broadcast tx. - Call, - // Represents a CREATE broadcast tx. - Create, - // Represents a CREATE2 broadcast tx. - Create2 - } - - /// An Ethereum log. Returned by `getRecordedLogs`. - struct Log { - // The topics of the log, including the signature, if any. - bytes32[] topics; - // The raw data of the log. - bytes data; - // The address of the log's emitter. - address emitter; - } - - /// An RPC URL and its alias. Returned by `rpcUrlStructs`. - struct Rpc { - // The alias of the RPC URL. - string key; - // The RPC URL. - string url; - } - - /// An RPC log object. Returned by `eth_getLogs`. - struct EthGetLogs { - // The address of the log's emitter. - address emitter; - // The topics of the log, including the signature, if any. - bytes32[] topics; - // The raw data of the log. - bytes data; - // The block hash. - bytes32 blockHash; - // The block number. - uint64 blockNumber; - // The transaction hash. - bytes32 transactionHash; - // The transaction index in the block. - uint64 transactionIndex; - // The log index. - uint256 logIndex; - // Whether the log was removed. - bool removed; - } - - /// A single entry in a directory listing. Returned by `readDir`. - struct DirEntry { - // The error message, if any. - string errorMessage; - // The path of the entry. - string path; - // The depth of the entry. - uint64 depth; - // Whether the entry is a directory. - bool isDir; - // Whether the entry is a symlink. - bool isSymlink; - } - - /// Metadata information about a file. - /// This structure is returned from the `fsMetadata` function and represents known - /// metadata about a file such as its permissions, size, modification - /// times, etc. - struct FsMetadata { - // True if this metadata is for a directory. - bool isDir; - // True if this metadata is for a symlink. - bool isSymlink; - // The size of the file, in bytes, this metadata is for. - uint256 length; - // True if this metadata is for a readonly (unwritable) file. - bool readOnly; - // The last modification time listed in this metadata. - uint256 modified; - // The last access time of this metadata. - uint256 accessed; - // The creation time listed in this metadata. - uint256 created; - } - - /// A wallet with a public and private key. - struct Wallet { - // The wallet's address. - address addr; - // The wallet's public key `X`. - uint256 publicKeyX; - // The wallet's public key `Y`. - uint256 publicKeyY; - // The wallet's private key. - uint256 privateKey; - } - - /// The result of a `tryFfi` call. - struct FfiResult { - // The exit code of the call. - int32 exitCode; - // The optionally hex-decoded `stdout` data. - bytes stdout; - // The `stderr` data. - bytes stderr; - } - - /// Information on the chain and fork. - struct ChainInfo { - // The fork identifier. Set to zero if no fork is active. - uint256 forkId; - // The chain ID of the current fork. - uint256 chainId; - } - - /// Information about a blockchain. - struct Chain { - // The chain name. - string name; - // The chain's Chain ID. - uint256 chainId; - // The chain's alias. (i.e. what gets specified in `foundry.toml`). - string chainAlias; - // A default RPC endpoint for this chain. - string rpcUrl; - } - - /// The result of a `stopAndReturnStateDiff` call. - struct AccountAccess { - // The chain and fork the access occurred. - ChainInfo chainInfo; - // The kind of account access that determines what the account is. - // If kind is Call, DelegateCall, StaticCall or CallCode, then the account is the callee. - // If kind is Create, then the account is the newly created account. - // If kind is SelfDestruct, then the account is the selfdestruct recipient. - // If kind is a Resume, then account represents a account context that has resumed. - AccountAccessKind kind; - // The account that was accessed. - // It's either the account created, callee or a selfdestruct recipient for CREATE, CALL or SELFDESTRUCT. - address account; - // What accessed the account. - address accessor; - // If the account was initialized or empty prior to the access. - // An account is considered initialized if it has code, a - // non-zero nonce, or a non-zero balance. - bool initialized; - // The previous balance of the accessed account. - uint256 oldBalance; - // The potential new balance of the accessed account. - // That is, all balance changes are recorded here, even if reverts occurred. - uint256 newBalance; - // Code of the account deployed by CREATE. - bytes deployedCode; - // Value passed along with the account access - uint256 value; - // Input data provided to the CREATE or CALL - bytes data; - // If this access reverted in either the current or parent context. - bool reverted; - // An ordered list of storage accesses made during an account access operation. - StorageAccess[] storageAccesses; - // Call depth traversed during the recording of state differences - uint64 depth; - // The previous nonce of the accessed account. - uint64 oldNonce; - // The new nonce of the accessed account. - uint64 newNonce; - } - - /// The storage accessed during an `AccountAccess`. - struct StorageAccess { - // The account whose storage was accessed. - address account; - // The slot that was accessed. - bytes32 slot; - // If the access was a write. - bool isWrite; - // The previous value of the slot. - bytes32 previousValue; - // The new value of the slot. - bytes32 newValue; - // If the access was reverted. - bool reverted; - } - - /// Gas used. Returned by `lastCallGas`. - struct Gas { - // The gas limit of the call. - uint64 gasLimit; - // The total gas used. - uint64 gasTotalUsed; - // DEPRECATED: The amount of gas used for memory expansion. Ref: - uint64 gasMemoryUsed; - // The amount of gas refunded. - int64 gasRefunded; - // The amount of gas remaining. - uint64 gasRemaining; - } - - /// The result of the `stopDebugTraceRecording` call - struct DebugStep { - // The stack before executing the step of the run. - // stack\[0\] represents the top of the stack. - // and only stack data relevant to the opcode execution is contained. - uint256[] stack; - // The memory input data before executing the step of the run. - // only input data relevant to the opcode execution is contained. - // e.g. for MLOAD, it will have memory\[offset:offset+32\] copied here. - // the offset value can be get by the stack data. - bytes memoryInput; - // The opcode that was accessed. - uint8 opcode; - // The call depth of the step. - uint64 depth; - // Whether the call end up with out of gas error. - bool isOutOfGas; - // The contract address where the opcode is running - address contractAddr; - } - - /// Represents a transaction's broadcast details. - struct BroadcastTxSummary { - // The hash of the transaction that was broadcasted - bytes32 txHash; - // Represent the type of transaction among CALL, CREATE, CREATE2 - BroadcastTxType txType; - // The address of the contract that was called or created. - // This is address of the contract that is created if the txType is CREATE or CREATE2. - address contractAddress; - // The block number the transaction landed in. - uint64 blockNumber; - // Status of the transaction, retrieved from the transaction receipt. - bool success; - } - - /// Holds a signed EIP-7702 authorization for an authority account to delegate to an implementation. - struct SignedDelegation { - // The y-parity of the recovered secp256k1 signature (0 or 1). - uint8 v; - // First 32 bytes of the signature. - bytes32 r; - // Second 32 bytes of the signature. - bytes32 s; - // The current nonce of the authority account at signing time. - // Used to ensure signature can't be replayed after account nonce changes. - uint64 nonce; - // Address of the contract implementation that will be delegated to. - // Gets encoded into delegation code: 0xef0100 || implementation. - address implementation; - } - - /// Represents a "potential" revert reason from a single subsequent call when using `vm.assumeNoReverts`. - /// Reverts that match will result in a FOUNDRY::ASSUME rejection, whereas unmatched reverts will be surfaced - /// as normal. - struct PotentialRevert { - // The allowed origin of the revert opcode; address(0) allows reverts from any address - address reverter; - // When true, only matches on the beginning of the revert data, otherwise, matches on entire revert data - bool partialMatch; - // The data to use to match encountered reverts - bytes revertData; - } - - /// An EIP-2930 access list item. - struct AccessListItem { - // The address to be added in access list. - address target; - // The storage keys to be added in access list. - bytes32[] storageKeys; - } - - // ======== Crypto ======== - - /// Derives a private key from the name, labels the account with that name, and returns the wallet. - function createWallet(string calldata walletLabel) external returns (Wallet memory wallet); - - /// Generates a wallet from the private key and returns the wallet. - function createWallet(uint256 privateKey) external returns (Wallet memory wallet); - - /// Generates a wallet from the private key, labels the account with that name, and returns the wallet. - function createWallet(uint256 privateKey, string calldata walletLabel) external returns (Wallet memory wallet); - - /// Derive a private key from a provided mnemonic string (or mnemonic file path) - /// at the derivation path `m/44'/60'/0'/0/{index}`. - function deriveKey(string calldata mnemonic, uint32 index) external pure returns (uint256 privateKey); - - /// Derive a private key from a provided mnemonic string (or mnemonic file path) - /// at `{derivationPath}{index}`. - function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index) - external - pure - returns (uint256 privateKey); - - /// Derive a private key from a provided mnemonic string (or mnemonic file path) in the specified language - /// at the derivation path `m/44'/60'/0'/0/{index}`. - function deriveKey(string calldata mnemonic, uint32 index, string calldata language) - external - pure - returns (uint256 privateKey); - - /// Derive a private key from a provided mnemonic string (or mnemonic file path) in the specified language - /// at `{derivationPath}{index}`. - function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index, string calldata language) - external - pure - returns (uint256 privateKey); - - /// Derives secp256r1 public key from the provided `privateKey`. - function publicKeyP256(uint256 privateKey) external pure returns (uint256 publicKeyX, uint256 publicKeyY); - - /// Adds a private key to the local forge wallet and returns the address. - function rememberKey(uint256 privateKey) external returns (address keyAddr); - - /// Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. - /// The respective private keys are saved to the local forge wallet for later use and their addresses are returned. - function rememberKeys(string calldata mnemonic, string calldata derivationPath, uint32 count) - external - returns (address[] memory keyAddrs); - - /// Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. - /// The respective private keys are saved to the local forge wallet for later use and their addresses are returned. - function rememberKeys( - string calldata mnemonic, - string calldata derivationPath, - string calldata language, - uint32 count - ) external returns (address[] memory keyAddrs); - - /// Signs data with a `Wallet`. - /// Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the - /// signature's `s` value, and the recovery id `v` in a single bytes32. - /// This format reduces the signature size from 65 to 64 bytes. - function signCompact(Wallet calldata wallet, bytes32 digest) external returns (bytes32 r, bytes32 vs); - - /// Signs `digest` with `privateKey` using the secp256k1 curve. - /// Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the - /// signature's `s` value, and the recovery id `v` in a single bytes32. - /// This format reduces the signature size from 65 to 64 bytes. - function signCompact(uint256 privateKey, bytes32 digest) external pure returns (bytes32 r, bytes32 vs); - - /// Signs `digest` with signer provided to script using the secp256k1 curve. - /// Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the - /// signature's `s` value, and the recovery id `v` in a single bytes32. - /// This format reduces the signature size from 65 to 64 bytes. - /// If `--sender` is provided, the signer with provided address is used, otherwise, - /// if exactly one signer is provided to the script, that signer is used. - /// Raises error if signer passed through `--sender` does not match any unlocked signers or - /// if `--sender` is not provided and not exactly one signer is passed to the script. - function signCompact(bytes32 digest) external pure returns (bytes32 r, bytes32 vs); - - /// Signs `digest` with signer provided to script using the secp256k1 curve. - /// Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the - /// signature's `s` value, and the recovery id `v` in a single bytes32. - /// This format reduces the signature size from 65 to 64 bytes. - /// Raises error if none of the signers passed into the script have provided address. - function signCompact(address signer, bytes32 digest) external pure returns (bytes32 r, bytes32 vs); - - /// Signs `digest` with `privateKey` using the secp256r1 curve. - function signP256(uint256 privateKey, bytes32 digest) external pure returns (bytes32 r, bytes32 s); - - /// Signs data with a `Wallet`. - function sign(Wallet calldata wallet, bytes32 digest) external returns (uint8 v, bytes32 r, bytes32 s); - - /// Signs `digest` with `privateKey` using the secp256k1 curve. - function sign(uint256 privateKey, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); - - /// Signs `digest` with signer provided to script using the secp256k1 curve. - /// If `--sender` is provided, the signer with provided address is used, otherwise, - /// if exactly one signer is provided to the script, that signer is used. - /// Raises error if signer passed through `--sender` does not match any unlocked signers or - /// if `--sender` is not provided and not exactly one signer is passed to the script. - function sign(bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); - - /// Signs `digest` with signer provided to script using the secp256k1 curve. - /// Raises error if none of the signers passed into the script have provided address. - function sign(address signer, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); - - // ======== Environment ======== - - /// Gets the environment variable `name` and parses it as `address`. - /// Reverts if the variable was not found or could not be parsed. - function envAddress(string calldata name) external view returns (address value); - - /// Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envAddress(string calldata name, string calldata delim) external view returns (address[] memory value); - - /// Gets the environment variable `name` and parses it as `bool`. - /// Reverts if the variable was not found or could not be parsed. - function envBool(string calldata name) external view returns (bool value); - - /// Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envBool(string calldata name, string calldata delim) external view returns (bool[] memory value); - - /// Gets the environment variable `name` and parses it as `bytes32`. - /// Reverts if the variable was not found or could not be parsed. - function envBytes32(string calldata name) external view returns (bytes32 value); - - /// Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envBytes32(string calldata name, string calldata delim) external view returns (bytes32[] memory value); - - /// Gets the environment variable `name` and parses it as `bytes`. - /// Reverts if the variable was not found or could not be parsed. - function envBytes(string calldata name) external view returns (bytes memory value); - - /// Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envBytes(string calldata name, string calldata delim) external view returns (bytes[] memory value); - - /// Gets the environment variable `name` and returns true if it exists, else returns false. - function envExists(string calldata name) external view returns (bool result); - - /// Gets the environment variable `name` and parses it as `int256`. - /// Reverts if the variable was not found or could not be parsed. - function envInt(string calldata name) external view returns (int256 value); - - /// Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envInt(string calldata name, string calldata delim) external view returns (int256[] memory value); - - /// Gets the environment variable `name` and parses it as `bool`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, bool defaultValue) external view returns (bool value); - - /// Gets the environment variable `name` and parses it as `uint256`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, uint256 defaultValue) external view returns (uint256 value); - - /// Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, address[] calldata defaultValue) - external - view - returns (address[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, bytes32[] calldata defaultValue) - external - view - returns (bytes32[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, string[] calldata defaultValue) - external - view - returns (string[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, bytes[] calldata defaultValue) - external - view - returns (bytes[] memory value); - - /// Gets the environment variable `name` and parses it as `int256`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, int256 defaultValue) external view returns (int256 value); - - /// Gets the environment variable `name` and parses it as `address`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, address defaultValue) external view returns (address value); - - /// Gets the environment variable `name` and parses it as `bytes32`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, bytes32 defaultValue) external view returns (bytes32 value); - - /// Gets the environment variable `name` and parses it as `string`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata defaultValue) external view returns (string memory value); - - /// Gets the environment variable `name` and parses it as `bytes`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, bytes calldata defaultValue) external view returns (bytes memory value); - - /// Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, bool[] calldata defaultValue) - external - view - returns (bool[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, uint256[] calldata defaultValue) - external - view - returns (uint256[] memory value); - - /// Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. - /// Reverts if the variable could not be parsed. - /// Returns `defaultValue` if the variable was not found. - function envOr(string calldata name, string calldata delim, int256[] calldata defaultValue) - external - view - returns (int256[] memory value); - - /// Gets the environment variable `name` and parses it as `string`. - /// Reverts if the variable was not found or could not be parsed. - function envString(string calldata name) external view returns (string memory value); - - /// Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envString(string calldata name, string calldata delim) external view returns (string[] memory value); - - /// Gets the environment variable `name` and parses it as `uint256`. - /// Reverts if the variable was not found or could not be parsed. - function envUint(string calldata name) external view returns (uint256 value); - - /// Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. - /// Reverts if the variable was not found or could not be parsed. - function envUint(string calldata name, string calldata delim) external view returns (uint256[] memory value); - - /// Returns true if `forge` command was executed in given context. - function isContext(ForgeContext context) external view returns (bool result); - - /// Resolves the env variable placeholders of a given input string. - function resolveEnv(string calldata input) external returns (string memory); - - /// Sets environment variables. - function setEnv(string calldata name, string calldata value) external; - - // ======== EVM ======== - - /// Gets all accessed reads and write slot from a `vm.record` session, for a given address. - function accesses(address target) external view returns (bytes32[] memory readSlots, bytes32[] memory writeSlots); - - /// Gets the address for a given private key. - function addr(uint256 privateKey) external pure returns (address keyAddr); - - /// Gets all the logs according to specified filter. - function eth_getLogs(uint256 fromBlock, uint256 toBlock, address target, bytes32[] calldata topics) - external - view - returns (EthGetLogs[] memory logs); - - /// Gets the current `block.blobbasefee`. - /// You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, - /// and as a result will get optimized out by the compiler. - /// See https://github.com/foundry-rs/foundry/issues/6180 - function getBlobBaseFee() external view returns (uint256 blobBaseFee); - - /// Gets the current `block.number`. - /// You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, - /// and as a result will get optimized out by the compiler. - /// See https://github.com/foundry-rs/foundry/issues/6180 - function getBlockNumber() external view returns (uint256 height); - - /// Gets the current `block.timestamp`. - /// You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, - /// and as a result will get optimized out by the compiler. - /// See https://github.com/foundry-rs/foundry/issues/6180 - function getBlockTimestamp() external view returns (uint256 timestamp); - - /// Gets the current `block.chainid` of the currently selected environment. - /// You should use this instead of `block.chainid` if you use `vm.selectFork` or `vm.createSelectFork`, as `block.chainid` could be assumed - /// to be constant across a transaction, and as a result will get optimized out by the compiler. - /// See https://github.com/foundry-rs/foundry/issues/6180 - function getChainId() external view returns (uint256 blockChainId); - - /// Gets the map key and parent of a mapping at a given slot, for a given address. - function getMappingKeyAndParentOf(address target, bytes32 elementSlot) - external - view - returns (bool found, bytes32 key, bytes32 parent); - - /// Gets the number of elements in the mapping at the given slot, for a given address. - function getMappingLength(address target, bytes32 mappingSlot) external view returns (uint256 length); - - /// Gets the elements at index idx of the mapping at the given slot, for a given address. The - /// index must be less than the length of the mapping (i.e. the number of keys in the mapping). - function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) external view returns (bytes32 value); - - /// Gets the nonce of an account. - function getNonce(address account) external view returns (uint64 nonce); - - /// Get the nonce of a `Wallet`. - function getNonce(Wallet calldata wallet) external view returns (uint64 nonce); - - /// Gets the RLP encoded block header for a given block number. - /// Returns the block header in the same format as `cast block --raw`. - function getRawBlockHeader(uint256 blockNumber) external view returns (bytes memory rlpHeader); - - /// Gets all the recorded logs. - function getRecordedLogs() external view returns (Log[] memory logs); - - /// Returns state diffs from current `vm.startStateDiffRecording` session. - function getStateDiff() external view returns (string memory diff); - - /// Returns state diffs from current `vm.startStateDiffRecording` session, in json format. - function getStateDiffJson() external view returns (string memory diff); - - /// Returns an array of `StorageAccess` from current `vm.stateStateDiffRecording` session - function getStorageAccesses() external view returns (StorageAccess[] memory storageAccesses); - - /// Gets the gas used in the last call from the callee perspective. - function lastCallGas() external view returns (Gas memory gas); - - /// Loads a storage slot from an address. - function load(address target, bytes32 slot) external view returns (bytes32 data); - - /// Pauses gas metering (i.e. gas usage is not counted). Noop if already paused. - function pauseGasMetering() external; - - /// Records all storage reads and writes. Use `accesses` to get the recorded data. - /// Subsequent calls to `record` will clear the previous data. - function record() external; - - /// Record all the transaction logs. - function recordLogs() external; - - /// Reset gas metering (i.e. gas usage is set to gas limit). - function resetGasMetering() external; - - /// Resumes gas metering (i.e. gas usage is counted again). Noop if already on. - function resumeGasMetering() external; - - /// Performs an Ethereum JSON-RPC request to the current fork URL. - function rpc(string calldata method, string calldata params) external returns (bytes memory data); - - /// Performs an Ethereum JSON-RPC request to the given endpoint. - function rpc(string calldata urlOrAlias, string calldata method, string calldata params) - external - returns (bytes memory data); - - /// Records the debug trace during the run. - function startDebugTraceRecording() external; - - /// Starts recording all map SSTOREs for later retrieval. - function startMappingRecording() external; - - /// Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, - /// along with the context of the calls - function startStateDiffRecording() external; - - /// Stop debug trace recording and returns the recorded debug trace. - function stopAndReturnDebugTraceRecording() external returns (DebugStep[] memory step); - - /// Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session. - function stopAndReturnStateDiff() external returns (AccountAccess[] memory accountAccesses); - - /// Stops recording all map SSTOREs for later retrieval and clears the recorded data. - function stopMappingRecording() external; - - /// Stops recording storage reads and writes. - function stopRecord() external; - - // ======== Filesystem ======== - - /// Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. - /// `path` is relative to the project root. - function closeFile(string calldata path) external; - - /// Copies the contents of one file to another. This function will **overwrite** the contents of `to`. - /// On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. - /// Both `from` and `to` are relative to the project root. - function copyFile(string calldata from, string calldata to) external returns (uint64 copied); - - /// Creates a new, empty directory at the provided path. - /// This cheatcode will revert in the following situations, but is not limited to just these cases: - /// - User lacks permissions to modify `path`. - /// - A parent of the given path doesn't exist and `recursive` is false. - /// - `path` already exists and `recursive` is false. - /// `path` is relative to the project root. - function createDir(string calldata path, bool recursive) external; - - /// Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - function deployCode(string calldata artifactPath) external returns (address deployedAddress); - - /// Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - /// Additionally accepts abi-encoded constructor arguments. - function deployCode(string calldata artifactPath, bytes calldata constructorArgs) - external - returns (address deployedAddress); - - /// Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - /// Additionally accepts `msg.value`. - function deployCode(string calldata artifactPath, uint256 value) external returns (address deployedAddress); - - /// Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - /// Additionally accepts abi-encoded constructor arguments and `msg.value`. - function deployCode(string calldata artifactPath, bytes calldata constructorArgs, uint256 value) - external - returns (address deployedAddress); - - /// Deploys a contract from an artifact file, using the CREATE2 salt. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - function deployCode(string calldata artifactPath, bytes32 salt) external returns (address deployedAddress); - - /// Deploys a contract from an artifact file, using the CREATE2 salt. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - /// Additionally accepts abi-encoded constructor arguments. - function deployCode(string calldata artifactPath, bytes calldata constructorArgs, bytes32 salt) - external - returns (address deployedAddress); - - /// Deploys a contract from an artifact file, using the CREATE2 salt. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - /// Additionally accepts `msg.value`. - function deployCode(string calldata artifactPath, uint256 value, bytes32 salt) - external - returns (address deployedAddress); - - /// Deploys a contract from an artifact file, using the CREATE2 salt. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - /// Additionally accepts abi-encoded constructor arguments and `msg.value`. - function deployCode(string calldata artifactPath, bytes calldata constructorArgs, uint256 value, bytes32 salt) - external - returns (address deployedAddress); - - /// Returns true if the given path points to an existing entity, else returns false. - function exists(string calldata path) external view returns (bool result); - - /// Performs a foreign function call via the terminal. - function ffi(string[] calldata commandInput) external returns (bytes memory result); - - /// Given a path, query the file system to get information about a file, directory, etc. - function fsMetadata(string calldata path) external view returns (FsMetadata memory metadata); - - /// Gets the artifact path from code (aka. creation code). - function getArtifactPathByCode(bytes calldata code) external view returns (string memory path); - - /// Gets the artifact path from deployed code (aka. runtime code). - function getArtifactPathByDeployedCode(bytes calldata deployedCode) external view returns (string memory path); - - /// Returns the most recent broadcast for the given contract on `chainId` matching `txType`. - /// For example: - /// The most recent deployment can be fetched by passing `txType` as `CREATE` or `CREATE2`. - /// The most recent call can be fetched by passing `txType` as `CALL`. - function getBroadcast(string calldata contractName, uint64 chainId, BroadcastTxType txType) - external - view - returns (BroadcastTxSummary memory); - - /// Returns all broadcasts for the given contract on `chainId` with the specified `txType`. - /// Sorted such that the most recent broadcast is the first element, and the oldest is the last. i.e descending order of BroadcastTxSummary.blockNumber. - function getBroadcasts(string calldata contractName, uint64 chainId, BroadcastTxType txType) - external - view - returns (BroadcastTxSummary[] memory); - - /// Returns all broadcasts for the given contract on `chainId`. - /// Sorted such that the most recent broadcast is the first element, and the oldest is the last. i.e descending order of BroadcastTxSummary.blockNumber. - function getBroadcasts(string calldata contractName, uint64 chainId) - external - view - returns (BroadcastTxSummary[] memory); - - /// Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - function getCode(string calldata artifactPath) external view returns (bytes memory creationBytecode); - - /// Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the - /// artifact in the form of :: where and parts are optional. - function getDeployedCode(string calldata artifactPath) external view returns (bytes memory runtimeBytecode); - - /// Returns the most recent deployment for the current `chainId`. - function getDeployment(string calldata contractName) external view returns (address deployedAddress); - - /// Returns the most recent deployment for the given contract on `chainId` - function getDeployment(string calldata contractName, uint64 chainId) - external - view - returns (address deployedAddress); - - /// Returns all deployments for the given contract on `chainId` - /// Sorted in descending order of deployment time i.e descending order of BroadcastTxSummary.blockNumber. - /// The most recent deployment is the first element, and the oldest is the last. - function getDeployments(string calldata contractName, uint64 chainId) - external - view - returns (address[] memory deployedAddresses); - - /// Returns true if the path exists on disk and is pointing at a directory, else returns false. - function isDir(string calldata path) external view returns (bool result); - - /// Returns true if the path exists on disk and is pointing at a regular file, else returns false. - function isFile(string calldata path) external view returns (bool result); - - /// Get the path of the current project root. - function projectRoot() external view returns (string memory path); - - /// Prompts the user for a string value in the terminal. - function prompt(string calldata promptText) external returns (string memory input); - - /// Prompts the user for an address in the terminal. - function promptAddress(string calldata promptText) external returns (address); - - /// Prompts the user for a hidden string value in the terminal. - function promptSecret(string calldata promptText) external returns (string memory input); - - /// Prompts the user for hidden uint256 in the terminal (usually pk). - function promptSecretUint(string calldata promptText) external returns (uint256); - - /// Prompts the user for uint256 in the terminal. - function promptUint(string calldata promptText) external returns (uint256); - - /// Reads the directory at the given path recursively, up to `maxDepth`. - /// `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. - /// Follows symbolic links if `followLinks` is true. - function readDir(string calldata path) external view returns (DirEntry[] memory entries); - - /// See `readDir(string)`. - function readDir(string calldata path, uint64 maxDepth) external view returns (DirEntry[] memory entries); - - /// See `readDir(string)`. - function readDir(string calldata path, uint64 maxDepth, bool followLinks) - external - view - returns (DirEntry[] memory entries); - - /// Reads the entire content of file to string. `path` is relative to the project root. - function readFile(string calldata path) external view returns (string memory data); - - /// Reads the entire content of file as binary. `path` is relative to the project root. - function readFileBinary(string calldata path) external view returns (bytes memory data); - - /// Reads next line of file to string. - function readLine(string calldata path) external view returns (string memory line); - - /// Reads a symbolic link, returning the path that the link points to. - /// This cheatcode will revert in the following situations, but is not limited to just these cases: - /// - `path` is not a symbolic link. - /// - `path` does not exist. - function readLink(string calldata linkPath) external view returns (string memory targetPath); - - /// Removes a directory at the provided path. - /// This cheatcode will revert in the following situations, but is not limited to just these cases: - /// - `path` doesn't exist. - /// - `path` isn't a directory. - /// - User lacks permissions to modify `path`. - /// - The directory is not empty and `recursive` is false. - /// `path` is relative to the project root. - function removeDir(string calldata path, bool recursive) external; - - /// Removes a file from the filesystem. - /// This cheatcode will revert in the following situations, but is not limited to just these cases: - /// - `path` points to a directory. - /// - The file doesn't exist. - /// - The user lacks permissions to remove the file. - /// `path` is relative to the project root. - function removeFile(string calldata path) external; - - /// Performs a foreign function call via terminal and returns the exit code, stdout, and stderr. - function tryFfi(string[] calldata commandInput) external returns (FfiResult memory result); - - /// Returns the time since unix epoch in milliseconds. - function unixTime() external view returns (uint256 milliseconds); - - /// Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. - /// `path` is relative to the project root. - function writeFile(string calldata path, string calldata data) external; - - /// Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. - /// `path` is relative to the project root. - function writeFileBinary(string calldata path, bytes calldata data) external; - - /// Writes line to file, creating a file if it does not exist. - /// `path` is relative to the project root. - function writeLine(string calldata path, string calldata data) external; - - // ======== JSON ======== - - /// Checks if `key` exists in a JSON object. - function keyExistsJson(string calldata json, string calldata key) external view returns (bool); - - /// Parses a string of JSON data at `key` and coerces it to `address`. - function parseJsonAddress(string calldata json, string calldata key) external pure returns (address); - - /// Parses a string of JSON data at `key` and coerces it to `address[]`. - function parseJsonAddressArray(string calldata json, string calldata key) - external - pure - returns (address[] memory); - - /// Parses a string of JSON data at `key` and coerces it to `bool`. - function parseJsonBool(string calldata json, string calldata key) external pure returns (bool); - - /// Parses a string of JSON data at `key` and coerces it to `bool[]`. - function parseJsonBoolArray(string calldata json, string calldata key) external pure returns (bool[] memory); - - /// Parses a string of JSON data at `key` and coerces it to `bytes`. - function parseJsonBytes(string calldata json, string calldata key) external pure returns (bytes memory); - - /// Parses a string of JSON data at `key` and coerces it to `bytes32`. - function parseJsonBytes32(string calldata json, string calldata key) external pure returns (bytes32); - - /// Parses a string of JSON data at `key` and coerces it to `bytes32[]`. - function parseJsonBytes32Array(string calldata json, string calldata key) - external - pure - returns (bytes32[] memory); - - /// Parses a string of JSON data at `key` and coerces it to `bytes[]`. - function parseJsonBytesArray(string calldata json, string calldata key) external pure returns (bytes[] memory); - - /// Parses a string of JSON data at `key` and coerces it to `int256`. - function parseJsonInt(string calldata json, string calldata key) external pure returns (int256); - - /// Parses a string of JSON data at `key` and coerces it to `int256[]`. - function parseJsonIntArray(string calldata json, string calldata key) external pure returns (int256[] memory); - - /// Returns an array of all the keys in a JSON object. - function parseJsonKeys(string calldata json, string calldata key) external pure returns (string[] memory keys); - - /// Parses a string of JSON data at `key` and coerces it to `string`. - function parseJsonString(string calldata json, string calldata key) external pure returns (string memory); - - /// Parses a string of JSON data at `key` and coerces it to `string[]`. - function parseJsonStringArray(string calldata json, string calldata key) external pure returns (string[] memory); - - /// Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`. - function parseJsonTypeArray(string calldata json, string calldata key, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of JSON data and coerces it to type corresponding to `typeDescription`. - function parseJsonType(string calldata json, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`. - function parseJsonType(string calldata json, string calldata key, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of JSON data at `key` and coerces it to `uint256`. - function parseJsonUint(string calldata json, string calldata key) external pure returns (uint256); - - /// Parses a string of JSON data at `key` and coerces it to `uint256[]`. - function parseJsonUintArray(string calldata json, string calldata key) external pure returns (uint256[] memory); - - /// ABI-encodes a JSON object. - function parseJson(string calldata json) external pure returns (bytes memory abiEncodedData); - - /// ABI-encodes a JSON object at `key`. - function parseJson(string calldata json, string calldata key) external pure returns (bytes memory abiEncodedData); - - /// See `serializeJson`. - function serializeAddress(string calldata objectKey, string calldata valueKey, address value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeAddress(string calldata objectKey, string calldata valueKey, address[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBool(string calldata objectKey, string calldata valueKey, bool value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBool(string calldata objectKey, string calldata valueKey, bool[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32 value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBytes(string calldata objectKey, string calldata valueKey, bytes calldata value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeBytes(string calldata objectKey, string calldata valueKey, bytes[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeInt(string calldata objectKey, string calldata valueKey, int256 value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeInt(string calldata objectKey, string calldata valueKey, int256[] calldata values) - external - returns (string memory json); - - /// Serializes a key and value to a JSON object stored in-memory that can be later written to a file. - /// Returns the stringified version of the specific JSON file up to that moment. - function serializeJson(string calldata objectKey, string calldata value) external returns (string memory json); - - /// See `serializeJson`. - function serializeJsonType(string calldata typeDescription, bytes calldata value) - external - pure - returns (string memory json); - - /// See `serializeJson`. - function serializeJsonType( - string calldata objectKey, - string calldata valueKey, - string calldata typeDescription, - bytes calldata value - ) external returns (string memory json); - - /// See `serializeJson`. - function serializeString(string calldata objectKey, string calldata valueKey, string calldata value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeString(string calldata objectKey, string calldata valueKey, string[] calldata values) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeUintToHex(string calldata objectKey, string calldata valueKey, uint256 value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeUint(string calldata objectKey, string calldata valueKey, uint256 value) - external - returns (string memory json); - - /// See `serializeJson`. - function serializeUint(string calldata objectKey, string calldata valueKey, uint256[] calldata values) - external - returns (string memory json); - - /// Write a serialized JSON object to a file. If the file exists, it will be overwritten. - function writeJson(string calldata json, string calldata path) external; - - /// Write a serialized JSON object to an **existing** JSON file, replacing a value with key = - /// This is useful to replace a specific value of a JSON file, without having to parse the entire thing. - /// This cheatcode will create new keys if they didn't previously exist. - function writeJson(string calldata json, string calldata path, string calldata valueKey) external; - - /// Checks if `key` exists in a JSON object - /// `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions. - function keyExists(string calldata json, string calldata key) external view returns (bool); - - // ======== Scripting ======== - - /// Attach an EIP-4844 blob to the next call - function attachBlob(bytes calldata blob) external; - - /// Designate the next call as an EIP-7702 transaction - function attachDelegation(SignedDelegation calldata signedDelegation) external; - - /// Designate the next call as an EIP-7702 transaction, with optional cross-chain validity. - function attachDelegation(SignedDelegation calldata signedDelegation, bool crossChain) external; - - /// Takes a signed transaction and broadcasts it to the network. - function broadcastRawTransaction(bytes calldata data) external; - - /// Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. - /// Broadcasting address is determined by checking the following in order: - /// 1. If `--sender` argument was provided, that address is used. - /// 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. - /// 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used. - function broadcast() external; - - /// Has the next call (at this call depth only) create a transaction with the address provided - /// as the sender that can later be signed and sent onchain. - function broadcast(address signer) external; - - /// Has the next call (at this call depth only) create a transaction with the private key - /// provided as the sender that can later be signed and sent onchain. - function broadcast(uint256 privateKey) external; - - /// Returns addresses of available unlocked wallets in the script environment. - function getWallets() external view returns (address[] memory wallets); - - /// Sign an EIP-7702 authorization and designate the next call as an EIP-7702 transaction - function signAndAttachDelegation(address implementation, uint256 privateKey) - external - returns (SignedDelegation memory signedDelegation); - - /// Sign an EIP-7702 authorization and designate the next call as an EIP-7702 transaction for specific nonce - function signAndAttachDelegation(address implementation, uint256 privateKey, uint64 nonce) - external - returns (SignedDelegation memory signedDelegation); - - /// Sign an EIP-7702 authorization and designate the next call as an EIP-7702 transaction, with optional cross-chain validity. - function signAndAttachDelegation(address implementation, uint256 privateKey, bool crossChain) - external - returns (SignedDelegation memory signedDelegation); - - /// Sign an EIP-7702 authorization for delegation - function signDelegation(address implementation, uint256 privateKey) - external - returns (SignedDelegation memory signedDelegation); - - /// Sign an EIP-7702 authorization for delegation for specific nonce - function signDelegation(address implementation, uint256 privateKey, uint64 nonce) - external - returns (SignedDelegation memory signedDelegation); - - /// Sign an EIP-7702 authorization for delegation, with optional cross-chain validity. - function signDelegation(address implementation, uint256 privateKey, bool crossChain) - external - returns (SignedDelegation memory signedDelegation); - - /// Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. - /// Broadcasting address is determined by checking the following in order: - /// 1. If `--sender` argument was provided, that address is used. - /// 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. - /// 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used. - function startBroadcast() external; - - /// Has all subsequent calls (at this call depth only) create transactions with the address - /// provided that can later be signed and sent onchain. - function startBroadcast(address signer) external; - - /// Has all subsequent calls (at this call depth only) create transactions with the private key - /// provided that can later be signed and sent onchain. - function startBroadcast(uint256 privateKey) external; - - /// Stops collecting onchain transactions. - function stopBroadcast() external; - - // ======== String ======== - - /// Returns true if `search` is found in `subject`, false otherwise. - function contains(string calldata subject, string calldata search) external pure returns (bool result); - - /// Returns the index of the first occurrence of a `key` in an `input` string. - /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. - /// Returns 0 in case of an empty `key`. - function indexOf(string calldata input, string calldata key) external pure returns (uint256); - - /// Parses the given `string` into an `address`. - function parseAddress(string calldata stringifiedValue) external pure returns (address parsedValue); - - /// Parses the given `string` into a `bool`. - function parseBool(string calldata stringifiedValue) external pure returns (bool parsedValue); - - /// Parses the given `string` into `bytes`. - function parseBytes(string calldata stringifiedValue) external pure returns (bytes memory parsedValue); - - /// Parses the given `string` into a `bytes32`. - function parseBytes32(string calldata stringifiedValue) external pure returns (bytes32 parsedValue); - - /// Parses the given `string` into a `int256`. - function parseInt(string calldata stringifiedValue) external pure returns (int256 parsedValue); - - /// Parses the given `string` into a `uint256`. - function parseUint(string calldata stringifiedValue) external pure returns (uint256 parsedValue); - - /// Replaces occurrences of `from` in the given `string` with `to`. - function replace(string calldata input, string calldata from, string calldata to) - external - pure - returns (string memory output); - - /// Splits the given `string` into an array of strings divided by the `delimiter`. - function split(string calldata input, string calldata delimiter) external pure returns (string[] memory outputs); - - /// Converts the given `string` value to Lowercase. - function toLowercase(string calldata input) external pure returns (string memory output); - - /// Converts the given value to a `string`. - function toString(address value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(bytes calldata value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(bytes32 value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(bool value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(uint256 value) external pure returns (string memory stringifiedValue); - - /// Converts the given value to a `string`. - function toString(int256 value) external pure returns (string memory stringifiedValue); - - /// Converts the given `string` value to Uppercase. - function toUppercase(string calldata input) external pure returns (string memory output); - - /// Trims leading and trailing whitespace from the given `string` value. - function trim(string calldata input) external pure returns (string memory output); - - // ======== Testing ======== - - /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. - /// Formats values with decimals in failure message. - function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertApproxEqAbsDecimal( - uint256 left, - uint256 right, - uint256 maxDelta, - uint256 decimals, - string calldata error - ) external pure; - - /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. - /// Formats values with decimals in failure message. - function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertApproxEqAbsDecimal( - int256 left, - int256 right, - uint256 maxDelta, - uint256 decimals, - string calldata error - ) external pure; - - /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. - function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) external pure; - - /// Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. - /// Includes error message into revert string on failure. - function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string calldata error) external pure; - - /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. - function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) external pure; - - /// Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. - /// Includes error message into revert string on failure. - function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string calldata error) external pure; - - /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Formats values with decimals in failure message. - function assertApproxEqRelDecimal(uint256 left, uint256 right, uint256 maxPercentDelta, uint256 decimals) - external - pure; - - /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertApproxEqRelDecimal( - uint256 left, - uint256 right, - uint256 maxPercentDelta, - uint256 decimals, - string calldata error - ) external pure; - - /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Formats values with decimals in failure message. - function assertApproxEqRelDecimal(int256 left, int256 right, uint256 maxPercentDelta, uint256 decimals) - external - pure; - - /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertApproxEqRelDecimal( - int256 left, - int256 right, - uint256 maxPercentDelta, - uint256 decimals, - string calldata error - ) external pure; - - /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta) external pure; - - /// Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Includes error message into revert string on failure. - function assertApproxEqRel(uint256 left, uint256 right, uint256 maxPercentDelta, string calldata error) - external - pure; - - /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) external pure; - - /// Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. - /// `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% - /// Includes error message into revert string on failure. - function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta, string calldata error) - external - pure; - - /// Asserts that two `uint256` values are equal, formatting them with decimals in failure message. - function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Asserts that two `uint256` values are equal, formatting them with decimals in failure message. - /// Includes error message into revert string on failure. - function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Asserts that two `int256` values are equal, formatting them with decimals in failure message. - function assertEqDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Asserts that two `int256` values are equal, formatting them with decimals in failure message. - /// Includes error message into revert string on failure. - function assertEqDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Asserts that two `bool` values are equal. - function assertEq(bool left, bool right) external pure; - - /// Asserts that two `bool` values are equal and includes error message into revert string on failure. - function assertEq(bool left, bool right, string calldata error) external pure; - - /// Asserts that two `string` values are equal. - function assertEq(string calldata left, string calldata right) external pure; - - /// Asserts that two `string` values are equal and includes error message into revert string on failure. - function assertEq(string calldata left, string calldata right, string calldata error) external pure; - - /// Asserts that two `bytes` values are equal. - function assertEq(bytes calldata left, bytes calldata right) external pure; - - /// Asserts that two `bytes` values are equal and includes error message into revert string on failure. - function assertEq(bytes calldata left, bytes calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bool` values are equal. - function assertEq(bool[] calldata left, bool[] calldata right) external pure; - - /// Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure. - function assertEq(bool[] calldata left, bool[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `uint256 values are equal. - function assertEq(uint256[] calldata left, uint256[] calldata right) external pure; - - /// Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure. - function assertEq(uint256[] calldata left, uint256[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `int256` values are equal. - function assertEq(int256[] calldata left, int256[] calldata right) external pure; - - /// Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure. - function assertEq(int256[] calldata left, int256[] calldata right, string calldata error) external pure; - - /// Asserts that two `uint256` values are equal. - function assertEq(uint256 left, uint256 right) external pure; - - /// Asserts that two arrays of `address` values are equal. - function assertEq(address[] calldata left, address[] calldata right) external pure; - - /// Asserts that two arrays of `address` values are equal and includes error message into revert string on failure. - function assertEq(address[] calldata left, address[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bytes32` values are equal. - function assertEq(bytes32[] calldata left, bytes32[] calldata right) external pure; - - /// Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure. - function assertEq(bytes32[] calldata left, bytes32[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `string` values are equal. - function assertEq(string[] calldata left, string[] calldata right) external pure; - - /// Asserts that two arrays of `string` values are equal and includes error message into revert string on failure. - function assertEq(string[] calldata left, string[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bytes` values are equal. - function assertEq(bytes[] calldata left, bytes[] calldata right) external pure; - - /// Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure. - function assertEq(bytes[] calldata left, bytes[] calldata right, string calldata error) external pure; - - /// Asserts that two `uint256` values are equal and includes error message into revert string on failure. - function assertEq(uint256 left, uint256 right, string calldata error) external pure; - - /// Asserts that two `int256` values are equal. - function assertEq(int256 left, int256 right) external pure; - - /// Asserts that two `int256` values are equal and includes error message into revert string on failure. - function assertEq(int256 left, int256 right, string calldata error) external pure; - - /// Asserts that two `address` values are equal. - function assertEq(address left, address right) external pure; - - /// Asserts that two `address` values are equal and includes error message into revert string on failure. - function assertEq(address left, address right, string calldata error) external pure; - - /// Asserts that two `bytes32` values are equal. - function assertEq(bytes32 left, bytes32 right) external pure; - - /// Asserts that two `bytes32` values are equal and includes error message into revert string on failure. - function assertEq(bytes32 left, bytes32 right, string calldata error) external pure; - - /// Asserts that the given condition is false. - function assertFalse(bool condition) external pure; - - /// Asserts that the given condition is false and includes error message into revert string on failure. - function assertFalse(bool condition, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than or equal to second. - /// Formats values with decimals in failure message. - function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than or equal to second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be greater than or equal to second. - /// Formats values with decimals in failure message. - function assertGeDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects first value to be greater than or equal to second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertGeDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than or equal to second. - function assertGe(uint256 left, uint256 right) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than or equal to second. - /// Includes error message into revert string on failure. - function assertGe(uint256 left, uint256 right, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be greater than or equal to second. - function assertGe(int256 left, int256 right) external pure; - - /// Compares two `int256` values. Expects first value to be greater than or equal to second. - /// Includes error message into revert string on failure. - function assertGe(int256 left, int256 right, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than second. - /// Formats values with decimals in failure message. - function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be greater than second. - /// Formats values with decimals in failure message. - function assertGtDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects first value to be greater than second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertGtDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than second. - function assertGt(uint256 left, uint256 right) external pure; - - /// Compares two `uint256` values. Expects first value to be greater than second. - /// Includes error message into revert string on failure. - function assertGt(uint256 left, uint256 right, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be greater than second. - function assertGt(int256 left, int256 right) external pure; - - /// Compares two `int256` values. Expects first value to be greater than second. - /// Includes error message into revert string on failure. - function assertGt(int256 left, int256 right, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be less than or equal to second. - /// Formats values with decimals in failure message. - function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects first value to be less than or equal to second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be less than or equal to second. - /// Formats values with decimals in failure message. - function assertLeDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects first value to be less than or equal to second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertLeDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be less than or equal to second. - function assertLe(uint256 left, uint256 right) external pure; - - /// Compares two `uint256` values. Expects first value to be less than or equal to second. - /// Includes error message into revert string on failure. - function assertLe(uint256 left, uint256 right, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be less than or equal to second. - function assertLe(int256 left, int256 right) external pure; - - /// Compares two `int256` values. Expects first value to be less than or equal to second. - /// Includes error message into revert string on failure. - function assertLe(int256 left, int256 right, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be less than second. - /// Formats values with decimals in failure message. - function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Compares two `uint256` values. Expects first value to be less than second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be less than second. - /// Formats values with decimals in failure message. - function assertLtDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Compares two `int256` values. Expects first value to be less than second. - /// Formats values with decimals in failure message. Includes error message into revert string on failure. - function assertLtDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Compares two `uint256` values. Expects first value to be less than second. - function assertLt(uint256 left, uint256 right) external pure; - - /// Compares two `uint256` values. Expects first value to be less than second. - /// Includes error message into revert string on failure. - function assertLt(uint256 left, uint256 right, string calldata error) external pure; - - /// Compares two `int256` values. Expects first value to be less than second. - function assertLt(int256 left, int256 right) external pure; - - /// Compares two `int256` values. Expects first value to be less than second. - /// Includes error message into revert string on failure. - function assertLt(int256 left, int256 right, string calldata error) external pure; - - /// Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. - function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) external pure; - - /// Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. - /// Includes error message into revert string on failure. - function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string calldata error) external pure; - - /// Asserts that two `int256` values are not equal, formatting them with decimals in failure message. - function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) external pure; - - /// Asserts that two `int256` values are not equal, formatting them with decimals in failure message. - /// Includes error message into revert string on failure. - function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string calldata error) external pure; - - /// Asserts that two `bool` values are not equal. - function assertNotEq(bool left, bool right) external pure; - - /// Asserts that two `bool` values are not equal and includes error message into revert string on failure. - function assertNotEq(bool left, bool right, string calldata error) external pure; - - /// Asserts that two `string` values are not equal. - function assertNotEq(string calldata left, string calldata right) external pure; - - /// Asserts that two `string` values are not equal and includes error message into revert string on failure. - function assertNotEq(string calldata left, string calldata right, string calldata error) external pure; - - /// Asserts that two `bytes` values are not equal. - function assertNotEq(bytes calldata left, bytes calldata right) external pure; - - /// Asserts that two `bytes` values are not equal and includes error message into revert string on failure. - function assertNotEq(bytes calldata left, bytes calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bool` values are not equal. - function assertNotEq(bool[] calldata left, bool[] calldata right) external pure; - - /// Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure. - function assertNotEq(bool[] calldata left, bool[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `uint256` values are not equal. - function assertNotEq(uint256[] calldata left, uint256[] calldata right) external pure; - - /// Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure. - function assertNotEq(uint256[] calldata left, uint256[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `int256` values are not equal. - function assertNotEq(int256[] calldata left, int256[] calldata right) external pure; - - /// Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure. - function assertNotEq(int256[] calldata left, int256[] calldata right, string calldata error) external pure; - - /// Asserts that two `uint256` values are not equal. - function assertNotEq(uint256 left, uint256 right) external pure; - - /// Asserts that two arrays of `address` values are not equal. - function assertNotEq(address[] calldata left, address[] calldata right) external pure; - - /// Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure. - function assertNotEq(address[] calldata left, address[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bytes32` values are not equal. - function assertNotEq(bytes32[] calldata left, bytes32[] calldata right) external pure; - - /// Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure. - function assertNotEq(bytes32[] calldata left, bytes32[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `string` values are not equal. - function assertNotEq(string[] calldata left, string[] calldata right) external pure; - - /// Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure. - function assertNotEq(string[] calldata left, string[] calldata right, string calldata error) external pure; - - /// Asserts that two arrays of `bytes` values are not equal. - function assertNotEq(bytes[] calldata left, bytes[] calldata right) external pure; - - /// Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure. - function assertNotEq(bytes[] calldata left, bytes[] calldata right, string calldata error) external pure; - - /// Asserts that two `uint256` values are not equal and includes error message into revert string on failure. - function assertNotEq(uint256 left, uint256 right, string calldata error) external pure; - - /// Asserts that two `int256` values are not equal. - function assertNotEq(int256 left, int256 right) external pure; - - /// Asserts that two `int256` values are not equal and includes error message into revert string on failure. - function assertNotEq(int256 left, int256 right, string calldata error) external pure; - - /// Asserts that two `address` values are not equal. - function assertNotEq(address left, address right) external pure; - - /// Asserts that two `address` values are not equal and includes error message into revert string on failure. - function assertNotEq(address left, address right, string calldata error) external pure; - - /// Asserts that two `bytes32` values are not equal. - function assertNotEq(bytes32 left, bytes32 right) external pure; - - /// Asserts that two `bytes32` values are not equal and includes error message into revert string on failure. - function assertNotEq(bytes32 left, bytes32 right, string calldata error) external pure; - - /// Asserts that the given condition is true. - function assertTrue(bool condition) external pure; - - /// Asserts that the given condition is true and includes error message into revert string on failure. - function assertTrue(bool condition, string calldata error) external pure; - - /// If the condition is false, discard this run's fuzz inputs and generate new ones. - function assume(bool condition) external pure; - - /// Discard this run's fuzz inputs and generate new ones if next call reverted. - function assumeNoRevert() external pure; - - /// Discard this run's fuzz inputs and generate new ones if next call reverts with the potential revert parameters. - function assumeNoRevert(PotentialRevert calldata potentialRevert) external pure; - - /// Discard this run's fuzz inputs and generate new ones if next call reverts with the any of the potential revert parameters. - function assumeNoRevert(PotentialRevert[] calldata potentialReverts) external pure; - - /// Writes a breakpoint to jump to in the debugger. - function breakpoint(string calldata char) external pure; - - /// Writes a conditional breakpoint to jump to in the debugger. - function breakpoint(string calldata char, bool value) external pure; - - /// Returns true if the current Foundry version is greater than or equal to the given version. - /// The given version string must be in the format `major.minor.patch`. - /// This is equivalent to `foundryVersionCmp(version) >= 0`. - function foundryVersionAtLeast(string calldata version) external view returns (bool); - - /// Compares the current Foundry version with the given version string. - /// The given version string must be in the format `major.minor.patch`. - /// Returns: - /// -1 if current Foundry version is less than the given version - /// 0 if current Foundry version equals the given version - /// 1 if current Foundry version is greater than the given version - /// This result can then be used with a comparison operator against `0`. - /// For example, to check if the current Foundry version is greater than or equal to `1.0.0`: - /// `if (foundryVersionCmp("1.0.0") >= 0) { ... }` - function foundryVersionCmp(string calldata version) external view returns (int256); - - /// Returns a Chain struct for specific alias - function getChain(string calldata chainAlias) external view returns (Chain memory chain); - - /// Returns a Chain struct for specific chainId - function getChain(uint256 chainId) external view returns (Chain memory chain); - - /// Returns the Foundry version. - /// Format: -+.. - /// Sample output: 0.3.0-nightly+3cb96bde9b.1737036656.debug - /// Note: Build timestamps may vary slightly across platforms due to separate CI jobs. - /// For reliable version comparisons, use UNIX format (e.g., >= 1700000000) - /// to compare timestamps while ignoring minor time differences. - function getFoundryVersion() external view returns (string memory version); - - /// Returns the RPC url for the given alias. - function rpcUrl(string calldata rpcAlias) external view returns (string memory json); - - /// Returns all rpc urls and their aliases as structs. - function rpcUrlStructs() external view returns (Rpc[] memory urls); - - /// Returns all rpc urls and their aliases `[alias, url][]`. - function rpcUrls() external view returns (string[2][] memory urls); - - /// Suspends execution of the main thread for `duration` milliseconds. - function sleep(uint256 duration) external; - - // ======== Toml ======== - - /// Checks if `key` exists in a TOML table. - function keyExistsToml(string calldata toml, string calldata key) external view returns (bool); - - /// Parses a string of TOML data at `key` and coerces it to `address`. - function parseTomlAddress(string calldata toml, string calldata key) external pure returns (address); - - /// Parses a string of TOML data at `key` and coerces it to `address[]`. - function parseTomlAddressArray(string calldata toml, string calldata key) - external - pure - returns (address[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `bool`. - function parseTomlBool(string calldata toml, string calldata key) external pure returns (bool); - - /// Parses a string of TOML data at `key` and coerces it to `bool[]`. - function parseTomlBoolArray(string calldata toml, string calldata key) external pure returns (bool[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `bytes`. - function parseTomlBytes(string calldata toml, string calldata key) external pure returns (bytes memory); - - /// Parses a string of TOML data at `key` and coerces it to `bytes32`. - function parseTomlBytes32(string calldata toml, string calldata key) external pure returns (bytes32); - - /// Parses a string of TOML data at `key` and coerces it to `bytes32[]`. - function parseTomlBytes32Array(string calldata toml, string calldata key) - external - pure - returns (bytes32[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `bytes[]`. - function parseTomlBytesArray(string calldata toml, string calldata key) external pure returns (bytes[] memory); - - /// Parses a string of TOML data at `key` and coerces it to `int256`. - function parseTomlInt(string calldata toml, string calldata key) external pure returns (int256); - - /// Parses a string of TOML data at `key` and coerces it to `int256[]`. - function parseTomlIntArray(string calldata toml, string calldata key) external pure returns (int256[] memory); - - /// Returns an array of all the keys in a TOML table. - function parseTomlKeys(string calldata toml, string calldata key) external pure returns (string[] memory keys); - - /// Parses a string of TOML data at `key` and coerces it to `string`. - function parseTomlString(string calldata toml, string calldata key) external pure returns (string memory); - - /// Parses a string of TOML data at `key` and coerces it to `string[]`. - function parseTomlStringArray(string calldata toml, string calldata key) external pure returns (string[] memory); - - /// Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`. - function parseTomlTypeArray(string calldata toml, string calldata key, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of TOML data and coerces it to type corresponding to `typeDescription`. - function parseTomlType(string calldata toml, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`. - function parseTomlType(string calldata toml, string calldata key, string calldata typeDescription) - external - pure - returns (bytes memory); - - /// Parses a string of TOML data at `key` and coerces it to `uint256`. - function parseTomlUint(string calldata toml, string calldata key) external pure returns (uint256); - - /// Parses a string of TOML data at `key` and coerces it to `uint256[]`. - function parseTomlUintArray(string calldata toml, string calldata key) external pure returns (uint256[] memory); - - /// ABI-encodes a TOML table. - function parseToml(string calldata toml) external pure returns (bytes memory abiEncodedData); - - /// ABI-encodes a TOML table at `key`. - function parseToml(string calldata toml, string calldata key) external pure returns (bytes memory abiEncodedData); - - /// Takes serialized JSON, converts to TOML and write a serialized TOML to a file. - function writeToml(string calldata json, string calldata path) external; - - /// Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = - /// This is useful to replace a specific value of a TOML file, without having to parse the entire thing. - /// This cheatcode will create new keys if they didn't previously exist. - function writeToml(string calldata json, string calldata path, string calldata valueKey) external; - - // ======== Utilities ======== - - /// Returns an uint256 value bounded in given range and different from the current one. - function bound(uint256 current, uint256 min, uint256 max) external view returns (uint256); - - /// Returns an int256 value bounded in given range and different from the current one. - function bound(int256 current, int256 min, int256 max) external view returns (int256); - - /// Compute the address of a contract created with CREATE2 using the given CREATE2 deployer. - function computeCreate2Address(bytes32 salt, bytes32 initCodeHash, address deployer) - external - pure - returns (address); - - /// Compute the address of a contract created with CREATE2 using the default CREATE2 deployer. - function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) external pure returns (address); - - /// Compute the address a contract will be deployed at for a given deployer address and nonce. - function computeCreateAddress(address deployer, uint256 nonce) external pure returns (address); - - /// Utility cheatcode to copy storage of `from` contract to another `to` contract. - function copyStorage(address from, address to) external; - - /// Generates the struct hash of the canonical EIP-712 type representation and its abi-encoded data. - /// Supports 2 different inputs: - /// 1. Name of the type (i.e. "PermitSingle"): - /// * requires previous binding generation with `forge bind-json`. - /// * bindings will be retrieved from the path configured in `foundry.toml`. - /// 2. String representation of the type (i.e. "Foo(Bar bar) Bar(uint256 baz)"). - /// * Note: the cheatcode will use the canonical type even if the input is malformated - /// with the wrong order of elements or with extra whitespaces. - function eip712HashStruct(string calldata typeNameOrDefinition, bytes calldata abiEncodedData) - external - pure - returns (bytes32 typeHash); - - /// Generates the struct hash of the canonical EIP-712 type representation and its abi-encoded data. - /// Requires previous binding generation with `forge bind-json`. - /// Params: - /// * `bindingsPath`: path where the output of `forge bind-json` is stored. - /// * `typeName`: Name of the type (i.e. "PermitSingle"). - /// * `abiEncodedData`: ABI-encoded data for the struct that is being hashed. - function eip712HashStruct(string calldata bindingsPath, string calldata typeName, bytes calldata abiEncodedData) - external - pure - returns (bytes32 typeHash); - - /// Generates the hash of the canonical EIP-712 type representation. - /// Supports 2 different inputs: - /// 1. Name of the type (i.e. "Transaction"): - /// * requires previous binding generation with `forge bind-json`. - /// * bindings will be retrieved from the path configured in `foundry.toml`. - /// 2. String representation of the type (i.e. "Foo(Bar bar) Bar(uint256 baz)"). - /// * Note: the cheatcode will output the canonical type even if the input is malformated - /// with the wrong order of elements or with extra whitespaces. - function eip712HashType(string calldata typeNameOrDefinition) external pure returns (bytes32 typeHash); - - /// Generates the hash of the canonical EIP-712 type representation. - /// Requires previous binding generation with `forge bind-json`. - /// Params: - /// * `bindingsPath`: path where the output of `forge bind-json` is stored. - /// * `typeName`: Name of the type (i.e. "Transaction"). - function eip712HashType(string calldata bindingsPath, string calldata typeName) - external - pure - returns (bytes32 typeHash); - - /// Generates a ready-to-sign digest of human-readable typed data following the EIP-712 standard. - function eip712HashTypedData(string calldata jsonData) external pure returns (bytes32 digest); - - /// Returns ENS namehash for provided string. - function ensNamehash(string calldata name) external pure returns (bytes32); - - /// Gets the label for the specified address. - function getLabel(address account) external view returns (string memory currentLabel); - - /// Labels an address in call traces. - function label(address account, string calldata newLabel) external; - - /// Pauses collection of call traces. Useful in cases when you want to skip tracing of - /// complex calls which are not useful for debugging. - function pauseTracing() external view; - - /// Returns a random `address`. - function randomAddress() external view returns (address); - - /// Returns a random `bool`. - function randomBool() external view returns (bool); - - /// Returns a random byte array value of the given length. - function randomBytes(uint256 len) external view returns (bytes memory); - - /// Returns a random fixed-size byte array of length 4. - function randomBytes4() external view returns (bytes4); - - /// Returns a random fixed-size byte array of length 8. - function randomBytes8() external view returns (bytes8); - - /// Returns a random `int256` value. - function randomInt() external view returns (int256); - - /// Returns a random `int256` value of given bits. - function randomInt(uint256 bits) external view returns (int256); - - /// Returns a random uint256 value. - function randomUint() external view returns (uint256); - - /// Returns random uint256 value between the provided range (=min..=max). - function randomUint(uint256 min, uint256 max) external view returns (uint256); - - /// Returns a random `uint256` value of given bits. - function randomUint(uint256 bits) external view returns (uint256); - - /// Unpauses collection of call traces. - function resumeTracing() external view; - - /// Utility cheatcode to set arbitrary storage for given target address. - function setArbitraryStorage(address target) external; - - /// Utility cheatcode to set arbitrary storage for given target address and overwrite - /// any storage slots that have been previously set. - function setArbitraryStorage(address target, bool overwrite) external; - - /// Set RNG seed. - function setSeed(uint256 seed) external; - - /// Randomly shuffles an array. - function shuffle(uint256[] calldata array) external returns (uint256[] memory); - - /// Sorts an array in ascending order. - function sort(uint256[] calldata array) external returns (uint256[] memory); - - /// Encodes a `bytes` value to a base64url string. - function toBase64URL(bytes calldata data) external pure returns (string memory); - - /// Encodes a `string` value to a base64url string. - function toBase64URL(string calldata data) external pure returns (string memory); - - /// Encodes a `bytes` value to a base64 string. - function toBase64(bytes calldata data) external pure returns (string memory); - - /// Encodes a `string` value to a base64 string. - function toBase64(string calldata data) external pure returns (string memory); -} - -/// The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used -/// in tests, but it is not recommended to use these cheats in scripts. -interface Vm is VmSafe { - // ======== EVM ======== - - /// Utility cheatcode to set an EIP-2930 access list for all subsequent transactions. - function accessList(AccessListItem[] calldata access) external; - - /// Returns the identifier of the currently active fork. Reverts if no fork is currently active. - function activeFork() external view returns (uint256 forkId); - - /// In forking mode, explicitly grant the given address cheatcode access. - function allowCheatcodes(address account) external; - - /// Sets `block.blobbasefee` - function blobBaseFee(uint256 newBlobBaseFee) external; - - /// Sets the blobhashes in the transaction. - /// Not available on EVM versions before Cancun. - /// If used on unsupported EVM versions it will revert. - function blobhashes(bytes32[] calldata hashes) external; - - /// Sets `block.chainid`. - function chainId(uint256 newChainId) external; - - /// Clears all mocked calls. - function clearMockedCalls() external; - - /// Clones a source account code, state, balance and nonce to a target account and updates in-memory EVM state. - function cloneAccount(address source, address target) external; - - /// Sets `block.coinbase`. - function coinbase(address newCoinbase) external; - - /// Marks the slots of an account and the account address as cold. - function cool(address target) external; - - /// Utility cheatcode to mark specific storage slot as cold, simulating no prior read. - function coolSlot(address target, bytes32 slot) external; - - /// Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork. - function createFork(string calldata urlOrAlias) external returns (uint256 forkId); - - /// Creates a new fork with the given endpoint and block and returns the identifier of the fork. - function createFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); - - /// Creates a new fork with the given endpoint and at the block the given transaction was mined in, - /// replays all transaction mined in the block before the transaction, and returns the identifier of the fork. - function createFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); - - /// Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork. - function createSelectFork(string calldata urlOrAlias) external returns (uint256 forkId); - - /// Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork. - function createSelectFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); - - /// Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, - /// replays all transaction mined in the block before the transaction, returns the identifier of the fork. - function createSelectFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); - - /// Sets an address' balance. - function deal(address account, uint256 newBalance) external; - - /// Removes the snapshot with the given ID created by `snapshot`. - /// Takes the snapshot ID to delete. - /// Returns `true` if the snapshot was successfully deleted. - /// Returns `false` if the snapshot does not exist. - function deleteStateSnapshot(uint256 snapshotId) external returns (bool success); - - /// Removes _all_ snapshots previously created by `snapshot`. - function deleteStateSnapshots() external; - - /// Sets `block.difficulty`. - /// Not available on EVM versions from Paris onwards. Use `prevrandao` instead. - /// Reverts if used on unsupported EVM versions. - function difficulty(uint256 newDifficulty) external; - - /// Dump a genesis JSON file's `allocs` to disk. - function dumpState(string calldata pathToStateJson) external; - - /// Sets an address' code. - function etch(address target, bytes calldata newRuntimeBytecode) external; - - /// Sets `block.basefee`. - function fee(uint256 newBasefee) external; - - /// Gets the blockhashes from the current transaction. - /// Not available on EVM versions before Cancun. - /// If used on unsupported EVM versions it will revert. - function getBlobhashes() external view returns (bytes32[] memory hashes); - - /// Returns true if the account is marked as persistent. - function isPersistent(address account) external view returns (bool persistent); - - /// Load a genesis JSON file's `allocs` into the in-memory EVM state. - function loadAllocs(string calldata pathToAllocsJson) external; - - /// Marks that the account(s) should use persistent storage across fork swaps in a multifork setup - /// Meaning, changes made to the state of this account will be kept when switching forks. - function makePersistent(address account) external; - - /// See `makePersistent(address)`. - function makePersistent(address account0, address account1) external; - - /// See `makePersistent(address)`. - function makePersistent(address account0, address account1, address account2) external; - - /// See `makePersistent(address)`. - function makePersistent(address[] calldata accounts) external; - - /// Reverts a call to an address with specified revert data. - function mockCallRevert(address callee, bytes calldata data, bytes calldata revertData) external; - - /// Reverts a call to an address with a specific `msg.value`, with specified revert data. - function mockCallRevert(address callee, uint256 msgValue, bytes calldata data, bytes calldata revertData) - external; - - /// Reverts a call to an address with specified revert data. - /// Overload to pass the function selector directly `token.approve.selector` instead of `abi.encodeWithSelector(token.approve.selector)`. - function mockCallRevert(address callee, bytes4 data, bytes calldata revertData) external; - - /// Reverts a call to an address with a specific `msg.value`, with specified revert data. - /// Overload to pass the function selector directly `token.approve.selector` instead of `abi.encodeWithSelector(token.approve.selector)`. - function mockCallRevert(address callee, uint256 msgValue, bytes4 data, bytes calldata revertData) external; - - /// Mocks a call to an address, returning specified data. - /// Calldata can either be strict or a partial match, e.g. if you only - /// pass a Solidity selector to the expected calldata, then the entire Solidity - /// function will be mocked. - function mockCall(address callee, bytes calldata data, bytes calldata returnData) external; - - /// Mocks a call to an address with a specific `msg.value`, returning specified data. - /// Calldata match takes precedence over `msg.value` in case of ambiguity. - function mockCall(address callee, uint256 msgValue, bytes calldata data, bytes calldata returnData) external; - - /// Mocks a call to an address, returning specified data. - /// Calldata can either be strict or a partial match, e.g. if you only - /// pass a Solidity selector to the expected calldata, then the entire Solidity - /// function will be mocked. - /// Overload to pass the function selector directly `token.approve.selector` instead of `abi.encodeWithSelector(token.approve.selector)`. - function mockCall(address callee, bytes4 data, bytes calldata returnData) external; - - /// Mocks a call to an address with a specific `msg.value`, returning specified data. - /// Calldata match takes precedence over `msg.value` in case of ambiguity. - /// Overload to pass the function selector directly `token.approve.selector` instead of `abi.encodeWithSelector(token.approve.selector)`. - function mockCall(address callee, uint256 msgValue, bytes4 data, bytes calldata returnData) external; - - /// Mocks multiple calls to an address, returning specified data for each call. - function mockCalls(address callee, bytes calldata data, bytes[] calldata returnData) external; - - /// Mocks multiple calls to an address with a specific `msg.value`, returning specified data for each call. - function mockCalls(address callee, uint256 msgValue, bytes calldata data, bytes[] calldata returnData) external; - - /// Whenever a call is made to `callee` with calldata `data`, this cheatcode instead calls - /// `target` with the same calldata. This functionality is similar to a delegate call made to - /// `target` contract from `callee`. - /// Can be used to substitute a call to a function with another implementation that captures - /// the primary logic of the original function but is easier to reason about. - /// If calldata is not a strict match then partial match by selector is attempted. - function mockFunction(address callee, address target, bytes calldata data) external; - - /// Utility cheatcode to remove any EIP-2930 access list set by `accessList` cheatcode. - function noAccessList() external; - - /// Sets the *next* call's `msg.sender` to be the input address. - function prank(address msgSender) external; - - /// Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input. - function prank(address msgSender, address txOrigin) external; - - /// Sets the *next* delegate call's `msg.sender` to be the input address. - function prank(address msgSender, bool delegateCall) external; - - /// Sets the *next* delegate call's `msg.sender` to be the input address, and the `tx.origin` to be the second input. - function prank(address msgSender, address txOrigin, bool delegateCall) external; - - /// Sets `block.prevrandao`. - /// Not available on EVM versions before Paris. Use `difficulty` instead. - /// If used on unsupported EVM versions it will revert. - function prevrandao(bytes32 newPrevrandao) external; - - /// Sets `block.prevrandao`. - /// Not available on EVM versions before Paris. Use `difficulty` instead. - /// If used on unsupported EVM versions it will revert. - function prevrandao(uint256 newPrevrandao) external; - - /// Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification. - function readCallers() external view returns (CallerMode callerMode, address msgSender, address txOrigin); - - /// Resets the nonce of an account to 0 for EOAs and 1 for contract accounts. - function resetNonce(address account) external; - - /// Revert the state of the EVM to a previous snapshot - /// Takes the snapshot ID to revert to. - /// Returns `true` if the snapshot was successfully reverted. - /// Returns `false` if the snapshot does not exist. - /// **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteStateSnapshot`. - function revertToState(uint256 snapshotId) external returns (bool success); - - /// Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots - /// Takes the snapshot ID to revert to. - /// Returns `true` if the snapshot was successfully reverted and deleted. - /// Returns `false` if the snapshot does not exist. - function revertToStateAndDelete(uint256 snapshotId) external returns (bool success); - - /// Revokes persistent status from the address, previously added via `makePersistent`. - function revokePersistent(address account) external; - - /// See `revokePersistent(address)`. - function revokePersistent(address[] calldata accounts) external; - - /// Sets `block.height`. - function roll(uint256 newHeight) external; - - /// Updates the currently active fork to given block number - /// This is similar to `roll` but for the currently active fork. - function rollFork(uint256 blockNumber) external; - - /// Updates the currently active fork to given transaction. This will `rollFork` with the number - /// of the block the transaction was mined in and replays all transaction mined before it in the block. - function rollFork(bytes32 txHash) external; - - /// Updates the given fork to given block number. - function rollFork(uint256 forkId, uint256 blockNumber) external; - - /// Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block. - function rollFork(uint256 forkId, bytes32 txHash) external; - - /// Takes a fork identifier created by `createFork` and sets the corresponding forked state as active. - function selectFork(uint256 forkId) external; - - /// Set blockhash for the current block. - /// It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`. - function setBlockhash(uint256 blockNumber, bytes32 blockHash) external; - - /// Sets the nonce of an account. Must be higher than the current nonce of the account. - function setNonce(address account, uint64 newNonce) external; - - /// Sets the nonce of an account to an arbitrary value. - function setNonceUnsafe(address account, uint64 newNonce) external; - - /// Snapshot capture the gas usage of the last call by name from the callee perspective. - function snapshotGasLastCall(string calldata name) external returns (uint256 gasUsed); - - /// Snapshot capture the gas usage of the last call by name in a group from the callee perspective. - function snapshotGasLastCall(string calldata group, string calldata name) external returns (uint256 gasUsed); - - /// Snapshot the current state of the evm. - /// Returns the ID of the snapshot that was created. - /// To revert a snapshot use `revertToState`. - function snapshotState() external returns (uint256 snapshotId); - - /// Snapshot capture an arbitrary numerical value by name. - /// The group name is derived from the contract name. - function snapshotValue(string calldata name, uint256 value) external; - - /// Snapshot capture an arbitrary numerical value by name in a group. - function snapshotValue(string calldata group, string calldata name, uint256 value) external; - - /// Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called. - function startPrank(address msgSender) external; - - /// Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input. - function startPrank(address msgSender, address txOrigin) external; - - /// Sets all subsequent delegate calls' `msg.sender` to be the input address until `stopPrank` is called. - function startPrank(address msgSender, bool delegateCall) external; - - /// Sets all subsequent delegate calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input. - function startPrank(address msgSender, address txOrigin, bool delegateCall) external; - - /// Start a snapshot capture of the current gas usage by name. - /// The group name is derived from the contract name. - function startSnapshotGas(string calldata name) external; - - /// Start a snapshot capture of the current gas usage by name in a group. - function startSnapshotGas(string calldata group, string calldata name) external; - - /// Resets subsequent calls' `msg.sender` to be `address(this)`. - function stopPrank() external; - - /// Stop the snapshot capture of the current gas by latest snapshot name, capturing the gas used since the start. - function stopSnapshotGas() external returns (uint256 gasUsed); - - /// Stop the snapshot capture of the current gas usage by name, capturing the gas used since the start. - /// The group name is derived from the contract name. - function stopSnapshotGas(string calldata name) external returns (uint256 gasUsed); - - /// Stop the snapshot capture of the current gas usage by name in a group, capturing the gas used since the start. - function stopSnapshotGas(string calldata group, string calldata name) external returns (uint256 gasUsed); - - /// Stores a value to an address' storage slot. - function store(address target, bytes32 slot, bytes32 value) external; - - /// Fetches the given transaction from the active fork and executes it on the current state. - function transact(bytes32 txHash) external; - - /// Fetches the given transaction from the given fork and executes it on the current state. - function transact(uint256 forkId, bytes32 txHash) external; - - /// Sets `tx.gasprice`. - function txGasPrice(uint256 newGasPrice) external; - - /// Utility cheatcode to mark specific storage slot as warm, simulating a prior read. - function warmSlot(address target, bytes32 slot) external; - - /// Sets `block.timestamp`. - function warp(uint256 newTimestamp) external; - - /// `deleteSnapshot` is being deprecated in favor of `deleteStateSnapshot`. It will be removed in future versions. - function deleteSnapshot(uint256 snapshotId) external returns (bool success); - - /// `deleteSnapshots` is being deprecated in favor of `deleteStateSnapshots`. It will be removed in future versions. - function deleteSnapshots() external; - - /// `revertToAndDelete` is being deprecated in favor of `revertToStateAndDelete`. It will be removed in future versions. - function revertToAndDelete(uint256 snapshotId) external returns (bool success); - - /// `revertTo` is being deprecated in favor of `revertToState`. It will be removed in future versions. - function revertTo(uint256 snapshotId) external returns (bool success); - - /// `snapshot` is being deprecated in favor of `snapshotState`. It will be removed in future versions. - function snapshot() external returns (uint256 snapshotId); - - // ======== Testing ======== - - /// Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas. - function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data) external; - - /// Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas. - function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data, uint64 count) - external; - - /// Expects a call to an address with the specified calldata. - /// Calldata can either be a strict or a partial match. - function expectCall(address callee, bytes calldata data) external; - - /// Expects given number of calls to an address with the specified calldata. - function expectCall(address callee, bytes calldata data, uint64 count) external; - - /// Expects a call to an address with the specified `msg.value` and calldata. - function expectCall(address callee, uint256 msgValue, bytes calldata data) external; - - /// Expects given number of calls to an address with the specified `msg.value` and calldata. - function expectCall(address callee, uint256 msgValue, bytes calldata data, uint64 count) external; - - /// Expect a call to an address with the specified `msg.value`, gas, and calldata. - function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data) external; - - /// Expects given number of calls to an address with the specified `msg.value`, gas, and calldata. - function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data, uint64 count) external; - - /// Expects the deployment of the specified bytecode by the specified address using the CREATE opcode - function expectCreate(bytes calldata bytecode, address deployer) external; - - /// Expects the deployment of the specified bytecode by the specified address using the CREATE2 opcode - function expectCreate2(bytes calldata bytecode, address deployer) external; - - /// Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). - /// Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if - /// logs were emitted in the expected order with the expected topics and data (as specified by the booleans). - function expectEmitAnonymous(bool checkTopic0, bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) - external; - - /// Same as the previous method, but also checks supplied address against emitting contract. - function expectEmitAnonymous( - bool checkTopic0, - bool checkTopic1, - bool checkTopic2, - bool checkTopic3, - bool checkData, - address emitter - ) external; - - /// Prepare an expected anonymous log with all topic and data checks enabled. - /// Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if - /// logs were emitted in the expected order with the expected topics and data. - function expectEmitAnonymous() external; - - /// Same as the previous method, but also checks supplied address against emitting contract. - function expectEmitAnonymous(address emitter) external; - - /// Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). - /// Call this function, then emit an event, then call a function. Internally after the call, we check if - /// logs were emitted in the expected order with the expected topics and data (as specified by the booleans). - function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) external; - - /// Same as the previous method, but also checks supplied address against emitting contract. - function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) - external; - - /// Prepare an expected log with all topic and data checks enabled. - /// Call this function, then emit an event, then call a function. Internally after the call, we check if - /// logs were emitted in the expected order with the expected topics and data. - function expectEmit() external; - - /// Same as the previous method, but also checks supplied address against emitting contract. - function expectEmit(address emitter) external; - - /// Expect a given number of logs with the provided topics. - function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, uint64 count) external; - - /// Expect a given number of logs from a specific emitter with the provided topics. - function expectEmit( - bool checkTopic1, - bool checkTopic2, - bool checkTopic3, - bool checkData, - address emitter, - uint64 count - ) external; - - /// Expect a given number of logs with all topic and data checks enabled. - function expectEmit(uint64 count) external; - - /// Expect a given number of logs from a specific emitter with all topic and data checks enabled. - function expectEmit(address emitter, uint64 count) external; - - /// Expects an error on next call that starts with the revert data. - function expectPartialRevert(bytes4 revertData) external; - - /// Expects an error on next call to reverter address, that starts with the revert data. - function expectPartialRevert(bytes4 revertData, address reverter) external; - - /// Expects an error on next call with any revert data. - function expectRevert() external; - - /// Expects an error on next call that exactly matches the revert data. - function expectRevert(bytes4 revertData) external; - - /// Expects a `count` number of reverts from the upcoming calls from the reverter address that match the revert data. - function expectRevert(bytes4 revertData, address reverter, uint64 count) external; - - /// Expects a `count` number of reverts from the upcoming calls from the reverter address that exactly match the revert data. - function expectRevert(bytes calldata revertData, address reverter, uint64 count) external; - - /// Expects an error on next call that exactly matches the revert data. - function expectRevert(bytes calldata revertData) external; - - /// Expects an error with any revert data on next call to reverter address. - function expectRevert(address reverter) external; - - /// Expects an error from reverter address on next call, with any revert data. - function expectRevert(bytes4 revertData, address reverter) external; - - /// Expects an error from reverter address on next call, that exactly matches the revert data. - function expectRevert(bytes calldata revertData, address reverter) external; - - /// Expects a `count` number of reverts from the upcoming calls with any revert data or reverter. - function expectRevert(uint64 count) external; - - /// Expects a `count` number of reverts from the upcoming calls that match the revert data. - function expectRevert(bytes4 revertData, uint64 count) external; - - /// Expects a `count` number of reverts from the upcoming calls that exactly match the revert data. - function expectRevert(bytes calldata revertData, uint64 count) external; - - /// Expects a `count` number of reverts from the upcoming calls from the reverter address. - function expectRevert(address reverter, uint64 count) external; - - /// Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the current subcontext. If any other - /// memory is written to, the test will fail. Can be called multiple times to add more ranges to the set. - function expectSafeMemory(uint64 min, uint64 max) external; - - /// Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the next created subcontext. - /// If any other memory is written to, the test will fail. Can be called multiple times to add more ranges - /// to the set. - function expectSafeMemoryCall(uint64 min, uint64 max) external; - - /// Marks a test as skipped. Must be called at the top level of a test. - function skip(bool skipTest) external; - - /// Marks a test as skipped with a reason. Must be called at the top level of a test. - function skip(bool skipTest, string calldata reason) external; - - /// Stops all safe memory expectation in the current subcontext. - function stopExpectSafeMemory() external; - - // ======== Utilities ======== - - /// Causes the next contract creation (via new) to fail and return its initcode in the returndata buffer. - /// This allows type-safe access to the initcode payload that would be used for contract creation. - /// Example usage: - /// vm.interceptInitcode(); - /// bytes memory initcode; - /// try new MyContract(param1, param2) { assert(false); } - /// catch (bytes memory interceptedInitcode) { initcode = interceptedInitcode; } - function interceptInitcode() external; -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/console.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/console.sol deleted file mode 100644 index 4fdb6679ed..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/console.sol +++ /dev/null @@ -1,1560 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -library console { - address constant CONSOLE_ADDRESS = - 0x000000000000000000636F6e736F6c652e6c6f67; - - function _sendLogPayloadImplementation(bytes memory payload) internal view { - address consoleAddress = CONSOLE_ADDRESS; - /// @solidity memory-safe-assembly - assembly { - pop( - staticcall( - gas(), - consoleAddress, - add(payload, 32), - mload(payload), - 0, - 0 - ) - ) - } - } - - function _castToPure( - function(bytes memory) internal view fnIn - ) internal pure returns (function(bytes memory) pure fnOut) { - assembly { - fnOut := fnIn - } - } - - function _sendLogPayload(bytes memory payload) internal pure { - _castToPure(_sendLogPayloadImplementation)(payload); - } - - function log() internal pure { - _sendLogPayload(abi.encodeWithSignature("log()")); - } - - function logInt(int256 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); - } - - function logUint(uint256 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); - } - - function logString(string memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function logBool(bool p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function logAddress(address p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function logBytes(bytes memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); - } - - function logBytes1(bytes1 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); - } - - function logBytes2(bytes2 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); - } - - function logBytes3(bytes3 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); - } - - function logBytes4(bytes4 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); - } - - function logBytes5(bytes5 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); - } - - function logBytes6(bytes6 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); - } - - function logBytes7(bytes7 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); - } - - function logBytes8(bytes8 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); - } - - function logBytes9(bytes9 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); - } - - function logBytes10(bytes10 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); - } - - function logBytes11(bytes11 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); - } - - function logBytes12(bytes12 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); - } - - function logBytes13(bytes13 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); - } - - function logBytes14(bytes14 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); - } - - function logBytes15(bytes15 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); - } - - function logBytes16(bytes16 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); - } - - function logBytes17(bytes17 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); - } - - function logBytes18(bytes18 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); - } - - function logBytes19(bytes19 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); - } - - function logBytes20(bytes20 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); - } - - function logBytes21(bytes21 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); - } - - function logBytes22(bytes22 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); - } - - function logBytes23(bytes23 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); - } - - function logBytes24(bytes24 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); - } - - function logBytes25(bytes25 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); - } - - function logBytes26(bytes26 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); - } - - function logBytes27(bytes27 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); - } - - function logBytes28(bytes28 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); - } - - function logBytes29(bytes29 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); - } - - function logBytes30(bytes30 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); - } - - function logBytes31(bytes31 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); - } - - function logBytes32(bytes32 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); - } - - function log(uint256 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); - } - - function log(int256 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); - } - - function log(string memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function log(bool p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function log(address p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function log(uint256 p0, uint256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1)); - } - - function log(uint256 p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1)); - } - - function log(uint256 p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1)); - } - - function log(uint256 p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1)); - } - - function log(string memory p0, uint256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); - } - - function log(string memory p0, int256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,int256)", p0, p1)); - } - - function log(string memory p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); - } - - function log(string memory p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); - } - - function log(string memory p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); - } - - function log(bool p0, uint256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1)); - } - - function log(bool p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); - } - - function log(bool p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); - } - - function log(bool p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); - } - - function log(address p0, uint256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1)); - } - - function log(address p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); - } - - function log(address p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); - } - - function log(address p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); - } - - function log(uint256 p0, uint256 p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); - } - - function log(string memory p0, address p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2)); - } - - function log(string memory p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); - } - - function log(string memory p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); - } - - function log(string memory p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); - } - - function log(bool p0, bool p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2)); - } - - function log(bool p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); - } - - function log(bool p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); - } - - function log(bool p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); - } - - function log(bool p0, address p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2)); - } - - function log(bool p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); - } - - function log(bool p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); - } - - function log(bool p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2)); - } - - function log(address p0, string memory p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2)); - } - - function log(address p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); - } - - function log(address p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); - } - - function log(address p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); - } - - function log(address p0, bool p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2)); - } - - function log(address p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); - } - - function log(address p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); - } - - function log(address p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); - } - - function log(address p0, address p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2)); - } - - function log(address p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); - } - - function log(address p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); - } - - function log(address p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/console2.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/console2.sol deleted file mode 100644 index 03531d91d3..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/console2.sol +++ /dev/null @@ -1,4 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -import {console as console2} from "./console.sol"; diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC1155.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC1155.sol deleted file mode 100644 index ffc82984a7..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC1155.sol +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import {IERC165} from "./IERC165.sol"; - -/// @title ERC-1155 Multi Token Standard -/// @dev See https://eips.ethereum.org/EIPS/eip-1155 -/// Note: The ERC-165 identifier for this interface is 0xd9b67a26. -interface IERC1155 is IERC165 { - /// @dev - /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). - /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). - /// - The `_from` argument MUST be the address of the holder whose balance is decreased. - /// - The `_to` argument MUST be the address of the recipient whose balance is increased. - /// - The `_id` argument MUST be the token type being transferred. - /// - The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by. - /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). - /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). - event TransferSingle( - address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value - ); - - /// @dev - /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). - /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). - /// - The `_from` argument MUST be the address of the holder whose balance is decreased. - /// - The `_to` argument MUST be the address of the recipient whose balance is increased. - /// - The `_ids` argument MUST be the list of tokens being transferred. - /// - The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by. - /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). - /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). - event TransferBatch( - address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values - ); - - /// @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absence of an event assumes disabled). - event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); - - /// @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986. - /// The URI MUST point to a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema". - event URI(string _value, uint256 indexed _id); - - /// @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). - /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). - /// - MUST revert if `_to` is the zero address. - /// - MUST revert if balance of holder for token `_id` is lower than the `_value` sent. - /// - MUST revert on any other error. - /// - MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). - /// - After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). - /// @param _from Source address - /// @param _to Target address - /// @param _id ID of the token type - /// @param _value Transfer amount - /// @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` - function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external; - - /// @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). - /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). - /// - MUST revert if `_to` is the zero address. - /// - MUST revert if length of `_ids` is not the same as length of `_values`. - /// - MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. - /// - MUST revert on any other error. - /// - MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). - /// - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). - /// - After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). - /// @param _from Source address - /// @param _to Target address - /// @param _ids IDs of each token type (order and length must match _values array) - /// @param _values Transfer amounts per token type (order and length must match _ids array) - /// @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` - function safeBatchTransferFrom( - address _from, - address _to, - uint256[] calldata _ids, - uint256[] calldata _values, - bytes calldata _data - ) external; - - /// @notice Get the balance of an account's tokens. - /// @param _owner The address of the token holder - /// @param _id ID of the token - /// @return The _owner's balance of the token type requested - function balanceOf(address _owner, uint256 _id) external view returns (uint256); - - /// @notice Get the balance of multiple account/token pairs - /// @param _owners The addresses of the token holders - /// @param _ids ID of the tokens - /// @return The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair) - function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) - external - view - returns (uint256[] memory); - - /// @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. - /// @dev MUST emit the ApprovalForAll event on success. - /// @param _operator Address to add to the set of authorized operators - /// @param _approved True if the operator is approved, false to revoke approval - function setApprovalForAll(address _operator, bool _approved) external; - - /// @notice Queries the approval status of an operator for a given owner. - /// @param _owner The owner of the tokens - /// @param _operator Address of authorized operator - /// @return True if the operator is approved, false if not - function isApprovedForAll(address _owner, address _operator) external view returns (bool); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC165.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC165.sol deleted file mode 100644 index 9af4bf800f..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC165.sol +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -interface IERC165 { - /// @notice Query if a contract implements an interface - /// @param interfaceID The interface identifier, as specified in ERC-165 - /// @dev Interface identification is specified in ERC-165. This function - /// uses less than 30,000 gas. - /// @return `true` if the contract implements `interfaceID` and - /// `interfaceID` is not 0xffffffff, `false` otherwise - function supportsInterface(bytes4 interfaceID) external view returns (bool); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC20.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC20.sol deleted file mode 100644 index ba40806c3b..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC20.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -/// @dev Interface of the ERC20 standard as defined in the EIP. -/// @dev This includes the optional name, symbol, and decimals metadata. -interface IERC20 { - /// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`). - event Transfer(address indexed from, address indexed to, uint256 value); - - /// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value` - /// is the new allowance. - event Approval(address indexed owner, address indexed spender, uint256 value); - - /// @notice Returns the amount of tokens in existence. - function totalSupply() external view returns (uint256); - - /// @notice Returns the amount of tokens owned by `account`. - function balanceOf(address account) external view returns (uint256); - - /// @notice Moves `amount` tokens from the caller's account to `to`. - function transfer(address to, uint256 amount) external returns (bool); - - /// @notice Returns the remaining number of tokens that `spender` is allowed - /// to spend on behalf of `owner` - function allowance(address owner, address spender) external view returns (uint256); - - /// @notice Sets `amount` as the allowance of `spender` over the caller's tokens. - /// @dev Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - function approve(address spender, uint256 amount) external returns (bool); - - /// @notice Moves `amount` tokens from `from` to `to` using the allowance mechanism. - /// `amount` is then deducted from the caller's allowance. - function transferFrom(address from, address to, uint256 amount) external returns (bool); - - /// @notice Returns the name of the token. - function name() external view returns (string memory); - - /// @notice Returns the symbol of the token. - function symbol() external view returns (string memory); - - /// @notice Returns the decimals places of the token. - function decimals() external view returns (uint8); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC4626.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC4626.sol deleted file mode 100644 index c645a0fecf..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC4626.sol +++ /dev/null @@ -1,190 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import {IERC20} from "./IERC20.sol"; - -/// @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in -/// https://eips.ethereum.org/EIPS/eip-4626 -interface IERC4626 is IERC20 { - event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares); - - event Withdraw( - address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares - ); - - /// @notice Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - /// @dev - /// - MUST be an ERC-20 token contract. - /// - MUST NOT revert. - function asset() external view returns (address assetTokenAddress); - - /// @notice Returns the total amount of the underlying asset that is “managed” by Vault. - /// @dev - /// - SHOULD include any compounding that occurs from yield. - /// - MUST be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT revert. - function totalAssets() external view returns (uint256 totalManagedAssets); - - /// @notice Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal - /// scenario where all the conditions are met. - /// @dev - /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT show any variations depending on the caller. - /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - /// - MUST NOT revert. - /// - /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - /// from. - function convertToShares(uint256 assets) external view returns (uint256 shares); - - /// @notice Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal - /// scenario where all the conditions are met. - /// @dev - /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT show any variations depending on the caller. - /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - /// - MUST NOT revert. - /// - /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - /// from. - function convertToAssets(uint256 shares) external view returns (uint256 assets); - - /// @notice Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, - /// through a deposit call. - /// @dev - /// - MUST return a limited value if receiver is subject to some deposit limit. - /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - /// - MUST NOT revert. - function maxDeposit(address receiver) external view returns (uint256 maxAssets); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given - /// current on-chain conditions. - /// @dev - /// - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit - /// call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called - /// in the same transaction. - /// - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the - /// deposit would be accepted, regardless if the user has enough tokens approved, etc. - /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by depositing. - function previewDeposit(uint256 assets) external view returns (uint256 shares); - - /// @notice Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. - /// @dev - /// - MUST emit the Deposit event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// deposit execution, and are accounted for during deposit. - /// - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not - /// approving enough underlying tokens to the Vault contract, etc). - /// - /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - function deposit(uint256 assets, address receiver) external returns (uint256 shares); - - /// @notice Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - /// @dev - /// - MUST return a limited value if receiver is subject to some mint limit. - /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - /// - MUST NOT revert. - function maxMint(address receiver) external view returns (uint256 maxShares); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given - /// current on-chain conditions. - /// @dev - /// - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call - /// in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the - /// same transaction. - /// - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint - /// would be accepted, regardless if the user has enough tokens approved, etc. - /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by minting. - function previewMint(uint256 shares) external view returns (uint256 assets); - - /// @notice Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. - /// @dev - /// - MUST emit the Deposit event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint - /// execution, and are accounted for during mint. - /// - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not - /// approving enough underlying tokens to the Vault contract, etc). - /// - /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - function mint(uint256 shares, address receiver) external returns (uint256 assets); - - /// @notice Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the - /// Vault, through a withdrawal call. - /// @dev - /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - /// - MUST NOT revert. - function maxWithdraw(address owner) external view returns (uint256 maxAssets); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, - /// given current on-chain conditions. - /// @dev - /// - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw - /// call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if - /// called - /// in the same transaction. - /// - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though - /// the withdrawal would be accepted, regardless if the user has enough shares, etc. - /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by depositing. - function previewWithdraw(uint256 assets) external view returns (uint256 shares); - - /// @notice Burns shares from owner and sends exactly assets of underlying tokens to receiver. - /// @dev - /// - MUST emit the Withdraw event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// withdraw execution, and are accounted for during withdrawal. - /// - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner - /// not having enough shares, etc). - /// - /// Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - /// Those methods should be performed separately. - function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); - - /// @notice Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, - /// through a redeem call. - /// @dev - /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - /// - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - /// - MUST NOT revert. - function maxRedeem(address owner) external view returns (uint256 maxShares); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, - /// given current on-chain conditions. - /// @dev - /// - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call - /// in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the - /// same transaction. - /// - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the - /// redemption would be accepted, regardless if the user has enough shares, etc. - /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by redeeming. - function previewRedeem(uint256 shares) external view returns (uint256 assets); - - /// @notice Burns exactly shares from owner and sends assets of underlying tokens to receiver. - /// @dev - /// - MUST emit the Withdraw event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// redeem execution, and are accounted for during redeem. - /// - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner - /// not having enough shares, etc). - /// - /// NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - /// Those methods should be performed separately. - function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC6909.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC6909.sol deleted file mode 100644 index 6e11cb460d..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC6909.sol +++ /dev/null @@ -1,72 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import {IERC165} from "./IERC165.sol"; - -/// @dev Required interface of an ERC-6909 compliant contract, as defined in -/// https://eips.ethereum.org/EIPS/eip-6909 -interface IERC6909 is IERC165 { - /// @dev Emitted when the allowance of a `spender` for an `owner` is set for a token of type `id`. - event Approval(address indexed owner, address indexed spender, uint256 indexed id, uint256 amount); - - /// @dev Emitted when `owner` grants or revokes operator status for a `spender`. - event OperatorSet(address indexed owner, address indexed spender, bool approved); - - /// @dev Emitted when `amount` tokens of type `id` are moved from `sender` to `receiver` initiated by `caller`. - event Transfer( - address caller, address indexed sender, address indexed receiver, uint256 indexed id, uint256 amount - ); - - ///@dev Returns the amount of tokens of type `id` owned by `owner`. - function balanceOf(address owner, uint256 id) external view returns (uint256); - - /// @dev Returns the amount of tokens of type `id` that `spender` is allowed to spend on behalf of `owner`. - /// NOTE: Does not include operator allowances. - function allowance(address owner, address spender, uint256 id) external view returns (uint256); - - /// @dev Returns true if `spender` is set as an operator for `owner`. - function isOperator(address owner, address spender) external view returns (bool); - - /// @dev Sets an approval to `spender` for `amount` tokens of type `id` from the caller's tokens. - /// Must return true. - function approve(address spender, uint256 id, uint256 amount) external returns (bool); - - /// @dev Grants or revokes unlimited transfer permission of any token id to `spender` for the caller's tokens. - /// Must return true. - function setOperator(address spender, bool approved) external returns (bool); - - /// @dev Transfers `amount` of token type `id` from the caller's account to `receiver`. - /// Must return true. - function transfer(address receiver, uint256 id, uint256 amount) external returns (bool); - - /// @dev Transfers `amount` of token type `id` from `sender` to `receiver`. - /// Must return true. - function transferFrom(address sender, address receiver, uint256 id, uint256 amount) external returns (bool); -} - -/// @dev Optional extension of {IERC6909} that adds metadata functions. -interface IERC6909Metadata is IERC6909 { - /// @dev Returns the name of the token of type `id`. - function name(uint256 id) external view returns (string memory); - - /// @dev Returns the ticker symbol of the token of type `id`. - function symbol(uint256 id) external view returns (string memory); - - /// @dev Returns the number of decimals for the token of type `id`. - function decimals(uint256 id) external view returns (uint8); -} - -/// @dev Optional extension of {IERC6909} that adds content URI functions. -interface IERC6909ContentURI is IERC6909 { - /// @dev Returns URI for the contract. - function contractURI() external view returns (string memory); - - /// @dev Returns the URI for the token of type `id`. - function tokenURI(uint256 id) external view returns (string memory); -} - -/// @dev Optional extension of {IERC6909} that adds a token supply function. -interface IERC6909TokenSupply is IERC6909 { - /// @dev Returns the total supply of the token of type `id`. - function totalSupply(uint256 id) external view returns (uint256); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC721.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC721.sol deleted file mode 100644 index 21a4a94dea..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC721.sol +++ /dev/null @@ -1,164 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import {IERC165} from "./IERC165.sol"; - -/// @title ERC-721 Non-Fungible Token Standard -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x80ac58cd. -interface IERC721 is IERC165 { - /// @dev This emits when ownership of any NFT changes by any mechanism. - /// This event emits when NFTs are created (`from` == 0) and destroyed - /// (`to` == 0). Exception: during contract creation, any number of NFTs - /// may be created and assigned without emitting Transfer. At the time of - /// any transfer, the approved address for that NFT (if any) is reset to none. - event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); - - /// @dev This emits when the approved address for an NFT is changed or - /// reaffirmed. The zero address indicates there is no approved address. - /// When a Transfer event emits, this also indicates that the approved - /// address for that NFT (if any) is reset to none. - event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); - - /// @dev This emits when an operator is enabled or disabled for an owner. - /// The operator can manage all NFTs of the owner. - event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); - - /// @notice Count all NFTs assigned to an owner - /// @dev NFTs assigned to the zero address are considered invalid, and this - /// function throws for queries about the zero address. - /// @param _owner An address for whom to query the balance - /// @return The number of NFTs owned by `_owner`, possibly zero - function balanceOf(address _owner) external view returns (uint256); - - /// @notice Find the owner of an NFT - /// @dev NFTs assigned to zero address are considered invalid, and queries - /// about them do throw. - /// @param _tokenId The identifier for an NFT - /// @return The address of the owner of the NFT - function ownerOf(uint256 _tokenId) external view returns (address); - - /// @notice Transfers the ownership of an NFT from one address to another address - /// @dev Throws unless `msg.sender` is the current owner, an authorized - /// operator, or the approved address for this NFT. Throws if `_from` is - /// not the current owner. Throws if `_to` is the zero address. Throws if - /// `_tokenId` is not a valid NFT. When transfer is complete, this function - /// checks if `_to` is a smart contract (code size > 0). If so, it calls - /// `onERC721Received` on `_to` and throws if the return value is not - /// `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`. - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - /// @param data Additional data with no specified format, sent in call to `_to` - function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable; - - /// @notice Transfers the ownership of an NFT from one address to another address - /// @dev This works identically to the other function with an extra data parameter, - /// except this function just sets data to "". - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; - - /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE - /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE - /// THEY MAY BE PERMANENTLY LOST - /// @dev Throws unless `msg.sender` is the current owner, an authorized - /// operator, or the approved address for this NFT. Throws if `_from` is - /// not the current owner. Throws if `_to` is the zero address. Throws if - /// `_tokenId` is not a valid NFT. - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - function transferFrom(address _from, address _to, uint256 _tokenId) external payable; - - /// @notice Change or reaffirm the approved address for an NFT - /// @dev The zero address indicates there is no approved address. - /// Throws unless `msg.sender` is the current NFT owner, or an authorized - /// operator of the current owner. - /// @param _approved The new approved NFT controller - /// @param _tokenId The NFT to approve - function approve(address _approved, uint256 _tokenId) external payable; - - /// @notice Enable or disable approval for a third party ("operator") to manage - /// all of `msg.sender`'s assets - /// @dev Emits the ApprovalForAll event. The contract MUST allow - /// multiple operators per owner. - /// @param _operator Address to add to the set of authorized operators - /// @param _approved True if the operator is approved, false to revoke approval - function setApprovalForAll(address _operator, bool _approved) external; - - /// @notice Get the approved address for a single NFT - /// @dev Throws if `_tokenId` is not a valid NFT. - /// @param _tokenId The NFT to find the approved address for - /// @return The approved address for this NFT, or the zero address if there is none - function getApproved(uint256 _tokenId) external view returns (address); - - /// @notice Query if an address is an authorized operator for another address - /// @param _owner The address that owns the NFTs - /// @param _operator The address that acts on behalf of the owner - /// @return True if `_operator` is an approved operator for `_owner`, false otherwise - function isApprovedForAll(address _owner, address _operator) external view returns (bool); -} - -/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02. -interface IERC721TokenReceiver { - /// @notice Handle the receipt of an NFT - /// @dev The ERC721 smart contract calls this function on the recipient - /// after a `transfer`. This function MAY throw to revert and reject the - /// transfer. Return of other than the magic value MUST result in the - /// transaction being reverted. - /// Note: the contract address is always the message sender. - /// @param _operator The address which called `safeTransferFrom` function - /// @param _from The address which previously owned the token - /// @param _tokenId The NFT identifier which is being transferred - /// @param _data Additional data with no specified format - /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` - /// unless throwing - function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) - external - returns (bytes4); -} - -/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x5b5e139f. -interface IERC721Metadata is IERC721 { - /// @notice A descriptive name for a collection of NFTs in this contract - function name() external view returns (string memory _name); - - /// @notice An abbreviated name for NFTs in this contract - function symbol() external view returns (string memory _symbol); - - /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. - /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC - /// 3986. The URI may point to a JSON file that conforms to the "ERC721 - /// Metadata JSON Schema". - function tokenURI(uint256 _tokenId) external view returns (string memory); -} - -/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x780e9d63. -interface IERC721Enumerable is IERC721 { - /// @notice Count NFTs tracked by this contract - /// @return A count of valid NFTs tracked by this contract, where each one of - /// them has an assigned and queryable owner not equal to the zero address - function totalSupply() external view returns (uint256); - - /// @notice Enumerate valid NFTs - /// @dev Throws if `_index` >= `totalSupply()`. - /// @param _index A counter less than `totalSupply()` - /// @return The token identifier for the `_index`th NFT, - /// (sort order not specified) - function tokenByIndex(uint256 _index) external view returns (uint256); - - /// @notice Enumerate NFTs assigned to an owner - /// @dev Throws if `_index` >= `balanceOf(_owner)` or if - /// `_owner` is the zero address, representing invalid NFTs. - /// @param _owner An address where we are interested in NFTs owned by them - /// @param _index A counter less than `balanceOf(_owner)` - /// @return The token identifier for the `_index`th NFT assigned to `_owner`, - /// (sort order not specified) - function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC7540.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC7540.sol deleted file mode 100644 index 91a38ca359..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC7540.sol +++ /dev/null @@ -1,150 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import {IERC7575} from "./IERC7575.sol"; - -/// @dev Interface of the base operator logic of ERC7540, as defined in -/// https://eips.ethereum.org/EIPS/eip-7540 -interface IERC7540Operator { - /** - * @dev The event emitted when an operator is set. - * - * @param controller The address of the controller. - * @param operator The address of the operator. - * @param approved The approval status. - */ - event OperatorSet(address indexed controller, address indexed operator, bool approved); - - /** - * @dev Sets or removes an operator for the caller. - * - * @param operator The address of the operator. - * @param approved The approval status. - * @return Whether the call was executed successfully or not - */ - function setOperator(address operator, bool approved) external returns (bool); - - /** - * @dev Returns `true` if the `operator` is approved as an operator for an `controller`. - * - * @param controller The address of the controller. - * @param operator The address of the operator. - * @return status The approval status - */ - function isOperator(address controller, address operator) external view returns (bool status); -} - -/// @dev Interface of the asynchronous deposit Vault interface of ERC7540, as defined in -/// https://eips.ethereum.org/EIPS/eip-7540 -interface IERC7540Deposit is IERC7540Operator { - event DepositRequest( - address indexed controller, address indexed owner, uint256 indexed requestId, address sender, uint256 assets - ); - /** - * @dev Transfers assets from sender into the Vault and submits a Request for asynchronous deposit. - * - * - MUST support ERC-20 approve / transferFrom on asset as a deposit Request flow. - * - MUST revert if all of assets cannot be requested for deposit. - * - owner MUST be msg.sender unless some unspecified explicit approval is given by the caller, - * approval of ERC-20 tokens from owner to sender is NOT enough. - * - * @param assets the amount of deposit assets to transfer from owner - * @param controller the controller of the request who will be able to operate the request - * @param owner the source of the deposit assets - * - * NOTE: most implementations will require pre-approval of the Vault with the Vault's underlying asset token. - */ - - function requestDeposit(uint256 assets, address controller, address owner) external returns (uint256 requestId); - - /** - * @dev Returns the amount of requested assets in Pending state. - * - * - MUST NOT include any assets in Claimable state for deposit or mint. - * - MUST NOT show any variations depending on the caller. - * - MUST NOT revert unless due to integer overflow caused by an unreasonably large input. - */ - function pendingDepositRequest(uint256 requestId, address controller) - external - view - returns (uint256 pendingAssets); - - /** - * @dev Returns the amount of requested assets in Claimable state for the controller to deposit or mint. - * - * - MUST NOT include any assets in Pending state. - * - MUST NOT show any variations depending on the caller. - * - MUST NOT revert unless due to integer overflow caused by an unreasonably large input. - */ - function claimableDepositRequest(uint256 requestId, address controller) - external - view - returns (uint256 claimableAssets); - - /** - * @dev Mints shares Vault shares to receiver by claiming the Request of the controller. - * - * - MUST emit the Deposit event. - * - controller MUST equal msg.sender unless the controller has approved the msg.sender as an operator. - */ - function deposit(uint256 assets, address receiver, address controller) external returns (uint256 shares); - - /** - * @dev Mints exactly shares Vault shares to receiver by claiming the Request of the controller. - * - * - MUST emit the Deposit event. - * - controller MUST equal msg.sender unless the controller has approved the msg.sender as an operator. - */ - function mint(uint256 shares, address receiver, address controller) external returns (uint256 assets); -} - -/// @dev Interface of the asynchronous deposit Vault interface of ERC7540, as defined in -/// https://eips.ethereum.org/EIPS/eip-7540 -interface IERC7540Redeem is IERC7540Operator { - event RedeemRequest( - address indexed controller, address indexed owner, uint256 indexed requestId, address sender, uint256 assets - ); - - /** - * @dev Assumes control of shares from sender into the Vault and submits a Request for asynchronous redeem. - * - * - MUST support a redeem Request flow where the control of shares is taken from sender directly - * where msg.sender has ERC-20 approval over the shares of owner. - * - MUST revert if all of shares cannot be requested for redeem. - * - * @param shares the amount of shares to be redeemed to transfer from owner - * @param controller the controller of the request who will be able to operate the request - * @param owner the source of the shares to be redeemed - * - * NOTE: most implementations will require pre-approval of the Vault with the Vault's share token. - */ - function requestRedeem(uint256 shares, address controller, address owner) external returns (uint256 requestId); - - /** - * @dev Returns the amount of requested shares in Pending state. - * - * - MUST NOT include any shares in Claimable state for redeem or withdraw. - * - MUST NOT show any variations depending on the caller. - * - MUST NOT revert unless due to integer overflow caused by an unreasonably large input. - */ - function pendingRedeemRequest(uint256 requestId, address controller) - external - view - returns (uint256 pendingShares); - - /** - * @dev Returns the amount of requested shares in Claimable state for the controller to redeem or withdraw. - * - * - MUST NOT include any shares in Pending state for redeem or withdraw. - * - MUST NOT show any variations depending on the caller. - * - MUST NOT revert unless due to integer overflow caused by an unreasonably large input. - */ - function claimableRedeemRequest(uint256 requestId, address controller) - external - view - returns (uint256 claimableShares); -} - -/// @dev Interface of the fully asynchronous Vault interface of ERC7540, as defined in -/// https://eips.ethereum.org/EIPS/eip-7540 -interface IERC7540 is IERC7540Deposit, IERC7540Redeem, IERC7575 {} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC7575.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC7575.sol deleted file mode 100644 index 207e3e7fec..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IERC7575.sol +++ /dev/null @@ -1,241 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import {IERC165} from "./IERC165.sol"; - -/// @dev Interface of the ERC7575 "Multi-Asset ERC-4626 Vaults", as defined in -/// https://eips.ethereum.org/EIPS/eip-7575 -interface IERC7575 is IERC165 { - event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares); - event Withdraw( - address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares - ); - - /** - * @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - * - * - MUST be an ERC-20 token contract. - * - MUST NOT revert. - */ - function asset() external view returns (address assetTokenAddress); - - /** - * @dev Returns the address of the share token - * - * - MUST be an ERC-20 token contract. - * - MUST NOT revert. - */ - function share() external view returns (address shareTokenAddress); - - /** - * @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal - * scenario where all the conditions are met. - * - * - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - * - MUST NOT show any variations depending on the caller. - * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - * - MUST NOT revert. - * - * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - * from. - */ - function convertToShares(uint256 assets) external view returns (uint256 shares); - - /** - * @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal - * scenario where all the conditions are met. - * - * - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - * - MUST NOT show any variations depending on the caller. - * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - * - MUST NOT revert. - * - * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - * from. - */ - function convertToAssets(uint256 shares) external view returns (uint256 assets); - - /** - * @dev Returns the total amount of the underlying asset that is “managed” by Vault. - * - * - SHOULD include any compounding that occurs from yield. - * - MUST be inclusive of any fees that are charged against assets in the Vault. - * - MUST NOT revert. - */ - function totalAssets() external view returns (uint256 totalManagedAssets); - - /** - * @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, - * through a deposit call. - * - * - MUST return a limited value if receiver is subject to some deposit limit. - * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - * - MUST NOT revert. - */ - function maxDeposit(address receiver) external view returns (uint256 maxAssets); - - /** - * @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given - * current on-chain conditions. - * - * - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit - * call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called - * in the same transaction. - * - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the - * deposit would be accepted, regardless if the user has enough tokens approved, etc. - * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - * - MUST NOT revert. - * - * NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in - * share price or some other type of condition, meaning the depositor will lose assets by depositing. - */ - function previewDeposit(uint256 assets) external view returns (uint256 shares); - - /** - * @dev Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. - * - * - MUST emit the Deposit event. - * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - * deposit execution, and are accounted for during deposit. - * - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not - * approving enough underlying tokens to the Vault contract, etc). - * - * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - */ - function deposit(uint256 assets, address receiver) external returns (uint256 shares); - - /** - * @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - * - MUST return a limited value if receiver is subject to some mint limit. - * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - * - MUST NOT revert. - */ - function maxMint(address receiver) external view returns (uint256 maxShares); - - /** - * @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given - * current on-chain conditions. - * - * - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call - * in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the - * same transaction. - * - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint - * would be accepted, regardless if the user has enough tokens approved, etc. - * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - * - MUST NOT revert. - * - * NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in - * share price or some other type of condition, meaning the depositor will lose assets by minting. - */ - function previewMint(uint256 shares) external view returns (uint256 assets); - - /** - * @dev Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. - * - * - MUST emit the Deposit event. - * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint - * execution, and are accounted for during mint. - * - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not - * approving enough underlying tokens to the Vault contract, etc). - * - * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - */ - function mint(uint256 shares, address receiver) external returns (uint256 assets); - - /** - * @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the - * Vault, through a withdraw call. - * - * - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - * - MUST NOT revert. - */ - function maxWithdraw(address owner) external view returns (uint256 maxAssets); - - /** - * @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, - * given current on-chain conditions. - * - * - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw - * call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if - * called - * in the same transaction. - * - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though - * the withdrawal would be accepted, regardless if the user has enough shares, etc. - * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - * - MUST NOT revert. - * - * NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in - * share price or some other type of condition, meaning the depositor will lose assets by depositing. - */ - function previewWithdraw(uint256 assets) external view returns (uint256 shares); - - /** - * @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver. - * - * - MUST emit the Withdraw event. - * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - * withdraw execution, and are accounted for during withdraw. - * - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner - * not having enough shares, etc). - * - * Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - * Those methods should be performed separately. - */ - function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); - - /** - * @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, - * through a redeem call. - * - * - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - * - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - * - MUST NOT revert. - */ - function maxRedeem(address owner) external view returns (uint256 maxShares); - - /** - * @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, - * given current on-chain conditions. - * - * - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call - * in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the - * same transaction. - * - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the - * redemption would be accepted, regardless if the user has enough shares, etc. - * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - * - MUST NOT revert. - * - * NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in - * share price or some other type of condition, meaning the depositor will lose assets by redeeming. - */ - function previewRedeem(uint256 shares) external view returns (uint256 assets); - - /** - * @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver. - * - * - MUST emit the Withdraw event. - * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - * redeem execution, and are accounted for during redeem. - * - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner - * not having enough shares, etc). - * - * NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - * Those methods should be performed separately. - */ - function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets); -} - -/// @dev Interface of the ERC20 share token, as defined in -/// https://eips.ethereum.org/EIPS/eip-7575 -interface IERC7575Share is IERC165 { - event VaultUpdate(address indexed asset, address vault); - - /** - * @dev Returns the address of the Vault for the given asset. - * - * @param asset the ERC-20 token to deposit with into the Vault - */ - function vault(address asset) external view returns (address); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IMulticall3.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IMulticall3.sol deleted file mode 100644 index 0d031b71dc..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/interfaces/IMulticall3.sol +++ /dev/null @@ -1,73 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -interface IMulticall3 { - struct Call { - address target; - bytes callData; - } - - struct Call3 { - address target; - bool allowFailure; - bytes callData; - } - - struct Call3Value { - address target; - bool allowFailure; - uint256 value; - bytes callData; - } - - struct Result { - bool success; - bytes returnData; - } - - function aggregate(Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes[] memory returnData); - - function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData); - - function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData); - - function blockAndAggregate(Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); - - function getBasefee() external view returns (uint256 basefee); - - function getBlockHash(uint256 blockNumber) external view returns (bytes32 blockHash); - - function getBlockNumber() external view returns (uint256 blockNumber); - - function getChainId() external view returns (uint256 chainid); - - function getCurrentBlockCoinbase() external view returns (address coinbase); - - function getCurrentBlockDifficulty() external view returns (uint256 difficulty); - - function getCurrentBlockGasLimit() external view returns (uint256 gaslimit); - - function getCurrentBlockTimestamp() external view returns (uint256 timestamp); - - function getEthBalance(address addr) external view returns (uint256 balance); - - function getLastBlockHash() external view returns (bytes32 blockHash); - - function tryAggregate(bool requireSuccess, Call[] calldata calls) - external - payable - returns (Result[] memory returnData); - - function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/src/safeconsole.sol b/packages/wallet-contracts/Counter/lib/forge-std/src/safeconsole.sol deleted file mode 100644 index 87c475a5b0..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/src/safeconsole.sol +++ /dev/null @@ -1,13937 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -/// @author philogy -/// @dev Code generated automatically by script. -library safeconsole { - uint256 constant CONSOLE_ADDR = 0x000000000000000000000000000000000000000000636F6e736F6c652e6c6f67; - - // Credit to [0age](https://twitter.com/z0age/status/1654922202930888704) and [0xdapper](https://github.com/foundry-rs/forge-std/pull/374) - // for the view-to-pure log trick. - function _sendLogPayload(uint256 offset, uint256 size) private pure { - function(uint256, uint256) internal view fnIn = _sendLogPayloadView; - function(uint256, uint256) internal pure pureSendLogPayload; - /// @solidity memory-safe-assembly - assembly { - pureSendLogPayload := fnIn - } - pureSendLogPayload(offset, size); - } - - function _sendLogPayloadView(uint256 offset, uint256 size) private view { - /// @solidity memory-safe-assembly - assembly { - pop(staticcall(gas(), CONSOLE_ADDR, offset, size, 0x0, 0x0)) - } - } - - function _memcopy(uint256 fromOffset, uint256 toOffset, uint256 length) private pure { - function(uint256, uint256, uint256) internal view fnIn = _memcopyView; - function(uint256, uint256, uint256) internal pure pureMemcopy; - /// @solidity memory-safe-assembly - assembly { - pureMemcopy := fnIn - } - pureMemcopy(fromOffset, toOffset, length); - } - - function _memcopyView(uint256 fromOffset, uint256 toOffset, uint256 length) private view { - /// @solidity memory-safe-assembly - assembly { - pop(staticcall(gas(), 0x4, fromOffset, length, toOffset, length)) - } - } - - function logMemory(uint256 offset, uint256 length) internal pure { - if (offset >= 0x60) { - // Sufficient memory before slice to prepare call header. - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(sub(offset, 0x60)) - m1 := mload(sub(offset, 0x40)) - m2 := mload(sub(offset, 0x20)) - // Selector of `log(bytes)`. - mstore(sub(offset, 0x60), 0x0be77f56) - mstore(sub(offset, 0x40), 0x20) - mstore(sub(offset, 0x20), length) - } - _sendLogPayload(offset - 0x44, length + 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(sub(offset, 0x60), m0) - mstore(sub(offset, 0x40), m1) - mstore(sub(offset, 0x20), m2) - } - } else { - // Insufficient space, so copy slice forward, add header and reverse. - bytes32 m0; - bytes32 m1; - bytes32 m2; - uint256 endOffset = offset + length; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(add(endOffset, 0x00)) - m1 := mload(add(endOffset, 0x20)) - m2 := mload(add(endOffset, 0x40)) - } - _memcopy(offset, offset + 0x60, length); - /// @solidity memory-safe-assembly - assembly { - // Selector of `log(bytes)`. - mstore(add(offset, 0x00), 0x0be77f56) - mstore(add(offset, 0x20), 0x20) - mstore(add(offset, 0x40), length) - } - _sendLogPayload(offset + 0x1c, length + 0x44); - _memcopy(offset + 0x60, offset, length); - /// @solidity memory-safe-assembly - assembly { - mstore(add(endOffset, 0x00), m0) - mstore(add(endOffset, 0x20), m1) - mstore(add(endOffset, 0x40), m2) - } - } - } - - function log(address p0) internal pure { - bytes32 m0; - bytes32 m1; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(address)`. - mstore(0x00, 0x2c2ecbc2) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(bool p0) internal pure { - bytes32 m0; - bytes32 m1; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(bool)`. - mstore(0x00, 0x32458eed) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(uint256 p0) internal pure { - bytes32 m0; - bytes32 m1; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(uint256)`. - mstore(0x00, 0xf82c50f1) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(bytes32 p0) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(string)`. - mstore(0x00, 0x41304fac) - mstore(0x20, 0x20) - writeString(0x40, p0) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,address)`. - mstore(0x00, 0xdaf0d4aa) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,bool)`. - mstore(0x00, 0x75b605d3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,uint256)`. - mstore(0x00, 0x8309e8a8) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,string)`. - mstore(0x00, 0x759f86bb) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,address)`. - mstore(0x00, 0x853c4849) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,bool)`. - mstore(0x00, 0x2a110e83) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,uint256)`. - mstore(0x00, 0x399174d3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,string)`. - mstore(0x00, 0x8feac525) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,address)`. - mstore(0x00, 0x69276c86) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,bool)`. - mstore(0x00, 0x1c9d7eb3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,uint256)`. - mstore(0x00, 0xf666715a) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,string)`. - mstore(0x00, 0x643fd0df) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,address)`. - mstore(0x00, 0x319af333) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,bool)`. - mstore(0x00, 0xc3b55635) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,uint256)`. - mstore(0x00, 0xb60e72cc) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,string)`. - mstore(0x00, 0x4b5c4277) - mstore(0x20, 0x40) - mstore(0x40, 0x80) - writeString(0x60, p0) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,address)`. - mstore(0x00, 0x018c84c2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,bool)`. - mstore(0x00, 0xf2a66286) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,uint256)`. - mstore(0x00, 0x17fe6185) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,address,string)`. - mstore(0x00, 0x007150be) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,address)`. - mstore(0x00, 0xf11699ed) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,bool)`. - mstore(0x00, 0xeb830c92) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,uint256)`. - mstore(0x00, 0x9c4f99fb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,bool,string)`. - mstore(0x00, 0x212255cc) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,address)`. - mstore(0x00, 0x7bc0d848) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,bool)`. - mstore(0x00, 0x678209a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,uint256)`. - mstore(0x00, 0xb69bcaf6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,uint256,string)`. - mstore(0x00, 0xa1f2e8aa) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,address)`. - mstore(0x00, 0xf08744e8) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,bool)`. - mstore(0x00, 0xcf020fb1) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,uint256)`. - mstore(0x00, 0x67dd6ff1) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(address,string,string)`. - mstore(0x00, 0xfb772265) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bool p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,address)`. - mstore(0x00, 0xd2763667) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,bool)`. - mstore(0x00, 0x18c9c746) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,uint256)`. - mstore(0x00, 0x5f7b9afb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,address,string)`. - mstore(0x00, 0xde9a9270) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,address)`. - mstore(0x00, 0x1078f68d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,bool)`. - mstore(0x00, 0x50709698) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,uint256)`. - mstore(0x00, 0x12f21602) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,bool,string)`. - mstore(0x00, 0x2555fa46) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,address)`. - mstore(0x00, 0x088ef9d2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,bool)`. - mstore(0x00, 0xe8defba9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,uint256)`. - mstore(0x00, 0x37103367) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,uint256,string)`. - mstore(0x00, 0xc3fc3970) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,address)`. - mstore(0x00, 0x9591b953) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,bool)`. - mstore(0x00, 0xdbb4c247) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,uint256)`. - mstore(0x00, 0x1093ee11) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(bool,string,string)`. - mstore(0x00, 0xb076847f) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(uint256 p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,address)`. - mstore(0x00, 0xbcfd9be0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,bool)`. - mstore(0x00, 0x9b6ec042) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,uint256)`. - mstore(0x00, 0x5a9b5ed5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,address,string)`. - mstore(0x00, 0x63cb41f9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,address)`. - mstore(0x00, 0x35085f7b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,bool)`. - mstore(0x00, 0x20718650) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,uint256)`. - mstore(0x00, 0x20098014) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,bool,string)`. - mstore(0x00, 0x85775021) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,address)`. - mstore(0x00, 0x5c96b331) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,bool)`. - mstore(0x00, 0x4766da72) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,uint256)`. - mstore(0x00, 0xd1ed7a3c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,uint256,string)`. - mstore(0x00, 0x71d04af2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,address)`. - mstore(0x00, 0x7afac959) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,bool)`. - mstore(0x00, 0x4ceda75a) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,uint256)`. - mstore(0x00, 0x37aa7d4c) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(uint256,string,string)`. - mstore(0x00, 0xb115611f) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,address)`. - mstore(0x00, 0xfcec75e0) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,bool)`. - mstore(0x00, 0xc91d5ed4) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,uint256)`. - mstore(0x00, 0x0d26b925) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,address,string)`. - mstore(0x00, 0xe0e9ad4f) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,address)`. - mstore(0x00, 0x932bbb38) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,bool)`. - mstore(0x00, 0x850b7ad6) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,uint256)`. - mstore(0x00, 0xc95958d6) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,bool,string)`. - mstore(0x00, 0xe298f47d) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,address)`. - mstore(0x00, 0x1c7ec448) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,bool)`. - mstore(0x00, 0xca7733b1) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,uint256)`. - mstore(0x00, 0xca47c4eb) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,uint256,string)`. - mstore(0x00, 0x5970e089) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,address)`. - mstore(0x00, 0x95ed0195) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,bool)`. - mstore(0x00, 0xb0e0f9b5) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,uint256)`. - mstore(0x00, 0x5821efa1) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - // Selector of `log(string,string,string)`. - mstore(0x00, 0x2ced7cef) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, 0xe0) - writeString(0x80, p0) - writeString(0xc0, p1) - writeString(0x100, p2) - } - _sendLogPayload(0x1c, 0x124); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - } - } - - function log(address p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,address)`. - mstore(0x00, 0x665bf134) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,bool)`. - mstore(0x00, 0x0e378994) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,uint256)`. - mstore(0x00, 0x94250d77) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,address,string)`. - mstore(0x00, 0xf808da20) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,address)`. - mstore(0x00, 0x9f1bc36e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,bool)`. - mstore(0x00, 0x2cd4134a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,uint256)`. - mstore(0x00, 0x3971e78c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,bool,string)`. - mstore(0x00, 0xaa6540c8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,address)`. - mstore(0x00, 0x8da6def5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,bool)`. - mstore(0x00, 0x9b4254e2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,uint256)`. - mstore(0x00, 0xbe553481) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,uint256,string)`. - mstore(0x00, 0xfdb4f990) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,address)`. - mstore(0x00, 0x8f736d16) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,bool)`. - mstore(0x00, 0x6f1a594e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,uint256)`. - mstore(0x00, 0xef1cefe7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,address,string,string)`. - mstore(0x00, 0x21bdaf25) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,address)`. - mstore(0x00, 0x660375dd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,bool)`. - mstore(0x00, 0xa6f50b0f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,uint256)`. - mstore(0x00, 0xa75c59de) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,address,string)`. - mstore(0x00, 0x2dd778e6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,address)`. - mstore(0x00, 0xcf394485) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,bool)`. - mstore(0x00, 0xcac43479) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,uint256)`. - mstore(0x00, 0x8c4e5de6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,bool,string)`. - mstore(0x00, 0xdfc4a2e8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,address)`. - mstore(0x00, 0xccf790a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,bool)`. - mstore(0x00, 0xc4643e20) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,uint256)`. - mstore(0x00, 0x386ff5f4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,uint256,string)`. - mstore(0x00, 0x0aa6cfad) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,address)`. - mstore(0x00, 0x19fd4956) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,bool)`. - mstore(0x00, 0x50ad461d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,uint256)`. - mstore(0x00, 0x80e6a20b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,bool,string,string)`. - mstore(0x00, 0x475c5c33) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,address)`. - mstore(0x00, 0x478d1c62) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,bool)`. - mstore(0x00, 0xa1bcc9b3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,uint256)`. - mstore(0x00, 0x100f650e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,address,string)`. - mstore(0x00, 0x1da986ea) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,address)`. - mstore(0x00, 0xa31bfdcc) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,bool)`. - mstore(0x00, 0x3bf5e537) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,uint256)`. - mstore(0x00, 0x22f6b999) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,bool,string)`. - mstore(0x00, 0xc5ad85f9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,address)`. - mstore(0x00, 0x20e3984d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,bool)`. - mstore(0x00, 0x66f1bc67) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,uint256)`. - mstore(0x00, 0x34f0e636) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,uint256,string)`. - mstore(0x00, 0x4a28c017) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,address)`. - mstore(0x00, 0x5c430d47) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,bool)`. - mstore(0x00, 0xcf18105c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,uint256)`. - mstore(0x00, 0xbf01f891) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,uint256,string,string)`. - mstore(0x00, 0x88a8c406) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,address)`. - mstore(0x00, 0x0d36fa20) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,bool)`. - mstore(0x00, 0x0df12b76) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,uint256)`. - mstore(0x00, 0x457fe3cf) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,address,string)`. - mstore(0x00, 0xf7e36245) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,address)`. - mstore(0x00, 0x205871c2) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,bool)`. - mstore(0x00, 0x5f1d5c9f) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,uint256)`. - mstore(0x00, 0x515e38b6) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,bool,string)`. - mstore(0x00, 0xbc0b61fe) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,address)`. - mstore(0x00, 0x63183678) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,bool)`. - mstore(0x00, 0x0ef7e050) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,uint256)`. - mstore(0x00, 0x1dc8e1b8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,uint256,string)`. - mstore(0x00, 0x448830a8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,address)`. - mstore(0x00, 0xa04e2f87) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,bool)`. - mstore(0x00, 0x35a5071f) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,uint256)`. - mstore(0x00, 0x159f8927) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(address,string,string,string)`. - mstore(0x00, 0x5d02c50b) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bool p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,address)`. - mstore(0x00, 0x1d14d001) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,bool)`. - mstore(0x00, 0x46600be0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,uint256)`. - mstore(0x00, 0x0c66d1be) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,address,string)`. - mstore(0x00, 0xd812a167) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,address)`. - mstore(0x00, 0x1c41a336) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,bool)`. - mstore(0x00, 0x6a9c478b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,uint256)`. - mstore(0x00, 0x07831502) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,bool,string)`. - mstore(0x00, 0x4a66cb34) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,address)`. - mstore(0x00, 0x136b05dd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,bool)`. - mstore(0x00, 0xd6019f1c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,uint256)`. - mstore(0x00, 0x7bf181a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,uint256,string)`. - mstore(0x00, 0x51f09ff8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,address)`. - mstore(0x00, 0x6f7c603e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,bool)`. - mstore(0x00, 0xe2bfd60b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,uint256)`. - mstore(0x00, 0xc21f64c7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,address,string,string)`. - mstore(0x00, 0xa73c1db6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,address)`. - mstore(0x00, 0xf4880ea4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,bool)`. - mstore(0x00, 0xc0a302d8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,uint256)`. - mstore(0x00, 0x4c123d57) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,address,string)`. - mstore(0x00, 0xa0a47963) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,address)`. - mstore(0x00, 0x8c329b1a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,bool)`. - mstore(0x00, 0x3b2a5ce0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,uint256)`. - mstore(0x00, 0x6d7045c1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,bool,string)`. - mstore(0x00, 0x2ae408d4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,address)`. - mstore(0x00, 0x54a7a9a0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,bool)`. - mstore(0x00, 0x619e4d0e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,uint256)`. - mstore(0x00, 0x0bb00eab) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,uint256,string)`. - mstore(0x00, 0x7dd4d0e0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,address)`. - mstore(0x00, 0xf9ad2b89) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,bool)`. - mstore(0x00, 0xb857163a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,uint256)`. - mstore(0x00, 0xe3a9ca2f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,bool,string,string)`. - mstore(0x00, 0x6d1e8751) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,address)`. - mstore(0x00, 0x26f560a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,bool)`. - mstore(0x00, 0xb4c314ff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,uint256)`. - mstore(0x00, 0x1537dc87) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,address,string)`. - mstore(0x00, 0x1bb3b09a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,address)`. - mstore(0x00, 0x9acd3616) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,bool)`. - mstore(0x00, 0xceb5f4d7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,uint256)`. - mstore(0x00, 0x7f9bbca2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,bool,string)`. - mstore(0x00, 0x9143dbb1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,address)`. - mstore(0x00, 0x00dd87b9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,bool)`. - mstore(0x00, 0xbe984353) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,uint256)`. - mstore(0x00, 0x374bb4b2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,uint256,string)`. - mstore(0x00, 0x8e69fb5d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,address)`. - mstore(0x00, 0xfedd1fff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,bool)`. - mstore(0x00, 0xe5e70b2b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,uint256)`. - mstore(0x00, 0x6a1199e2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,uint256,string,string)`. - mstore(0x00, 0xf5bc2249) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,address)`. - mstore(0x00, 0x2b2b18dc) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,bool)`. - mstore(0x00, 0x6dd434ca) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,uint256)`. - mstore(0x00, 0xa5cada94) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,address,string)`. - mstore(0x00, 0x12d6c788) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,address)`. - mstore(0x00, 0x538e06ab) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,bool)`. - mstore(0x00, 0xdc5e935b) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,uint256)`. - mstore(0x00, 0x1606a393) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,bool,string)`. - mstore(0x00, 0x483d0416) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,address)`. - mstore(0x00, 0x1596a1ce) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,bool)`. - mstore(0x00, 0x6b0e5d53) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,uint256)`. - mstore(0x00, 0x28863fcb) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,uint256,string)`. - mstore(0x00, 0x1ad96de6) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,address)`. - mstore(0x00, 0x97d394d8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,bool)`. - mstore(0x00, 0x1e4b87e5) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,uint256)`. - mstore(0x00, 0x7be0c3eb) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(bool,string,string,string)`. - mstore(0x00, 0x1762e32a) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(uint256 p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,address)`. - mstore(0x00, 0x2488b414) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,bool)`. - mstore(0x00, 0x091ffaf5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,uint256)`. - mstore(0x00, 0x736efbb6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,address,string)`. - mstore(0x00, 0x031c6f73) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,address)`. - mstore(0x00, 0xef72c513) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,bool)`. - mstore(0x00, 0xe351140f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,uint256)`. - mstore(0x00, 0x5abd992a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,bool,string)`. - mstore(0x00, 0x90fb06aa) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,address)`. - mstore(0x00, 0x15c127b5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,bool)`. - mstore(0x00, 0x5f743a7c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,uint256)`. - mstore(0x00, 0x0c9cd9c1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,uint256,string)`. - mstore(0x00, 0xddb06521) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,address)`. - mstore(0x00, 0x9cba8fff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,bool)`. - mstore(0x00, 0xcc32ab07) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,uint256)`. - mstore(0x00, 0x46826b5d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,address,string,string)`. - mstore(0x00, 0x3e128ca3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,address)`. - mstore(0x00, 0xa1ef4cbb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,bool)`. - mstore(0x00, 0x454d54a5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,uint256)`. - mstore(0x00, 0x078287f5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,address,string)`. - mstore(0x00, 0xade052c7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,address)`. - mstore(0x00, 0x69640b59) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,bool)`. - mstore(0x00, 0xb6f577a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,uint256)`. - mstore(0x00, 0x7464ce23) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,bool,string)`. - mstore(0x00, 0xdddb9561) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,address)`. - mstore(0x00, 0x88cb6041) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,bool)`. - mstore(0x00, 0x91a02e2a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,uint256)`. - mstore(0x00, 0xc6acc7a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,uint256,string)`. - mstore(0x00, 0xde03e774) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,address)`. - mstore(0x00, 0xef529018) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,bool)`. - mstore(0x00, 0xeb928d7f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,uint256)`. - mstore(0x00, 0x2c1d0746) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,bool,string,string)`. - mstore(0x00, 0x68c8b8bd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,address)`. - mstore(0x00, 0x56a5d1b1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,bool)`. - mstore(0x00, 0x15cac476) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,uint256)`. - mstore(0x00, 0x88f6e4b2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,address,string)`. - mstore(0x00, 0x6cde40b8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,address)`. - mstore(0x00, 0x9a816a83) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,bool)`. - mstore(0x00, 0xab085ae6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,uint256)`. - mstore(0x00, 0xeb7f6fd2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,bool,string)`. - mstore(0x00, 0xa5b4fc99) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,address)`. - mstore(0x00, 0xfa8185af) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,bool)`. - mstore(0x00, 0xc598d185) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - /// @solidity memory-safe-assembly - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,uint256)`. - mstore(0x00, 0x193fb800) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,uint256,string)`. - mstore(0x00, 0x59cfcbe3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,address)`. - mstore(0x00, 0x42d21db7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,bool)`. - mstore(0x00, 0x7af6ab25) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,uint256)`. - mstore(0x00, 0x5da297eb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,uint256,string,string)`. - mstore(0x00, 0x27d8afd2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,address)`. - mstore(0x00, 0x6168ed61) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,bool)`. - mstore(0x00, 0x90c30a56) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,uint256)`. - mstore(0x00, 0xe8d3018d) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,address,string)`. - mstore(0x00, 0x9c3adfa1) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,address)`. - mstore(0x00, 0xae2ec581) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,bool)`. - mstore(0x00, 0xba535d9c) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,uint256)`. - mstore(0x00, 0xcf009880) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,bool,string)`. - mstore(0x00, 0xd2d423cd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,address)`. - mstore(0x00, 0x3b2279b4) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,bool)`. - mstore(0x00, 0x691a8f74) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,uint256)`. - mstore(0x00, 0x82c25b74) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,uint256,string)`. - mstore(0x00, 0xb7b914ca) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,address)`. - mstore(0x00, 0xd583c602) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,bool)`. - mstore(0x00, 0xb3a6b6bd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,uint256)`. - mstore(0x00, 0xb028c9bd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(uint256,string,string,string)`. - mstore(0x00, 0x21ad0683) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,address)`. - mstore(0x00, 0xed8f28f6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,bool)`. - mstore(0x00, 0xb59dbd60) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,uint256)`. - mstore(0x00, 0x8ef3f399) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,address,string)`. - mstore(0x00, 0x800a1c67) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,address)`. - mstore(0x00, 0x223603bd) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,bool)`. - mstore(0x00, 0x79884c2b) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,uint256)`. - mstore(0x00, 0x3e9f866a) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,bool,string)`. - mstore(0x00, 0x0454c079) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,address)`. - mstore(0x00, 0x63fb8bc5) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,bool)`. - mstore(0x00, 0xfc4845f0) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,uint256)`. - mstore(0x00, 0xf8f51b1e) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,uint256,string)`. - mstore(0x00, 0x5a477632) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,address)`. - mstore(0x00, 0xaabc9a31) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,bool)`. - mstore(0x00, 0x5f15d28c) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,uint256)`. - mstore(0x00, 0x91d1112e) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,address,string,string)`. - mstore(0x00, 0x245986f2) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,address)`. - mstore(0x00, 0x33e9dd1d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,bool)`. - mstore(0x00, 0x958c28c6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,uint256)`. - mstore(0x00, 0x5d08bb05) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,address,string)`. - mstore(0x00, 0x2d8e33a4) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,address)`. - mstore(0x00, 0x7190a529) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,bool)`. - mstore(0x00, 0x895af8c5) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,uint256)`. - mstore(0x00, 0x8e3f78a9) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,bool,string)`. - mstore(0x00, 0x9d22d5dd) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,address)`. - mstore(0x00, 0x935e09bf) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,bool)`. - mstore(0x00, 0x8af7cf8a) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,uint256)`. - mstore(0x00, 0x64b5bb67) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,uint256,string)`. - mstore(0x00, 0x742d6ee7) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,address)`. - mstore(0x00, 0xe0625b29) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,bool)`. - mstore(0x00, 0x3f8a701d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,uint256)`. - mstore(0x00, 0x24f91465) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,bool,string,string)`. - mstore(0x00, 0xa826caeb) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,address)`. - mstore(0x00, 0x5ea2b7ae) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,bool)`. - mstore(0x00, 0x82112a42) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,uint256)`. - mstore(0x00, 0x4f04fdc6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,address,string)`. - mstore(0x00, 0x9ffb2f93) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,address)`. - mstore(0x00, 0xe0e95b98) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,bool)`. - mstore(0x00, 0x354c36d6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,uint256)`. - mstore(0x00, 0xe41b6f6f) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,bool,string)`. - mstore(0x00, 0xabf73a98) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,address)`. - mstore(0x00, 0xe21de278) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,bool)`. - mstore(0x00, 0x7626db92) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,uint256)`. - mstore(0x00, 0xa7a87853) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,uint256,string)`. - mstore(0x00, 0x854b3496) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,address)`. - mstore(0x00, 0x7c4632a4) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,bool)`. - mstore(0x00, 0x7d24491d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,uint256)`. - mstore(0x00, 0xc67ea9d1) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,uint256,string,string)`. - mstore(0x00, 0x5ab84e1f) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,address)`. - mstore(0x00, 0x439c7bef) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,bool)`. - mstore(0x00, 0x5ccd4e37) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,uint256)`. - mstore(0x00, 0x7cc3c607) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,address,string)`. - mstore(0x00, 0xeb1bff80) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,address)`. - mstore(0x00, 0xc371c7db) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,bool)`. - mstore(0x00, 0x40785869) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,uint256)`. - mstore(0x00, 0xd6aefad2) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,bool,string)`. - mstore(0x00, 0x5e84b0ea) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,address)`. - mstore(0x00, 0x1023f7b2) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,bool)`. - mstore(0x00, 0xc3a8a654) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,uint256)`. - mstore(0x00, 0xf45d7d2c) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,uint256,string)`. - mstore(0x00, 0x5d1a971a) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,address)`. - mstore(0x00, 0x6d572f44) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,bool)`. - mstore(0x00, 0x2c1754ed) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,uint256)`. - mstore(0x00, 0x8eafb02b) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - bytes32 m11; - bytes32 m12; - /// @solidity memory-safe-assembly - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - m11 := mload(0x160) - m12 := mload(0x180) - // Selector of `log(string,string,string,string)`. - mstore(0x00, 0xde68f20a) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, 0x140) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - writeString(0x160, p3) - } - _sendLogPayload(0x1c, 0x184); - /// @solidity memory-safe-assembly - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - mstore(0x160, m11) - mstore(0x180, m12) - } - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/CommonBase.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/CommonBase.t.sol deleted file mode 100644 index 4a6eb34fd8..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/CommonBase.t.sol +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {CommonBase} from "../src/Base.sol"; -import {StdConstants} from "../src/StdConstants.sol"; -import {Test} from "../src/Test.sol"; - -contract CommonBaseTest is Test { - function testVmAddressValue() public pure { - assertEq(VM_ADDRESS, address(StdConstants.VM)); - } - - function testConsoleValue() public pure { - assertEq(CONSOLE, StdConstants.CONSOLE); - } - - function testCreate2FactoryValue() public pure { - assertEq(CREATE2_FACTORY, StdConstants.CREATE2_FACTORY); - } - - function testDefaultSenderValue() public pure { - assertEq(DEFAULT_SENDER, StdConstants.DEFAULT_SENDER); - } - - function testDefaultTestContractValue() public pure { - assertEq(DEFAULT_TEST_CONTRACT, StdConstants.DEFAULT_TEST_CONTRACT); - } - - function testMulticall3AddressValue() public pure { - assertEq(MULTICALL3_ADDRESS, address(StdConstants.MULTICALL3_ADDRESS)); - } - - function testSecp256k1OrderValue() public pure { - assertEq(SECP256K1_ORDER, StdConstants.SECP256K1_ORDER); - } - - function testUint256MaxValue() public pure { - assertEq(UINT256_MAX, type(uint256).max); - } - - function testVmValue() public pure { - assertEq(address(vm), address(StdConstants.VM)); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/Config.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/Config.t.sol deleted file mode 100644 index 8e2342cade..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/Config.t.sol +++ /dev/null @@ -1,352 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.13; - -import {Test} from "../src/Test.sol"; -import {Config} from "../src/Config.sol"; -import {StdConfig} from "../src/StdConfig.sol"; - -contract ConfigTest is Test, Config { - function setUp() public { - vm.setEnv("MAINNET_RPC", "https://eth.llamarpc.com"); - vm.setEnv("WETH_MAINNET", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"); - vm.setEnv("OPTIMISM_RPC", "https://mainnet.optimism.io"); - vm.setEnv("WETH_OPTIMISM", "0x4200000000000000000000000000000000000006"); - } - - function test_loadConfig() public { - // Deploy the config contract with the test fixture. - _loadConfig("./test/fixtures/config.toml", false); - - // -- MAINNET -------------------------------------------------------------- - - // Read and assert RPC URL for Mainnet (chain ID 1) - assertEq(config.getRpcUrl(1), "https://eth.llamarpc.com"); - - // Read and assert boolean values - assertTrue(config.get(1, "is_live").toBool()); - bool[] memory bool_array = config.get(1, "bool_array").toBoolArray(); - assertTrue(bool_array[0]); - assertFalse(bool_array[1]); - - // Read and assert address values - assertEq(config.get(1, "weth").toAddress(), 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); - address[] memory address_array = config.get(1, "deps").toAddressArray(); - assertEq(address_array[0], 0x0000000000000000000000000000000000000000); - assertEq(address_array[1], 0x1111111111111111111111111111111111111111); - - // Read and assert bytes32 values - assertEq(config.get(1, "word").toBytes32(), bytes32(uint256(1234))); - bytes32[] memory bytes32_array = config.get(1, "word_array").toBytes32Array(); - assertEq(bytes32_array[0], bytes32(uint256(5678))); - assertEq(bytes32_array[1], bytes32(uint256(9999))); - - // Read and assert uint values - assertEq(config.get(1, "number").toUint256(), 1234); - uint256[] memory uint_array = config.get(1, "number_array").toUint256Array(); - assertEq(uint_array[0], 5678); - assertEq(uint_array[1], 9999); - - // Read and assert int values - assertEq(config.get(1, "signed_number").toInt256(), -1234); - int256[] memory int_array = config.get(1, "signed_number_array").toInt256Array(); - assertEq(int_array[0], -5678); - assertEq(int_array[1], 9999); - - // Read and assert bytes values - assertEq(config.get(1, "b").toBytes(), hex"abcd"); - bytes[] memory bytes_array = config.get(1, "b_array").toBytesArray(); - assertEq(bytes_array[0], hex"dead"); - assertEq(bytes_array[1], hex"beef"); - - // Read and assert string values - assertEq(config.get(1, "str").toString(), "foo"); - string[] memory string_array = config.get(1, "str_array").toStringArray(); - assertEq(string_array[0], "bar"); - assertEq(string_array[1], "baz"); - - // -- OPTIMISM ------------------------------------------------------------ - - // Read and assert RPC URL for Optimism (chain ID 10) - assertEq(config.getRpcUrl(10), "https://mainnet.optimism.io"); - - // Read and assert boolean values - assertFalse(config.get(10, "is_live").toBool()); - bool_array = config.get(10, "bool_array").toBoolArray(); - assertFalse(bool_array[0]); - assertTrue(bool_array[1]); - - // Read and assert address values - assertEq(config.get(10, "weth").toAddress(), 0x4200000000000000000000000000000000000006); - address_array = config.get(10, "deps").toAddressArray(); - assertEq(address_array[0], 0x2222222222222222222222222222222222222222); - assertEq(address_array[1], 0x3333333333333333333333333333333333333333); - - // Read and assert bytes32 values - assertEq(config.get(10, "word").toBytes32(), bytes32(uint256(9999))); - bytes32_array = config.get(10, "word_array").toBytes32Array(); - assertEq(bytes32_array[0], bytes32(uint256(1234))); - assertEq(bytes32_array[1], bytes32(uint256(5678))); - - // Read and assert uint values - assertEq(config.get(10, "number").toUint256(), 9999); - uint_array = config.get(10, "number_array").toUint256Array(); - assertEq(uint_array[0], 1234); - assertEq(uint_array[1], 5678); - - // Read and assert int values - assertEq(config.get(10, "signed_number").toInt256(), 9999); - int_array = config.get(10, "signed_number_array").toInt256Array(); - assertEq(int_array[0], -1234); - assertEq(int_array[1], -5678); - - // Read and assert bytes values - assertEq(config.get(10, "b").toBytes(), hex"dcba"); - bytes_array = config.get(10, "b_array").toBytesArray(); - assertEq(bytes_array[0], hex"c0ffee"); - assertEq(bytes_array[1], hex"babe"); - - // Read and assert string values - assertEq(config.get(10, "str").toString(), "alice"); - string_array = config.get(10, "str_array").toStringArray(); - assertEq(string_array[0], "bob"); - assertEq(string_array[1], "charlie"); - } - - function test_loadConfigAndForks() public { - _loadConfigAndForks("./test/fixtures/config.toml", false); - - // assert that the map of chain id and fork ids is created and that the chain ids actually match - assertEq(forkOf[1], 0); - vm.selectFork(forkOf[1]); - assertEq(vm.getChainId(), 1); - - assertEq(forkOf[10], 1); - vm.selectFork(forkOf[10]); - assertEq(vm.getChainId(), 10); - } - - function test_writeConfig() public { - // Create a temporary copy of the config file to avoid modifying the original. - string memory originalConfig = "./test/fixtures/config.toml"; - string memory testConfig = "./test/fixtures/config.t.toml"; - vm.copyFile(originalConfig, testConfig); - - // Deploy the config contract with the temporary fixture. - _loadConfig(testConfig, false); - - // Enable writing to file bypassing the context check. - vm.store(address(config), bytes32(uint256(5)), bytes32(uint256(1))); - - { - // Update a single boolean value and verify the change. - config.set(1, "is_live", false); - - assertFalse(config.get(1, "is_live").toBool()); - - string memory content = vm.readFile(testConfig); - assertFalse(vm.parseTomlBool(content, "$.mainnet.bool.is_live")); - - // Update a single address value and verify the change. - address new_addr = 0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF; - config.set(1, "weth", new_addr); - - assertEq(config.get(1, "weth").toAddress(), new_addr); - - content = vm.readFile(testConfig); - assertEq(vm.parseTomlAddress(content, "$.mainnet.address.weth"), new_addr); - - // Update a uint array and verify the change. - uint256[] memory new_numbers = new uint256[](3); - new_numbers[0] = 1; - new_numbers[1] = 2; - new_numbers[2] = 3; - config.set(10, "number_array", new_numbers); - - uint256[] memory updated_numbers_mem = config.get(10, "number_array").toUint256Array(); - assertEq(updated_numbers_mem.length, 3); - assertEq(updated_numbers_mem[0], 1); - assertEq(updated_numbers_mem[1], 2); - assertEq(updated_numbers_mem[2], 3); - - content = vm.readFile(testConfig); - uint256[] memory updated_numbers_disk = vm.parseTomlUintArray(content, "$.optimism.uint.number_array"); - assertEq(updated_numbers_disk.length, 3); - assertEq(updated_numbers_disk[0], 1); - assertEq(updated_numbers_disk[1], 2); - assertEq(updated_numbers_disk[2], 3); - - // Update a string array and verify the change. - string[] memory new_strings = new string[](2); - new_strings[0] = "hello"; - new_strings[1] = "world"; - config.set(1, "str_array", new_strings); - - string[] memory updated_strings_mem = config.get(1, "str_array").toStringArray(); - assertEq(updated_strings_mem.length, 2); - assertEq(updated_strings_mem[0], "hello"); - assertEq(updated_strings_mem[1], "world"); - - content = vm.readFile(testConfig); - string[] memory updated_strings_disk = vm.parseTomlStringArray(content, "$.mainnet.string.str_array"); - assertEq(updated_strings_disk.length, 2); - assertEq(updated_strings_disk[0], "hello"); - assertEq(updated_strings_disk[1], "world"); - - // Create a new uint variable and verify the change. - config.set(1, "new_uint", uint256(42)); - - assertEq(config.get(1, "new_uint").toUint256(), 42); - - content = vm.readFile(testConfig); - assertEq(vm.parseTomlUint(content, "$.mainnet.uint.new_uint"), 42); - - // Create a new int variable and verify the change. - config.set(1, "new_int", int256(-42)); - - assertEq(config.get(1, "new_int").toInt256(), -42); - - content = vm.readFile(testConfig); - assertEq(vm.parseTomlInt(content, "$.mainnet.int.new_int"), -42); - - // Create a new int array and verify the change. - int256[] memory new_ints = new int256[](2); - new_ints[0] = -100; - new_ints[1] = 200; - config.set(10, "new_ints", new_ints); - - int256[] memory updated_ints_mem = config.get(10, "new_ints").toInt256Array(); - assertEq(updated_ints_mem.length, 2); - assertEq(updated_ints_mem[0], -100); - assertEq(updated_ints_mem[1], 200); - - content = vm.readFile(testConfig); - int256[] memory updated_ints_disk = vm.parseTomlIntArray(content, "$.optimism.int.new_ints"); - assertEq(updated_ints_disk.length, 2); - assertEq(updated_ints_disk[0], -100); - assertEq(updated_ints_disk[1], 200); - - // Create a new bytes32 array and verify the change. - bytes32[] memory new_words = new bytes32[](2); - new_words[0] = bytes32(uint256(0xDEAD)); - new_words[1] = bytes32(uint256(0xBEEF)); - config.set(10, "new_words", new_words); - - bytes32[] memory updated_words_mem = config.get(10, "new_words").toBytes32Array(); - assertEq(updated_words_mem.length, 2); - assertEq(updated_words_mem[0], new_words[0]); - assertEq(updated_words_mem[1], new_words[1]); - - content = vm.readFile(testConfig); - bytes32[] memory updated_words_disk = vm.parseTomlBytes32Array(content, "$.optimism.bytes32.new_words"); - assertEq(updated_words_disk.length, 2); - assertEq(vm.toString(updated_words_disk[0]), vm.toString(new_words[0])); - assertEq(vm.toString(updated_words_disk[1]), vm.toString(new_words[1])); - } - - // Clean up the temporary file. - vm.removeFile(testConfig); - } - - function test_writeUpdatesBackToFile() public { - // Create a temporary copy of the config file to avoid modifying the original. - string memory originalConfig = "./test/fixtures/config.toml"; - string memory testConfig = "./test/fixtures/write_config.t.toml"; - vm.copyFile(originalConfig, testConfig); - - // Deploy the config contract with `writeToFile = false` (disabled). - _loadConfig(testConfig, false); - - // Update a single boolean value and verify the file is NOT changed. - config.set(1, "is_live", false); - string memory content = vm.readFile(testConfig); - assertTrue(vm.parseTomlBool(content, "$.mainnet.bool.is_live"), "File should not be updated yet"); - - // Enable writing to file bypassing the context check. - vm.store(address(config), bytes32(uint256(5)), bytes32(uint256(1))); - - // Update the value again and verify the file IS changed. - config.set(1, "is_live", false); - content = vm.readFile(testConfig); - assertFalse(vm.parseTomlBool(content, "$.mainnet.bool.is_live"), "File should be updated now"); - - // Disable writing to file. - config.writeUpdatesBackToFile(false); - - // Update the value again and verify the file is NOT changed. - config.set(1, "is_live", true); - content = vm.readFile(testConfig); - assertFalse(vm.parseTomlBool(content, "$.mainnet.bool.is_live"), "File should not be updated again"); - - // Clean up the temporary file. - vm.removeFile(testConfig); - } - - function testRevert_WriteToFileInForbiddenCtxt() public { - // Cannot initialize enabling writing to file unless we are in SCRIPT mode. - vm.expectRevert(StdConfig.WriteToFileInForbiddenCtxt.selector); - _loadConfig("./test/fixtures/config.toml", true); - - // Initialize with `writeToFile = false`. - _loadConfig("./test/fixtures/config.toml", false); - - // Cannot enable writing to file unless we are in SCRIPT mode. - vm.expectRevert(StdConfig.WriteToFileInForbiddenCtxt.selector); - config.writeUpdatesBackToFile(true); - } - - function testRevert_InvalidChainKey() public { - // Create a fixture with an invalid chain key - string memory invalidChainConfig = "./test/fixtures/config_invalid_chain.toml"; - vm.writeFile( - invalidChainConfig, - string.concat( - "[mainnet]\n", - "endpoint_url = \"https://eth.llamarpc.com\"\n", - "\n", - "[mainnet.uint]\n", - "valid_number = 123\n", - "\n", - "# Invalid chain key (not a number and not a valid alias)\n", - "[invalid_chain]\n", - "endpoint_url = \"https://invalid.com\"\n", - "\n", - "[invalid_chain_9999.uint]\n", - "some_value = 456\n" - ) - ); - - vm.expectRevert(abi.encodeWithSelector(StdConfig.InvalidChainKey.selector, "invalid_chain")); - new StdConfig(invalidChainConfig, false); - vm.removeFile(invalidChainConfig); - } - - function testRevert_ChainNotInitialized() public { - _loadConfig("./test/fixtures/config.toml", false); - - // Enable writing to file bypassing the context check. - vm.store(address(config), bytes32(uint256(5)), bytes32(uint256(1))); - - // Try to write a value for a non-existent chain ID - vm.expectRevert(abi.encodeWithSelector(StdConfig.ChainNotInitialized.selector, uint256(999999))); - config.set(999999, "some_key", uint256(123)); - } - - function testRevert_UnableToParseVariable() public { - // Create a temporary fixture with an unparsable variable - string memory badParseConfig = "./test/fixtures/config_bad_parse.toml"; - vm.writeFile( - badParseConfig, - string.concat( - "[mainnet]\n", - "endpoint_url = \"https://eth.llamarpc.com\"\n", - "\n", - "[mainnet.uint]\n", - "bad_value = \"not_a_number\"\n" - ) - ); - - vm.expectRevert(abi.encodeWithSelector(StdConfig.UnableToParseVariable.selector, "bad_value")); - new StdConfig(badParseConfig, false); - vm.removeFile(badParseConfig); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/LibVariable.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/LibVariable.t.sol deleted file mode 100644 index 2fc00a91ab..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/LibVariable.t.sol +++ /dev/null @@ -1,434 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.13; - -import {Test} from "../src/Test.sol"; -import {Variable, Type, TypeKind, LibVariable} from "../src/LibVariable.sol"; - -contract LibVariableTest is Test { - using LibVariable for Type; - using LibVariable for TypeKind; - - LibVariableHelper internal helper; - - bytes internal expectedErr; - Variable internal uninitVar; - Variable internal boolVar; - Variable internal addressVar; - Variable internal bytes32Var; - Variable internal uintVar; - Variable internal intVar; - Variable internal stringVar; - Variable internal bytesVar; - Variable internal boolArrayVar; - Variable internal addressArrayVar; - Variable internal bytes32ArrayVar; - Variable internal uintArrayVar; - Variable internal intArrayVar; - Variable internal stringArrayVar; - Variable internal bytesArrayVar; - - function setUp() public { - helper = new LibVariableHelper(); - - // UNINITIALIZED - uninitVar = Variable(Type(TypeKind.None, false), ""); - - // SINGLE VALUES - boolVar = Variable(Type(TypeKind.Bool, false), abi.encode(true)); - addressVar = Variable(Type(TypeKind.Address, false), abi.encode(address(0xdeadbeef))); - bytes32Var = Variable(Type(TypeKind.Bytes32, false), abi.encode(bytes32(uint256(42)))); - uintVar = Variable(Type(TypeKind.Uint256, false), abi.encode(uint256(123))); - intVar = Variable(Type(TypeKind.Int256, false), abi.encode(int256(-123))); - stringVar = Variable(Type(TypeKind.String, false), abi.encode("hello world")); - bytesVar = Variable(Type(TypeKind.Bytes, false), abi.encode(hex"c0ffee")); - - // ARRAY VALUES - bool[] memory bools = new bool[](2); - bools[0] = true; - bools[1] = false; - boolArrayVar = Variable(Type(TypeKind.Bool, true), abi.encode(bools)); - - address[] memory addrs = new address[](2); - addrs[0] = address(0x1); - addrs[1] = address(0x2); - addressArrayVar = Variable(Type(TypeKind.Address, true), abi.encode(addrs)); - - bytes32[] memory b32s = new bytes32[](2); - b32s[0] = bytes32(uint256(1)); - b32s[1] = bytes32(uint256(2)); - bytes32ArrayVar = Variable(Type(TypeKind.Bytes32, true), abi.encode(b32s)); - - uint256[] memory uints = new uint256[](2); - uints[0] = 1; - uints[1] = 2; - uintArrayVar = Variable(Type(TypeKind.Uint256, true), abi.encode(uints)); - - int256[] memory ints = new int256[](2); - ints[0] = -1; - ints[1] = 2; - intArrayVar = Variable(Type(TypeKind.Int256, true), abi.encode(ints)); - - string[] memory strings = new string[](2); - strings[0] = "one"; - strings[1] = "two"; - stringArrayVar = Variable(Type(TypeKind.String, true), abi.encode(strings)); - - bytes[] memory b = new bytes[](2); - b[0] = hex"01"; - b[1] = hex"02"; - bytesArrayVar = Variable(Type(TypeKind.Bytes, true), abi.encode(b)); - } - - // -- SUCCESS CASES -------------------------------------------------------- - - function test_TypeHelpers() public view { - // TypeKind.toString() - assertEq(TypeKind.None.toString(), "none"); - assertEq(TypeKind.Bool.toString(), "bool"); - assertEq(TypeKind.Address.toString(), "address"); - assertEq(TypeKind.Bytes32.toString(), "bytes32"); - assertEq(TypeKind.Uint256.toString(), "uint256"); - assertEq(TypeKind.Int256.toString(), "int256"); - assertEq(TypeKind.String.toString(), "string"); - assertEq(TypeKind.Bytes.toString(), "bytes"); - - // TypeKind.toTomlKey() - assertEq(TypeKind.Uint256.toTomlKey(), "uint"); - assertEq(TypeKind.Int256.toTomlKey(), "int"); - assertEq(TypeKind.Bytes32.toTomlKey(), "bytes32"); - - // Type.toString() - assertEq(boolVar.ty.toString(), "bool"); - assertEq(boolArrayVar.ty.toString(), "bool[]"); - assertEq(uintVar.ty.toString(), "uint256"); - assertEq(uintArrayVar.ty.toString(), "uint256[]"); - assertEq(uninitVar.ty.toString(), "none"); - - // Type.isEqual() - assertTrue(boolVar.ty.isEqual(Type(TypeKind.Bool, false))); - assertFalse(boolVar.ty.isEqual(Type(TypeKind.Bool, true))); - assertFalse(boolVar.ty.isEqual(Type(TypeKind.Address, false))); - - // Type.assertEq() - boolVar.ty.assertEq(Type(TypeKind.Bool, false)); - uintArrayVar.ty.assertEq(Type(TypeKind.Uint256, true)); - } - - function test_Coercion() public view { - // Single values - assertTrue(helper.toBool(boolVar)); - assertEq(helper.toAddress(addressVar), address(0xdeadbeef)); - assertEq(helper.toBytes32(bytes32Var), bytes32(uint256(42))); - assertEq(helper.toUint256(uintVar), 123); - assertEq(helper.toInt256(intVar), -123); - assertEq(helper.toString(stringVar), "hello world"); - assertEq(helper.toBytes(bytesVar), hex"c0ffee"); - - // Bool array - bool[] memory bools = helper.toBoolArray(boolArrayVar); - assertEq(bools.length, 2); - assertTrue(bools[0]); - assertFalse(bools[1]); - - // Address array - address[] memory addrs = helper.toAddressArray(addressArrayVar); - assertEq(addrs.length, 2); - assertEq(addrs[0], address(0x1)); - assertEq(addrs[1], address(0x2)); - - // String array - string[] memory strings = helper.toStringArray(stringArrayVar); - assertEq(strings.length, 2); - assertEq(strings[0], "one"); - assertEq(strings[1], "two"); - } - - function test_Downcasting() public view { - // Uint downcasting - Variable memory v_uint_small = Variable(Type(TypeKind.Uint256, false), abi.encode(uint256(100))); - assertEq(helper.toUint128(v_uint_small), 100); - assertEq(helper.toUint64(v_uint_small), 100); - assertEq(helper.toUint32(v_uint_small), 100); - assertEq(helper.toUint16(v_uint_small), 100); - assertEq(helper.toUint8(v_uint_small), 100); - - // Uint array downcasting - uint256[] memory small_uints = new uint256[](2); - small_uints[0] = 10; - small_uints[1] = 20; - Variable memory v_uint_array_small = Variable(Type(TypeKind.Uint256, true), abi.encode(small_uints)); - uint8[] memory u8_array = helper.toUint8Array(v_uint_array_small); - assertEq(u8_array[0], 10); - assertEq(u8_array[1], 20); - - // Int downcasting - Variable memory v_int_small_pos = Variable(Type(TypeKind.Int256, false), abi.encode(int256(100))); - Variable memory v_int_small_neg = Variable(Type(TypeKind.Int256, false), abi.encode(int256(-100))); - assertEq(helper.toInt128(v_int_small_pos), 100); - assertEq(helper.toInt64(v_int_small_neg), -100); - assertEq(helper.toInt32(v_int_small_pos), 100); - assertEq(helper.toInt16(v_int_small_neg), -100); - assertEq(helper.toInt8(v_int_small_pos), 100); - - // Int array downcasting - int256[] memory small_ints = new int256[](2); - small_ints[0] = -10; - small_ints[1] = 20; - Variable memory intArraySmall = Variable(Type(TypeKind.Int256, true), abi.encode(small_ints)); - int8[] memory i8_array = helper.toInt8Array(intArraySmall); - assertEq(i8_array[0], -10); - assertEq(i8_array[1], 20); - } - - // -- REVERT CASES --------------------------------------------------------- - - function testRevert_NotInitialized() public { - vm.expectRevert(LibVariable.NotInitialized.selector); - helper.toBool(uninitVar); - - vm.expectRevert(LibVariable.NotInitialized.selector); - helper.toAddressArray(uninitVar); - } - - function testRevert_assertExists() public { - vm.expectRevert(LibVariable.NotInitialized.selector); - helper.assertExists(uninitVar); - } - - function testRevert_TypeMismatch() public { - // Single values - vm.expectRevert(abi.encodeWithSelector(LibVariable.TypeMismatch.selector, "uint256", "bool")); - helper.toUint256(boolVar); - - vm.expectRevert(abi.encodeWithSelector(LibVariable.TypeMismatch.selector, "address", "string")); - helper.toAddress(stringVar); - - // Arrays - vm.expectRevert(abi.encodeWithSelector(LibVariable.TypeMismatch.selector, "uint256[]", "bool[]")); - helper.toUint256Array(boolArrayVar); - - vm.expectRevert(abi.encodeWithSelector(LibVariable.TypeMismatch.selector, "address[]", "string[]")); - helper.toAddressArray(stringArrayVar); - - // Single value to array - vm.expectRevert(abi.encodeWithSelector(LibVariable.TypeMismatch.selector, "bool[]", "bool")); - helper.toBoolArray(boolVar); - - // Array to single value - vm.expectRevert(abi.encodeWithSelector(LibVariable.TypeMismatch.selector, "bool", "bool[]")); - helper.toBool(boolArrayVar); - - // assertEq reverts - vm.expectRevert(abi.encodeWithSelector(LibVariable.TypeMismatch.selector, "uint256", "bool")); - helper.assertEq(boolVar.ty, Type(TypeKind.Uint256, false)); - } - - function testRevert_UnsafeCast() public { - // uint overflow - Variable memory uintLarge = Variable(Type(TypeKind.Uint256, false), abi.encode(uint256(type(uint128).max) + 1)); - expectedErr = abi.encodeWithSelector(LibVariable.UnsafeCast.selector, "value does not fit in 'uint128'"); - vm.expectRevert(expectedErr); - helper.toUint128(uintLarge); - - // int overflow - Variable memory intLarge = Variable(Type(TypeKind.Int256, false), abi.encode(int256(type(int128).max) + 1)); - expectedErr = abi.encodeWithSelector(LibVariable.UnsafeCast.selector, "value does not fit in 'int128'"); - - vm.expectRevert(expectedErr); - helper.toInt128(intLarge); - - // int underflow - Variable memory intSmall = Variable(Type(TypeKind.Int256, false), abi.encode(int256(type(int128).min) - 1)); - expectedErr = abi.encodeWithSelector(LibVariable.UnsafeCast.selector, "value does not fit in 'int128'"); - - vm.expectRevert(expectedErr); - helper.toInt128(intSmall); - - // uint array overflow - uint256[] memory uintArray = new uint256[](2); - uintArray[0] = 10; - uintArray[1] = uint256(type(uint64).max) + 1; - Variable memory uintArrayLarge = Variable(Type(TypeKind.Uint256, true), abi.encode(uintArray)); - expectedErr = abi.encodeWithSelector(LibVariable.UnsafeCast.selector, "value in array does not fit in 'uint64'"); - - vm.expectRevert(expectedErr); - helper.toUint64Array(uintArrayLarge); - - // int array overflow - int256[] memory intArray = new int256[](2); - intArray[0] = 10; - intArray[1] = int256(type(int64).max) + 1; - Variable memory intArrayLarge = Variable(Type(TypeKind.Int256, true), abi.encode(intArray)); - expectedErr = abi.encodeWithSelector(LibVariable.UnsafeCast.selector, "value in array does not fit in 'int64'"); - - vm.expectRevert(expectedErr); - helper.toInt64Array(intArrayLarge); - - // int array underflow - intArray[0] = 10; - intArray[1] = int256(type(int64).min) - 1; - Variable memory intArraySmall = Variable(Type(TypeKind.Int256, true), abi.encode(intArray)); - expectedErr = abi.encodeWithSelector(LibVariable.UnsafeCast.selector, "value in array does not fit in 'int64'"); - - vm.expectRevert(expectedErr); - helper.toInt64Array(intArraySmall); - } -} - -/// @dev We must use an external helper contract to ensure proper call depth for `vm.expectRevert`, -/// as direct library calls are inlined by the compiler, causing call depth issues. -contract LibVariableHelper { - using LibVariable for Type; - using LibVariable for TypeKind; - - // Assertions - function assertExists(Variable memory v) external pure { - v.assertExists(); - } - - function assertEq(Type memory t1, Type memory t2) external pure { - t1.assertEq(t2); - } - - // Single Value Coercion - function toBool(Variable memory v) external pure returns (bool) { - return v.toBool(); - } - - function toAddress(Variable memory v) external pure returns (address) { - return v.toAddress(); - } - - function toBytes32(Variable memory v) external pure returns (bytes32) { - return v.toBytes32(); - } - - function toUint256(Variable memory v) external pure returns (uint256) { - return v.toUint256(); - } - - function toInt256(Variable memory v) external pure returns (int256) { - return v.toInt256(); - } - - function toString(Variable memory v) external pure returns (string memory) { - return v.toString(); - } - - function toBytes(Variable memory v) external pure returns (bytes memory) { - return v.toBytes(); - } - - // Array Coercion - function toBoolArray(Variable memory v) external pure returns (bool[] memory) { - return v.toBoolArray(); - } - - function toAddressArray(Variable memory v) external pure returns (address[] memory) { - return v.toAddressArray(); - } - - function toBytes32Array(Variable memory v) external pure returns (bytes32[] memory) { - return v.toBytes32Array(); - } - - function toUint256Array(Variable memory v) external pure returns (uint256[] memory) { - return v.toUint256Array(); - } - - function toInt256Array(Variable memory v) external pure returns (int256[] memory) { - return v.toInt256Array(); - } - - function toStringArray(Variable memory v) external pure returns (string[] memory) { - return v.toStringArray(); - } - - function toBytesArray(Variable memory v) external pure returns (bytes[] memory) { - return v.toBytesArray(); - } - - // Uint Downcasting - function toUint128(Variable memory v) external pure returns (uint128) { - return v.toUint128(); - } - - function toUint64(Variable memory v) external pure returns (uint64) { - return v.toUint64(); - } - - function toUint32(Variable memory v) external pure returns (uint32) { - return v.toUint32(); - } - - function toUint16(Variable memory v) external pure returns (uint16) { - return v.toUint16(); - } - - function toUint8(Variable memory v) external pure returns (uint8) { - return v.toUint8(); - } - - // Int Downcasting - function toInt128(Variable memory v) external pure returns (int128) { - return v.toInt128(); - } - - function toInt64(Variable memory v) external pure returns (int64) { - return v.toInt64(); - } - - function toInt32(Variable memory v) external pure returns (int32) { - return v.toInt32(); - } - - function toInt16(Variable memory v) external pure returns (int16) { - return v.toInt16(); - } - - function toInt8(Variable memory v) external pure returns (int8) { - return v.toInt8(); - } - - // Uint Array Downcasting - function toUint128Array(Variable memory v) external pure returns (uint128[] memory) { - return v.toUint128Array(); - } - - function toUint64Array(Variable memory v) external pure returns (uint64[] memory) { - return v.toUint64Array(); - } - - function toUint32Array(Variable memory v) external pure returns (uint32[] memory) { - return v.toUint32Array(); - } - - function toUint16Array(Variable memory v) external pure returns (uint16[] memory) { - return v.toUint16Array(); - } - - function toUint8Array(Variable memory v) external pure returns (uint8[] memory) { - return v.toUint8Array(); - } - - // Int Array Downcasting - function toInt128Array(Variable memory v) external pure returns (int128[] memory) { - return v.toInt128Array(); - } - - function toInt64Array(Variable memory v) external pure returns (int64[] memory) { - return v.toInt64Array(); - } - - function toInt32Array(Variable memory v) external pure returns (int32[] memory) { - return v.toInt32Array(); - } - - function toInt16Array(Variable memory v) external pure returns (int16[] memory) { - return v.toInt16Array(); - } - - function toInt8Array(Variable memory v) external pure returns (int8[] memory) { - return v.toInt8Array(); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdAssertions.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdAssertions.t.sol deleted file mode 100644 index acc0c1e812..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdAssertions.t.sol +++ /dev/null @@ -1,141 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {StdAssertions} from "../src/StdAssertions.sol"; -import {Vm} from "../src/Vm.sol"; - -interface VmInternal is Vm { - function _expectCheatcodeRevert(bytes memory message) external; -} - -contract StdAssertionsTest is StdAssertions { - string constant errorMessage = "User provided message"; - uint256 constant maxDecimals = 77; - - bool constant SHOULD_REVERT = true; - bool constant SHOULD_RETURN = false; - - bool constant STRICT_REVERT_DATA = true; - bool constant NON_STRICT_REVERT_DATA = false; - - VmInternal constant vm = VmInternal(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function testFuzz_AssertEqCall_Return_Pass( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnData, - bool strictRevertData - ) external { - address targetA = address(new TestMockCall(returnData, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnData, SHOULD_RETURN)); - - assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); - } - - function testFuzz_RevertWhenCalled_AssertEqCall_Return_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnDataA, - bytes memory returnDataB, - bool strictRevertData - ) external { - vm.assume(keccak256(returnDataA) != keccak256(returnDataB)); - - address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnDataB, SHOULD_RETURN)); - - vm._expectCheatcodeRevert( - bytes( - string.concat( - "Call return data does not match: ", vm.toString(returnDataA), " != ", vm.toString(returnDataB) - ) - ) - ); - assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); - } - - function testFuzz_AssertEqCall_Revert_Pass( - bytes memory callDataA, - bytes memory callDataB, - bytes memory revertDataA, - bytes memory revertDataB - ) external { - address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); - address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); - - assertEqCall(targetA, callDataA, targetB, callDataB, NON_STRICT_REVERT_DATA); - } - - function testFuzz_RevertWhenCalled_AssertEqCall_Revert_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory revertDataA, - bytes memory revertDataB - ) external { - vm.assume(keccak256(revertDataA) != keccak256(revertDataB)); - - address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); - address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); - - vm._expectCheatcodeRevert( - bytes( - string.concat( - "Call revert data does not match: ", vm.toString(revertDataA), " != ", vm.toString(revertDataB) - ) - ) - ); - assertEqCall(targetA, callDataA, targetB, callDataB, STRICT_REVERT_DATA); - } - - function testFuzz_RevertWhenCalled_AssertEqCall_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnDataA, - bytes memory returnDataB, - bool strictRevertData - ) external { - address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnDataB, SHOULD_REVERT)); - - vm.expectRevert(bytes("assertion failed")); - this.assertEqCallExternal(targetA, callDataA, targetB, callDataB, strictRevertData); - - vm.expectRevert(bytes("assertion failed")); - this.assertEqCallExternal(targetB, callDataB, targetA, callDataA, strictRevertData); - } - - // Helper function to test outcome of assertEqCall via `expect` cheatcodes - function assertEqCallExternal( - address targetA, - bytes memory callDataA, - address targetB, - bytes memory callDataB, - bool strictRevertData - ) public { - assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); - } -} - -contract TestMockCall { - bytes returnData; - bool shouldRevert; - - constructor(bytes memory returnData_, bool shouldRevert_) { - returnData = returnData_; - shouldRevert = shouldRevert_; - } - - fallback() external payable { - bytes memory returnData_ = returnData; - - if (shouldRevert) { - assembly { - revert(add(returnData_, 0x20), mload(returnData_)) - } - } else { - assembly { - return(add(returnData_, 0x20), mload(returnData_)) - } - } - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdChains.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdChains.t.sol deleted file mode 100644 index 9522b37d02..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdChains.t.sol +++ /dev/null @@ -1,227 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {Test} from "../src/Test.sol"; - -contract StdChainsMock is Test { - function exposed_getChain(string memory chainAlias) public returns (Chain memory) { - return getChain(chainAlias); - } - - function exposed_getChain(uint256 chainId) public returns (Chain memory) { - return getChain(chainId); - } - - function exposed_setChain(string memory chainAlias, ChainData memory chainData) public { - setChain(chainAlias, chainData); - } - - function exposed_setFallbackToDefaultRpcUrls(bool useDefault) public { - setFallbackToDefaultRpcUrls(useDefault); - } -} - -contract StdChainsTest is Test { - function test_ChainRpcInitialization() public { - // RPCs specified in `foundry.toml` should be updated. - assertEq(getChain(1).rpcUrl, "https://eth.merkle.io"); - assertEq(getChain("optimism_sepolia").rpcUrl, "https://sepolia.optimism.io/"); - assertEq(getChain("arbitrum_one_sepolia").rpcUrl, "https://sepolia-rollup.arbitrum.io/rpc/"); - - // Environment variables should be the next fallback - assertEq(getChain("arbitrum_nova").rpcUrl, "https://nova.arbitrum.io/rpc"); - vm.setEnv("ARBITRUM_NOVA_RPC_URL", "myoverride"); - assertEq(getChain("arbitrum_nova").rpcUrl, "myoverride"); - vm.setEnv("ARBITRUM_NOVA_RPC_URL", "https://nova.arbitrum.io/rpc"); - - // Cannot override RPCs defined in `foundry.toml` - vm.setEnv("MAINNET_RPC_URL", "myoverride2"); - assertEq(getChain("mainnet").rpcUrl, "https://eth.merkle.io"); - - // Other RPCs should remain unchanged. - assertEq(getChain(31337).rpcUrl, "http://127.0.0.1:8545"); - assertEq(getChain("sepolia").rpcUrl, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001"); - } - - // Named with a leading underscore to clarify this is not intended to be run as a normal test, - // and is intended to be used in the below `test_Rpcs` test. - function _testRpc(string memory rpcAlias) internal { - string memory rpcUrl = getChain(rpcAlias).rpcUrl; - vm.createSelectFork(rpcUrl); - } - - // Ensure we can connect to the default RPC URL for each chain. - // Currently commented out since this is slow and public RPCs are flaky, often resulting in failing CI. - // function test_Rpcs() public { - // _testRpc("mainnet"); - // _testRpc("sepolia"); - // _testRpc("holesky"); - // _testRpc("optimism"); - // _testRpc("optimism_sepolia"); - // _testRpc("arbitrum_one"); - // _testRpc("arbitrum_one_sepolia"); - // _testRpc("arbitrum_nova"); - // _testRpc("polygon"); - // _testRpc("polygon_amoy"); - // _testRpc("avalanche"); - // _testRpc("avalanche_fuji"); - // _testRpc("bnb_smart_chain"); - // _testRpc("bnb_smart_chain_testnet"); - // _testRpc("gnosis_chain"); - // _testRpc("moonbeam"); - // _testRpc("moonriver"); - // _testRpc("moonbase"); - // _testRpc("base_sepolia"); - // _testRpc("base"); - // _testRpc("blast_sepolia"); - // _testRpc("blast"); - // _testRpc("fantom_opera"); - // _testRpc("fantom_opera_testnet"); - // _testRpc("fraxtal"); - // _testRpc("fraxtal_testnet"); - // _testRpc("berachain_bartio_testnet"); - // _testRpc("flare"); - // _testRpc("flare_coston2"); - // } - - function test_RevertIf_ChainNotFound() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain with alias \"does_not_exist\" not found."); - stdChainsMock.exposed_getChain("does_not_exist"); - } - - function test_RevertIf_SetChain_ChainIdExist_FirstTest() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain ID 31337 already used by \"anvil\"."); - stdChainsMock.exposed_setChain("anvil2", ChainData("Anvil", 31337, "URL")); - } - - function test_RevertIf_ChainBubbleUp() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - stdChainsMock.exposed_setChain("needs_undefined_env_var", ChainData("", 123456789, "")); - // Forge environment variable error. - vm.expectRevert(); - stdChainsMock.exposed_getChain("needs_undefined_env_var"); - } - - function test_RevertIf_SetChain_ChainIdExists_SecondTest() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - stdChainsMock.exposed_setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - - vm.expectRevert('StdChains setChain(string,ChainData): Chain ID 123456789 already used by "custom_chain".'); - - stdChainsMock.exposed_setChain("another_custom_chain", ChainData("", 123456789, "")); - } - - function test_SetChain() public { - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - Chain memory customChain = getChain("custom_chain"); - assertEq(customChain.name, "Custom Chain"); - assertEq(customChain.chainId, 123456789); - assertEq(customChain.chainAlias, "custom_chain"); - assertEq(customChain.rpcUrl, "https://custom.chain/"); - Chain memory chainById = getChain(123456789); - assertEq(chainById.name, customChain.name); - assertEq(chainById.chainId, customChain.chainId); - assertEq(chainById.chainAlias, customChain.chainAlias); - assertEq(chainById.rpcUrl, customChain.rpcUrl); - customChain.name = "Another Custom Chain"; - customChain.chainId = 987654321; - setChain("another_custom_chain", customChain); - Chain memory anotherCustomChain = getChain("another_custom_chain"); - assertEq(anotherCustomChain.name, "Another Custom Chain"); - assertEq(anotherCustomChain.chainId, 987654321); - assertEq(anotherCustomChain.chainAlias, "another_custom_chain"); - assertEq(anotherCustomChain.rpcUrl, "https://custom.chain/"); - // Verify the first chain data was not overwritten - chainById = getChain(123456789); - assertEq(chainById.name, "Custom Chain"); - assertEq(chainById.chainId, 123456789); - } - - function test_RevertIf_SetEmptyAlias() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain alias cannot be the empty string."); - stdChainsMock.exposed_setChain("", ChainData("", 123456789, "")); - } - - function test_RevertIf_SetNoChainId0() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain ID cannot be 0."); - stdChainsMock.exposed_setChain("alias", ChainData("", 0, "")); - } - - function test_RevertIf_GetNoChainId0() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(uint256): Chain ID cannot be 0."); - stdChainsMock.exposed_getChain(0); - } - - function test_RevertIf_GetNoEmptyAlias() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain alias cannot be the empty string."); - stdChainsMock.exposed_getChain(""); - } - - function test_RevertIf_ChainNotInitialized() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain with alias \"no_such_alias\" not found."); - stdChainsMock.exposed_getChain("no_such_alias"); - } - - function test_RevertIf_ChainAliasNotFound() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(uint256): Chain with ID 321 not found."); - - stdChainsMock.exposed_getChain(321); - } - - function test_SetChain_ExistingOne() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - assertEq(getChain(123456789).chainId, 123456789); - - setChain("custom_chain", ChainData("Modified Chain", 9999999999999999999, "https://modified.chain/")); - vm.expectRevert("StdChains getChain(uint256): Chain with ID 123456789 not found."); - stdChainsMock.exposed_getChain(123456789); - - Chain memory modifiedChain = getChain(9999999999999999999); - assertEq(modifiedChain.name, "Modified Chain"); - assertEq(modifiedChain.chainId, 9999999999999999999); - assertEq(modifiedChain.rpcUrl, "https://modified.chain/"); - } - - function test_RevertIf_DontUseDefaultRpcUrl() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - // Should error if default RPCs flag is set to false. - stdChainsMock.exposed_setFallbackToDefaultRpcUrls(false); - vm.expectRevert(); - stdChainsMock.exposed_getChain(31337); - vm.expectRevert(); - stdChainsMock.exposed_getChain("sepolia"); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdCheats.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdCheats.t.sol deleted file mode 100644 index 57dbcc2915..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdCheats.t.sol +++ /dev/null @@ -1,639 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {StdCheats} from "../src/StdCheats.sol"; -import {Test} from "../src/Test.sol"; -import {stdJson} from "../src/StdJson.sol"; -import {stdToml} from "../src/StdToml.sol"; -import {IERC20} from "../src/interfaces/IERC20.sol"; - -contract StdCheatsTest is Test { - Bar test; - - using stdJson for string; - - function setUp() public { - test = new Bar(); - } - - function test_Skip() public { - vm.warp(100); - skip(25); - assertEq(block.timestamp, 125); - } - - function test_Rewind() public { - vm.warp(100); - rewind(25); - assertEq(block.timestamp, 75); - } - - function test_Hoax() public { - hoax(address(1337)); - test.bar{value: 100}(address(1337)); - } - - function test_HoaxOrigin() public { - hoax(address(1337), address(1337)); - test.origin{value: 100}(address(1337)); - } - - function test_HoaxDifferentAddresses() public { - hoax(address(1337), address(7331)); - test.origin{value: 100}(address(1337), address(7331)); - } - - function test_StartHoax() public { - startHoax(address(1337)); - test.bar{value: 100}(address(1337)); - test.bar{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } - - function test_StartHoaxOrigin() public { - startHoax(address(1337), address(1337)); - test.origin{value: 100}(address(1337)); - test.origin{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } - - function test_ChangePrankMsgSender() public { - vm.startPrank(address(1337)); - test.bar(address(1337)); - changePrank(address(0xdead)); - test.bar(address(0xdead)); - changePrank(address(1337)); - test.bar(address(1337)); - vm.stopPrank(); - } - - function test_ChangePrankMsgSenderAndTxOrigin() public { - vm.startPrank(address(1337), address(1338)); - test.origin(address(1337), address(1338)); - changePrank(address(0xdead), address(0xbeef)); - test.origin(address(0xdead), address(0xbeef)); - changePrank(address(1337), address(1338)); - test.origin(address(1337), address(1338)); - vm.stopPrank(); - } - - function test_MakeAccountEquivalence() public { - Account memory account = makeAccount("1337"); - (address addr, uint256 key) = makeAddrAndKey("1337"); - assertEq(account.addr, addr); - assertEq(account.key, key); - } - - function test_MakeAddrEquivalence() public { - (address addr,) = makeAddrAndKey("1337"); - assertEq(makeAddr("1337"), addr); - } - - function test_MakeAddrSigning() public { - (address addr, uint256 key) = makeAddrAndKey("1337"); - bytes32 hash = keccak256("some_message"); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign(key, hash); - assertEq(ecrecover(hash, v, r, s), addr); - } - - function test_Deal() public { - deal(address(this), 1 ether); - assertEq(address(this).balance, 1 ether); - } - - function test_DealToken() public { - Bar barToken = new Bar(); - address bar = address(barToken); - deal(bar, address(this), 10000e18); - assertEq(barToken.balanceOf(address(this)), 10000e18); - } - - function test_DealTokenAdjustTotalSupply() public { - Bar barToken = new Bar(); - address bar = address(barToken); - deal(bar, address(this), 10000e18, true); - assertEq(barToken.balanceOf(address(this)), 10000e18); - assertEq(barToken.totalSupply(), 20000e18); - deal(bar, address(this), 0, true); - assertEq(barToken.balanceOf(address(this)), 0); - assertEq(barToken.totalSupply(), 10000e18); - } - - function test_DealERC1155Token() public { - BarERC1155 barToken = new BarERC1155(); - address bar = address(barToken); - dealERC1155(bar, address(this), 0, 10000e18, false); - assertEq(barToken.balanceOf(address(this), 0), 10000e18); - } - - function test_DealERC1155TokenAdjustTotalSupply() public { - BarERC1155 barToken = new BarERC1155(); - address bar = address(barToken); - dealERC1155(bar, address(this), 0, 10000e18, true); - assertEq(barToken.balanceOf(address(this), 0), 10000e18); - assertEq(barToken.totalSupply(0), 20000e18); - dealERC1155(bar, address(this), 0, 0, true); - assertEq(barToken.balanceOf(address(this), 0), 0); - assertEq(barToken.totalSupply(0), 10000e18); - } - - function test_DealERC721Token() public { - BarERC721 barToken = new BarERC721(); - address bar = address(barToken); - dealERC721(bar, address(2), 1); - assertEq(barToken.balanceOf(address(2)), 1); - assertEq(barToken.balanceOf(address(1)), 0); - dealERC721(bar, address(1), 2); - assertEq(barToken.balanceOf(address(1)), 1); - assertEq(barToken.balanceOf(bar), 1); - } - - function test_DeployCode() public { - address deployed = deployCode("StdCheats.t.sol:Bar", bytes("")); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - } - - function test_DestroyAccount() public { - // deploy something to destroy it - BarERC721 barToken = new BarERC721(); - address bar = address(barToken); - vm.setNonce(bar, 10); - deal(bar, 100); - - uint256 prevThisBalance = address(this).balance; - uint256 size; - assembly { - size := extcodesize(bar) - } - - assertGt(size, 0); - assertEq(bar.balance, 100); - assertEq(vm.getNonce(bar), 10); - - destroyAccount(bar, address(this)); - assembly { - size := extcodesize(bar) - } - assertEq(address(this).balance, prevThisBalance + 100); - assertEq(vm.getNonce(bar), 0); - assertEq(size, 0); - assertEq(bar.balance, 0); - } - - function test_DeployCodeNoArgs() public { - address deployed = deployCode("StdCheats.t.sol:Bar"); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - } - - function test_DeployCodeVal() public { - address deployed = deployCode("StdCheats.t.sol:Bar", bytes(""), 1 ether); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - assertEq(deployed.balance, 1 ether); - } - - function test_DeployCodeValNoArgs() public { - address deployed = deployCode("StdCheats.t.sol:Bar", 1 ether); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - assertEq(deployed.balance, 1 ether); - } - - // We need this so we can call "this.deployCode" rather than "deployCode" directly - function deployCodeHelper(string memory what) external { - deployCode(what); - } - - function test_RevertIf_DeployCodeFail() public { - vm.expectRevert(bytes("StdCheats deployCode(string): Deployment failed.")); - this.deployCodeHelper("StdCheats.t.sol:RevertingContract"); - } - - function getCode(address who) internal view returns (bytes memory o_code) { - /// @solidity memory-safe-assembly - assembly { - // retrieve the size of the code, this needs assembly - let size := extcodesize(who) - // allocate output byte array - this could also be done without assembly - // by using o_code = new bytes(size) - o_code := mload(0x40) - // new "memory end" including padding - mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f)))) - // store length in memory - mstore(o_code, size) - // actually retrieve the code, this needs assembly - extcodecopy(who, add(o_code, 0x20), 0, size) - } - } - - function test_DeriveRememberKey() public { - string memory mnemonic = "test test test test test test test test test test test junk"; - - (address deployer, uint256 privateKey) = deriveRememberKey(mnemonic, 0); - assertEq(deployer, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); - assertEq(privateKey, 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80); - } - - function test_BytesToUint() public pure { - assertEq(3, bytesToUint_test(hex"03")); - assertEq(2, bytesToUint_test(hex"02")); - assertEq(255, bytesToUint_test(hex"ff")); - assertEq(29625, bytesToUint_test(hex"73b9")); - } - - function test_ParseJsonTxDetail() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - string memory json = vm.readFile(path); - bytes memory transactionDetails = json.parseRaw(".transactions[0].tx"); - RawTx1559Detail memory rawTxDetail = abi.decode(transactionDetails, (RawTx1559Detail)); - Tx1559Detail memory txDetail = rawToConvertedEIP1559Detail(rawTxDetail); - assertEq(txDetail.from, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); - assertEq(txDetail.to, 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512); - assertEq( - txDetail.data, - hex"23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004" - ); - assertEq(txDetail.nonce, 3); - assertEq(txDetail.txType, 2); - assertEq(txDetail.gas, 29625); - assertEq(txDetail.value, 0); - } - - function test_ReadEIP1559Transaction() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - uint256 index = 0; - Tx1559 memory transaction = readTx1559(path, index); - transaction; - } - - function test_ReadEIP1559Transactions() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - Tx1559[] memory transactions = readTx1559s(path); - transactions; - } - - function test_ReadReceipt() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - uint256 index = 5; - Receipt memory receipt = readReceipt(path, index); - assertEq( - receipt.logsBloom, - hex"00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100" - ); - } - - function test_ReadReceipts() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - Receipt[] memory receipts = readReceipts(path); - receipts; - } - - function test_GasMeteringModifier() public { - uint256 gas_start_normal = gasleft(); - addInLoop(); - uint256 gas_used_normal = gas_start_normal - gasleft(); - - uint256 gas_start_single = gasleft(); - addInLoopNoGas(); - uint256 gas_used_single = gas_start_single - gasleft(); - - uint256 gas_start_double = gasleft(); - addInLoopNoGasNoGas(); - uint256 gas_used_double = gas_start_double - gasleft(); - - assertTrue(gas_used_double + gas_used_single < gas_used_normal); - } - - function addInLoop() internal pure returns (uint256) { - uint256 b; - for (uint256 i; i < 10000; i++) { - b += i; - } - return b; - } - - function addInLoopNoGas() internal noGasMetering returns (uint256) { - return addInLoop(); - } - - function addInLoopNoGasNoGas() internal noGasMetering returns (uint256) { - return addInLoopNoGas(); - } - - function bytesToUint_test(bytes memory b) private pure returns (uint256) { - uint256 number; - for (uint256 i = 0; i < b.length; i++) { - number = number + uint256(uint8(b[i])) * (2 ** (8 * (b.length - (i + 1)))); - } - return number; - } - - function testFuzz_AssumeAddressIsNot(address addr) external { - // skip over Payable and NonPayable enums - for (uint8 i = 2; i < uint8(type(AddressType).max); i++) { - assumeAddressIsNot(addr, AddressType(i)); - } - assertTrue(addr != address(0)); - assertTrue(addr < address(1) || addr > address(9)); - assertTrue(addr != address(vm) || addr != 0x000000000000000000636F6e736F6c652e6c6f67); - } - - function test_AssumePayable() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - - // all should revert since these addresses are not payable - - // VM address - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); - - // Console address - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x000000000000000000636F6e736F6c652e6c6f67); - - // Create2Deployer - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); - - // all should pass since these addresses are payable - - // vitalik.eth - stdCheatsMock.exposed_assumePayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045); - - // mock payable contract - MockContractPayable cp = new MockContractPayable(); - stdCheatsMock.exposed_assumePayable(address(cp)); - } - - function test_AssumeNotPayable() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - - // all should pass since these addresses are not payable - - // VM address - stdCheatsMock.exposed_assumeNotPayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); - - // Console address - stdCheatsMock.exposed_assumeNotPayable(0x000000000000000000636F6e736F6c652e6c6f67); - - // Create2Deployer - stdCheatsMock.exposed_assumeNotPayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); - - // all should revert since these addresses are payable - - // vitalik.eth - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotPayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045); - - // mock payable contract - MockContractPayable cp = new MockContractPayable(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotPayable(address(cp)); - } - - function testFuzz_AssumeNotPrecompile(address addr) external { - assumeNotPrecompile(addr, getChain("optimism_sepolia").chainId); - assertTrue( - addr < address(1) || (addr > address(9) && addr < address(0x4200000000000000000000000000000000000000)) - || addr > address(0x4200000000000000000000000000000000000800) - ); - } - - function testFuzz_AssumeNotForgeAddress(address addr) external pure { - assumeNotForgeAddress(addr); - assertTrue( - addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67 - && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C - ); - } - - function test_RevertIf_CannotDeployCodeTo() external { - vm.expectRevert("StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode."); - this._revertDeployCodeTo(); - } - - function _revertDeployCodeTo() external { - deployCodeTo("StdCheats.t.sol:RevertingContract", address(0)); - } - - function test_DeployCodeTo() external { - address arbitraryAddress = makeAddr("arbitraryAddress"); - - deployCodeTo( - "StdCheats.t.sol:MockContractWithConstructorArgs", - abi.encode(uint256(6), true, bytes20(arbitraryAddress)), - 1 ether, - arbitraryAddress - ); - - MockContractWithConstructorArgs ct = MockContractWithConstructorArgs(arbitraryAddress); - - assertEq(arbitraryAddress.balance, 1 ether); - assertEq(ct.x(), 6); - assertTrue(ct.y()); - assertEq(ct.z(), bytes20(arbitraryAddress)); - } -} - -contract StdCheatsMock is StdCheats { - function exposed_assumePayable(address addr) external { - assumePayable(addr); - } - - function exposed_assumeNotPayable(address addr) external { - assumeNotPayable(addr); - } - - // We deploy a mock version so we can properly test expected reverts. - function exposed_assumeNotBlacklisted(address token, address addr) external view { - return assumeNotBlacklisted(token, addr); - } -} - -contract StdCheatsForkTest is Test { - address internal constant USDC_BLACKLISTED_USER = 0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD; - address internal constant USDT_BLACKLISTED_USER = 0x8f8a8F4B54a2aAC7799d7bc81368aC27b852822A; - - MockUSDT public USDT; - MockUSDC public USDC; - - function setUp() public { - USDT = new MockUSDT(); - USDC = new MockUSDC(); - - USDC.setBlacklisted(USDC_BLACKLISTED_USER, true); - USDT.setBlacklisted(USDT_BLACKLISTED_USER, true); - } - - function test_RevertIf_CannotAssumeNoBlacklisted_EOA() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - address eoa = vm.addr({privateKey: 1}); - vm.expectRevert("StdCheats assumeNotBlacklisted(address,address): Token address is not a contract."); - stdCheatsMock.exposed_assumeNotBlacklisted(eoa, address(0)); - } - - function testFuzz_AssumeNotBlacklisted_TokenWithoutBlacklist(address addr) external view { - assumeNotBlacklisted(address(USDC), addr); - assumeNotBlacklisted(address(USDT), addr); - assertTrue(true); - } - - function test_RevertIf_AssumeNoBlacklisted_USDC() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotBlacklisted(address(USDC), USDC_BLACKLISTED_USER); - } - - function testFuzz_AssumeNotBlacklisted_USDC(address addr) external view { - assumeNotBlacklisted(address(USDC), addr); - assertFalse(USDCLike(USDC).isBlacklisted(addr)); - } - - function test_RevertIf_AssumeNoBlacklisted_USDT() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotBlacklisted(address(USDT), USDT_BLACKLISTED_USER); - } - - function testFuzz_AssumeNotBlacklisted_USDT(address addr) external view { - assumeNotBlacklisted(address(USDT), addr); - assertFalse(USDTLike(USDT).isBlackListed(addr)); - } -} - -/// @dev https://etherscan.io/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#readProxyContract -interface USDCLike { - function isBlacklisted(address) external view returns (bool); -} - -/// @dev https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract -interface USDTLike { - function isBlackListed(address) external view returns (bool); -} - -contract MockUSDT is USDTLike { - mapping(address => bool) private blacklist; - - function isBlackListed(address addr) external view returns (bool) { - return blacklist[addr]; - } - - function setBlacklisted(address addr, bool value) external { - blacklist[addr] = value; - } -} - -contract MockUSDC is USDCLike { - mapping(address => bool) private blacklist; - - function isBlacklisted(address addr) external view returns (bool) { - return blacklist[addr]; - } - - function setBlacklisted(address addr, bool value) external { - blacklist[addr] = value; - } -} - -contract Bar { - constructor() payable { - /// `DEAL` STDCHEAT - totalSupply = 10000e18; - balanceOf[address(this)] = totalSupply; - } - - /// `HOAX` and `CHANGEPRANK` STDCHEATS - function bar(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - } - - function origin(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - require(tx.origin == expectedSender, "!prank"); - } - - function origin(address expectedSender, address expectedOrigin) public payable { - require(msg.sender == expectedSender, "!prank"); - require(tx.origin == expectedOrigin, "!prank"); - } - - /// `DEAL` STDCHEAT - mapping(address => uint256) public balanceOf; - uint256 public totalSupply; -} - -contract BarERC1155 { - constructor() payable { - /// `DEALERC1155` STDCHEAT - _totalSupply[0] = 10000e18; - _balances[0][address(this)] = _totalSupply[0]; - } - - function balanceOf(address account, uint256 id) public view virtual returns (uint256) { - return _balances[id][account]; - } - - function totalSupply(uint256 id) public view virtual returns (uint256) { - return _totalSupply[id]; - } - - /// `DEALERC1155` STDCHEAT - mapping(uint256 => mapping(address => uint256)) private _balances; - mapping(uint256 => uint256) private _totalSupply; -} - -contract BarERC721 { - constructor() payable { - /// `DEALERC721` STDCHEAT - _owners[1] = address(1); - _balances[address(1)] = 1; - _owners[2] = address(this); - _owners[3] = address(this); - _balances[address(this)] = 2; - } - - function balanceOf(address owner) public view virtual returns (uint256) { - return _balances[owner]; - } - - function ownerOf(uint256 tokenId) public view virtual returns (address) { - address owner = _owners[tokenId]; - return owner; - } - - mapping(uint256 => address) private _owners; - mapping(address => uint256) private _balances; -} - -contract RevertingContract { - constructor() { - revert(); - } -} - -contract MockContractWithConstructorArgs { - uint256 public immutable x; - bool public y; - bytes20 public z; - - constructor(uint256 _x, bool _y, bytes20 _z) payable { - x = _x; - y = _y; - z = _z; - } -} - -contract MockContractPayable { - receive() external payable {} -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdConstants.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdConstants.t.sol deleted file mode 100644 index 7a00530f48..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdConstants.t.sol +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {StdConstants} from "../src/StdConstants.sol"; -import {Test} from "../src/Test.sol"; - -contract StdConstantsTest is Test { - function testVm() public view { - assertEq(StdConstants.VM.getBlockNumber(), 1); - } - - function testVmDerivation() public pure { - assertEq(address(StdConstants.VM), address(uint160(uint256(keccak256("hevm cheat code"))))); - } - - function testConsoleDerivation() public pure { - assertEq(StdConstants.CONSOLE, address(uint160(uint88(bytes11("console.log"))))); - } - - function testDefaultSender() public view { - assertEq(StdConstants.DEFAULT_SENDER, msg.sender); - } - - function testDefaultSenderDerivation() public pure { - assertEq(StdConstants.DEFAULT_SENDER, address(uint160(uint256(keccak256("foundry default caller"))))); - } - - function testDefaultTestContract() public { - assertEq(StdConstants.DEFAULT_TEST_CONTRACT, address(new Dummy())); - } - - function testDefaultTestContractDerivation() public view { - assertEq(address(this), StdConstants.VM.computeCreateAddress(StdConstants.DEFAULT_SENDER, 1)); - assertEq(StdConstants.DEFAULT_TEST_CONTRACT, StdConstants.VM.computeCreateAddress(address(this), 1)); - } -} - -contract Dummy {} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdError.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdError.t.sol deleted file mode 100644 index 29803d5d52..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdError.t.sol +++ /dev/null @@ -1,120 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import {stdError} from "../src/StdError.sol"; -import {Test} from "../src/Test.sol"; - -contract StdErrorsTest is Test { - ErrorsTest test; - - function setUp() public { - test = new ErrorsTest(); - } - - function test_RevertIf_AssertionError() public { - vm.expectRevert(stdError.assertionError); - test.assertionError(); - } - - function test_RevertIf_ArithmeticError() public { - vm.expectRevert(stdError.arithmeticError); - test.arithmeticError(10); - } - - function test_RevertIf_DivisionError() public { - vm.expectRevert(stdError.divisionError); - test.divError(0); - } - - function test_RevertIf_ModError() public { - vm.expectRevert(stdError.divisionError); - test.modError(0); - } - - function test_RevertIf_EnumConversionError() public { - vm.expectRevert(stdError.enumConversionError); - test.enumConversion(1); - } - - function test_RevertIf_EncodeStgError() public { - vm.expectRevert(stdError.encodeStorageError); - test.encodeStgError(); - } - - function test_RevertIf_PopError() public { - vm.expectRevert(stdError.popError); - test.pop(); - } - - function test_RevertIf_IndexOOBError() public { - vm.expectRevert(stdError.indexOOBError); - test.indexOOBError(1); - } - - function test_RevertIf_MemOverflowError() public { - vm.expectRevert(stdError.memOverflowError); - test.mem(); - } - - function test_RevertIf_InternError() public { - vm.expectRevert(stdError.zeroVarError); - test.intern(); - } -} - -contract ErrorsTest { - enum T { - T1 - } - - uint256[] public someArr; - bytes someBytes; - - function assertionError() public pure { - assert(false); - } - - function arithmeticError(uint256 a) public pure { - a -= 100; - } - - function divError(uint256 a) public pure { - 100 / a; - } - - function modError(uint256 a) public pure { - 100 % a; - } - - function enumConversion(uint256 a) public pure { - T(a); - } - - function encodeStgError() public { - /// @solidity memory-safe-assembly - assembly { - sstore(someBytes.slot, 1) - } - keccak256(someBytes); - } - - function pop() public { - someArr.pop(); - } - - function indexOOBError(uint256 a) public pure { - uint256[] memory t = new uint256[](0); - t[a]; - } - - function mem() public pure { - uint256 l = 2 ** 256 / 32; - new uint256[](l); - } - - function intern() public returns (uint256) { - function(uint256) internal returns (uint256) x; - x(2); - return 7; - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdJson.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdJson.t.sol deleted file mode 100644 index 6bedfcc9a8..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdJson.t.sol +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {Test, stdJson} from "../src/Test.sol"; - -contract StdJsonTest is Test { - using stdJson for string; - - string root; - string path; - - function setUp() public { - root = vm.projectRoot(); - path = string.concat(root, "/test/fixtures/test.json"); - } - - struct SimpleJson { - uint256 a; - string b; - } - - struct NestedJson { - uint256 a; - string b; - SimpleJson c; - } - - function test_readJson() public view { - string memory json = vm.readFile(path); - assertEq(json.readUint(".a"), 123); - } - - function test_writeJson() public { - string memory json = "json"; - json.serialize("a", uint256(123)); - string memory semiFinal = json.serialize("b", string("test")); - string memory finalJson = json.serialize("c", semiFinal); - finalJson.write(path); - - string memory json_ = vm.readFile(path); - bytes memory data = json_.parseRaw("$"); - NestedJson memory decodedData = abi.decode(data, (NestedJson)); - - assertEq(decodedData.a, 123); - assertEq(decodedData.b, "test"); - assertEq(decodedData.c.a, 123); - assertEq(decodedData.c.b, "test"); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdMath.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdMath.t.sol deleted file mode 100644 index d1269a02ac..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdMath.t.sol +++ /dev/null @@ -1,202 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import {stdMath} from "../src/StdMath.sol"; -import {Test, stdError} from "../src/Test.sol"; - -contract StdMathMock is Test { - function exposed_percentDelta(uint256 a, uint256 b) public pure returns (uint256) { - return stdMath.percentDelta(a, b); - } - - function exposed_percentDelta(int256 a, int256 b) public pure returns (uint256) { - return stdMath.percentDelta(a, b); - } -} - -contract StdMathTest is Test { - function test_GetAbs() external pure { - assertEq(stdMath.abs(-50), 50); - assertEq(stdMath.abs(50), 50); - assertEq(stdMath.abs(-1337), 1337); - assertEq(stdMath.abs(0), 0); - - assertEq(stdMath.abs(type(int256).min), (type(uint256).max >> 1) + 1); - assertEq(stdMath.abs(type(int256).max), (type(uint256).max >> 1)); - } - - function testFuzz_GetAbs(int256 a) external pure { - uint256 manualAbs = getAbs(a); - - uint256 abs = stdMath.abs(a); - - assertEq(abs, manualAbs); - } - - function test_GetDelta_Uint() external pure { - assertEq(stdMath.delta(uint256(0), uint256(0)), 0); - assertEq(stdMath.delta(uint256(0), uint256(1337)), 1337); - assertEq(stdMath.delta(uint256(0), type(uint64).max), type(uint64).max); - assertEq(stdMath.delta(uint256(0), type(uint128).max), type(uint128).max); - assertEq(stdMath.delta(uint256(0), type(uint256).max), type(uint256).max); - - assertEq(stdMath.delta(0, uint256(0)), 0); - assertEq(stdMath.delta(1337, uint256(0)), 1337); - assertEq(stdMath.delta(type(uint64).max, uint256(0)), type(uint64).max); - assertEq(stdMath.delta(type(uint128).max, uint256(0)), type(uint128).max); - assertEq(stdMath.delta(type(uint256).max, uint256(0)), type(uint256).max); - - assertEq(stdMath.delta(1337, uint256(1337)), 0); - assertEq(stdMath.delta(type(uint256).max, type(uint256).max), 0); - assertEq(stdMath.delta(5000, uint256(1250)), 3750); - } - - function testFuzz_GetDelta_Uint(uint256 a, uint256 b) external pure { - uint256 manualDelta = a > b ? a - b : b - a; - - uint256 delta = stdMath.delta(a, b); - - assertEq(delta, manualDelta); - } - - function test_GetDelta_Int() external pure { - assertEq(stdMath.delta(int256(0), int256(0)), 0); - assertEq(stdMath.delta(int256(0), int256(1337)), 1337); - assertEq(stdMath.delta(int256(0), type(int64).max), type(uint64).max >> 1); - assertEq(stdMath.delta(int256(0), type(int128).max), type(uint128).max >> 1); - assertEq(stdMath.delta(int256(0), type(int256).max), type(uint256).max >> 1); - - assertEq(stdMath.delta(0, int256(0)), 0); - assertEq(stdMath.delta(1337, int256(0)), 1337); - assertEq(stdMath.delta(type(int64).max, int256(0)), type(uint64).max >> 1); - assertEq(stdMath.delta(type(int128).max, int256(0)), type(uint128).max >> 1); - assertEq(stdMath.delta(type(int256).max, int256(0)), type(uint256).max >> 1); - - assertEq(stdMath.delta(-0, int256(0)), 0); - assertEq(stdMath.delta(-1337, int256(0)), 1337); - assertEq(stdMath.delta(type(int64).min, int256(0)), (type(uint64).max >> 1) + 1); - assertEq(stdMath.delta(type(int128).min, int256(0)), (type(uint128).max >> 1) + 1); - assertEq(stdMath.delta(type(int256).min, int256(0)), (type(uint256).max >> 1) + 1); - - assertEq(stdMath.delta(int256(0), -0), 0); - assertEq(stdMath.delta(int256(0), -1337), 1337); - assertEq(stdMath.delta(int256(0), type(int64).min), (type(uint64).max >> 1) + 1); - assertEq(stdMath.delta(int256(0), type(int128).min), (type(uint128).max >> 1) + 1); - assertEq(stdMath.delta(int256(0), type(int256).min), (type(uint256).max >> 1) + 1); - - assertEq(stdMath.delta(1337, int256(1337)), 0); - assertEq(stdMath.delta(type(int256).max, type(int256).max), 0); - assertEq(stdMath.delta(type(int256).min, type(int256).min), 0); - assertEq(stdMath.delta(type(int256).min, type(int256).max), type(uint256).max); - assertEq(stdMath.delta(5000, int256(1250)), 3750); - } - - function testFuzz_GetDelta_Int(int256 a, int256 b) external pure { - uint256 absA = getAbs(a); - uint256 absB = getAbs(b); - uint256 absDelta = absA > absB ? absA - absB : absB - absA; - - uint256 manualDelta; - if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { - manualDelta = absDelta; - } - // (a < 0 && b >= 0) || (a >= 0 && b < 0) - else { - manualDelta = absA + absB; - } - - uint256 delta = stdMath.delta(a, b); - - assertEq(delta, manualDelta); - } - - function test_GetPercentDelta_Uint() external { - StdMathMock stdMathMock = new StdMathMock(); - - assertEq(stdMath.percentDelta(uint256(0), uint256(1337)), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint64).max), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint128).max), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint192).max), 1e18); - - assertEq(stdMath.percentDelta(1337, uint256(1337)), 0); - assertEq(stdMath.percentDelta(type(uint192).max, type(uint192).max), 0); - assertEq(stdMath.percentDelta(0, uint256(2500)), 1e18); - assertEq(stdMath.percentDelta(2500, uint256(2500)), 0); - assertEq(stdMath.percentDelta(5000, uint256(2500)), 1e18); - assertEq(stdMath.percentDelta(7500, uint256(2500)), 2e18); - - vm.expectRevert(stdError.divisionError); - stdMathMock.exposed_percentDelta(uint256(1), 0); - } - - function testFuzz_GetPercentDelta_Uint(uint192 a, uint192 b) external pure { - vm.assume(b != 0); - uint256 manualDelta = a > b ? a - b : b - a; - - uint256 manualPercentDelta = manualDelta * 1e18 / b; - uint256 percentDelta = stdMath.percentDelta(a, b); - - assertEq(percentDelta, manualPercentDelta); - } - - function test_GetPercentDelta_Int() external { - // We deploy a mock version so we can properly test the revert. - StdMathMock stdMathMock = new StdMathMock(); - - assertEq(stdMath.percentDelta(int256(0), int256(1337)), 1e18); - assertEq(stdMath.percentDelta(int256(0), -1337), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int64).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int128).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int192).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int64).max), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int128).max), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int192).max), 1e18); - - assertEq(stdMath.percentDelta(1337, int256(1337)), 0); - assertEq(stdMath.percentDelta(type(int192).max, type(int192).max), 0); - assertEq(stdMath.percentDelta(type(int192).min, type(int192).min), 0); - - assertEq(stdMath.percentDelta(type(int192).min, type(int192).max), 2e18); // rounds the 1 wei diff down - assertEq(stdMath.percentDelta(type(int192).max, type(int192).min), 2e18 - 1); // rounds the 1 wei diff down - assertEq(stdMath.percentDelta(0, int256(2500)), 1e18); - assertEq(stdMath.percentDelta(2500, int256(2500)), 0); - assertEq(stdMath.percentDelta(5000, int256(2500)), 1e18); - assertEq(stdMath.percentDelta(7500, int256(2500)), 2e18); - - vm.expectRevert(stdError.divisionError); - stdMathMock.exposed_percentDelta(int256(1), 0); - } - - function testFuzz_GetPercentDelta_Int(int192 a, int192 b) external pure { - vm.assume(b != 0); - uint256 absA = getAbs(a); - uint256 absB = getAbs(b); - uint256 absDelta = absA > absB ? absA - absB : absB - absA; - - uint256 manualDelta; - if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { - manualDelta = absDelta; - } - // (a < 0 && b >= 0) || (a >= 0 && b < 0) - else { - manualDelta = absA + absB; - } - - uint256 manualPercentDelta = manualDelta * 1e18 / absB; - uint256 percentDelta = stdMath.percentDelta(a, b); - - assertEq(percentDelta, manualPercentDelta); - } - - /*////////////////////////////////////////////////////////////////////////// - HELPERS - //////////////////////////////////////////////////////////////////////////*/ - - function getAbs(int256 a) private pure returns (uint256) { - if (a < 0) { - return a == type(int256).min ? uint256(type(int256).max) + 1 : uint256(-a); - } - - return uint256(a); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdStorage.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdStorage.t.sol deleted file mode 100644 index 46604f8668..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdStorage.t.sol +++ /dev/null @@ -1,488 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {stdStorage, StdStorage} from "../src/StdStorage.sol"; -import {Test} from "../src/Test.sol"; - -contract StdStorageTest is Test { - using stdStorage for StdStorage; - - StorageTest internal test; - - function setUp() public { - test = new StorageTest(); - } - - function test_StorageHidden() public { - assertEq(uint256(keccak256("my.random.var")), stdstore.target(address(test)).sig("hidden()").find()); - } - - function test_StorageObvious() public { - assertEq(uint256(0), stdstore.target(address(test)).sig("exists()").find()); - } - - function test_StorageExtraSload() public { - assertEq(16, stdstore.target(address(test)).sig(test.extra_sload.selector).find()); - } - - function test_StorageCheckedWriteHidden() public { - stdstore.target(address(test)).sig(test.hidden.selector).checked_write(100); - assertEq(uint256(test.hidden()), 100); - } - - function test_StorageCheckedWriteObvious() public { - stdstore.target(address(test)).sig(test.exists.selector).checked_write(100); - assertEq(test.exists(), 100); - } - - function test_StorageCheckedWriteSignedIntegerHidden() public { - stdstore.target(address(test)).sig(test.hidden.selector).checked_write_int(-100); - assertEq(int256(uint256(test.hidden())), -100); - } - - function test_StorageCheckedWriteSignedIntegerObvious() public { - stdstore.target(address(test)).sig(test.tG.selector).checked_write_int(-100); - assertEq(test.tG(), -100); - } - - function test_StorageMapStructA() public { - uint256 slot = - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).find(); - assertEq(uint256(keccak256(abi.encode(address(this), 4))), slot); - } - - function test_StorageMapStructB() public { - uint256 slot = - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).find(); - assertEq(uint256(keccak256(abi.encode(address(this), 4))) + 1, slot); - } - - function test_StorageDeepMap() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key( - address(this) - ).find(); - assertEq(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(5)))))), slot); - } - - function test_StorageCheckedWriteDeepMap() public { - stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key(address(this)) - .checked_write(100); - assertEq(100, test.deep_map(address(this), address(this))); - } - - function test_StorageDeepMapStructA() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) - .with_key(address(this)).depth(0).find(); - assertEq( - bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 0), - bytes32(slot) - ); - } - - function test_StorageDeepMapStructB() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) - .with_key(address(this)).depth(1).find(); - assertEq( - bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 1), - bytes32(slot) - ); - } - - function test_StorageCheckedWriteDeepMapStructA() public { - stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( - address(this) - ).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); - assertEq(100, a); - assertEq(0, b); - } - - function test_StorageCheckedWriteDeepMapStructB() public { - stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( - address(this) - ).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); - assertEq(0, a); - assertEq(100, b); - } - - function test_StorageCheckedWriteMapStructA() public { - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.map_struct(address(this)); - assertEq(a, 100); - assertEq(b, 0); - } - - function test_StorageCheckedWriteMapStructB() public { - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.map_struct(address(this)); - assertEq(a, 0); - assertEq(b, 100); - } - - function test_StorageStructA() public { - uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(0).find(); - assertEq(uint256(7), slot); - } - - function test_StorageStructB() public { - uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(1).find(); - assertEq(uint256(7) + 1, slot); - } - - function test_StorageCheckedWriteStructA() public { - stdstore.target(address(test)).sig(test.basic.selector).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.basic(); - assertEq(a, 100); - assertEq(b, 1337); - } - - function test_StorageCheckedWriteStructB() public { - stdstore.target(address(test)).sig(test.basic.selector).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.basic(); - assertEq(a, 1337); - assertEq(b, 100); - } - - function test_StorageMapAddrFound() public { - uint256 slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).find(); - assertEq(uint256(keccak256(abi.encode(address(this), uint256(1)))), slot); - } - - function test_StorageMapAddrRoot() public { - (uint256 slot, bytes32 key) = - stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).parent(); - assertEq(address(uint160(uint256(key))), address(this)); - assertEq(uint256(1), slot); - slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).root(); - assertEq(uint256(1), slot); - } - - function test_StorageMapUintFound() public { - uint256 slot = stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).find(); - assertEq(uint256(keccak256(abi.encode(100, uint256(2)))), slot); - } - - function test_StorageCheckedWriteMapUint() public { - stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).checked_write(100); - assertEq(100, test.map_uint(100)); - } - - function test_StorageCheckedWriteMapAddr() public { - stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).checked_write(100); - assertEq(100, test.map_addr(address(this))); - } - - function test_StorageCheckedWriteMapBool() public { - stdstore.target(address(test)).sig(test.map_bool.selector).with_key(address(this)).checked_write(true); - assertTrue(test.map_bool(address(this))); - } - - function testFuzz_StorageCheckedWriteMapPacked(address addr, uint128 value) public { - stdstore.enable_packed_slots().target(address(test)).sig(test.read_struct_lower.selector).with_key(addr) - .checked_write(value); - assertEq(test.read_struct_lower(addr), value); - - stdstore.enable_packed_slots().target(address(test)).sig(test.read_struct_upper.selector).with_key(addr) - .checked_write(value); - assertEq(test.read_struct_upper(addr), value); - } - - function test_StorageCheckedWriteMapPackedFullSuccess() public { - uint256 full = test.map_packed(address(1337)); - // keep upper 128, set lower 128 to 1337 - full = (full & (uint256((1 << 128) - 1) << 128)) | 1337; - stdstore.target(address(test)).sig(test.map_packed.selector).with_key(address(uint160(1337))).checked_write( - full - ); - assertEq(1337, test.read_struct_lower(address(1337))); - } - - function test_RevertStorageConst() public { - StorageTestTarget target = new StorageTestTarget(test); - - vm.expectRevert("stdStorage find(StdStorage): No storage use detected for target."); - target.expectRevertStorageConst(); - } - - function testFuzz_StorageNativePack(uint248 val1, uint248 val2, bool boolVal1, bool boolVal2) public { - stdstore.enable_packed_slots().target(address(test)).sig(test.tA.selector).checked_write(val1); - stdstore.enable_packed_slots().target(address(test)).sig(test.tB.selector).checked_write(boolVal1); - stdstore.enable_packed_slots().target(address(test)).sig(test.tC.selector).checked_write(boolVal2); - stdstore.enable_packed_slots().target(address(test)).sig(test.tD.selector).checked_write(val2); - - assertEq(test.tA(), val1); - assertEq(test.tB(), boolVal1); - assertEq(test.tC(), boolVal2); - assertEq(test.tD(), val2); - } - - function test_StorageReadBytes32() public { - bytes32 val = stdstore.target(address(test)).sig(test.tE.selector).read_bytes32(); - assertEq(val, hex"1337"); - } - - function test_StorageReadBool_False() public { - bool val = stdstore.target(address(test)).sig(test.tB.selector).read_bool(); - assertEq(val, false); - } - - function test_StorageReadBool_True() public { - bool val = stdstore.target(address(test)).sig(test.tH.selector).read_bool(); - assertEq(val, true); - } - - function test_RevertIf_ReadingNonBoolValue() public { - vm.expectRevert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); - this.readNonBoolValue(); - } - - function readNonBoolValue() public { - stdstore.target(address(test)).sig(test.tE.selector).read_bool(); - } - - function test_StorageReadAddress() public { - address val = stdstore.target(address(test)).sig(test.tF.selector).read_address(); - assertEq(val, address(1337)); - } - - function test_StorageReadUint() public { - uint256 val = stdstore.target(address(test)).sig(test.exists.selector).read_uint(); - assertEq(val, 1); - } - - function test_StorageReadInt() public { - int256 val = stdstore.target(address(test)).sig(test.tG.selector).read_int(); - assertEq(val, type(int256).min); - } - - function testFuzz_Packed(uint256 val, uint8 elemToGet) public { - // This function tries an assortment of packed slots, shifts meaning number of elements - // that are packed. Shiftsizes are the size of each element, i.e. 8 means a data type that is 8 bits, 16 == 16 bits, etc. - // Combined, these determine how a slot is packed. Making it random is too hard to avoid global rejection limit - // and make it performant. - - // change the number of shifts - for (uint256 i = 1; i < 5; i++) { - uint256 shifts = i; - - elemToGet = uint8(bound(elemToGet, 0, shifts - 1)); - - uint256[] memory shiftSizes = new uint256[](shifts); - for (uint256 j; j < shifts; j++) { - shiftSizes[j] = 8 * (j + 1); - } - - test.setRandomPacking(val); - - uint256 leftBits; - uint256 rightBits; - for (uint256 j; j < shiftSizes.length; j++) { - if (j < elemToGet) { - leftBits += shiftSizes[j]; - } else if (elemToGet != j) { - rightBits += shiftSizes[j]; - } - } - - // we may have some right bits unaccounted for - leftBits += 256 - (leftBits + shiftSizes[elemToGet] + rightBits); - // clear left bits, then clear right bits and realign - uint256 expectedValToRead = (val << leftBits) >> (leftBits + rightBits); - - uint256 readVal = stdstore.target(address(test)).enable_packed_slots().sig( - "getRandomPacked(uint8,uint8[],uint8)" - ).with_calldata(abi.encode(shifts, shiftSizes, elemToGet)).read_uint(); - - assertEq(readVal, expectedValToRead); - } - } - - function testFuzz_Packed2(uint256 nvars, uint256 seed) public { - // Number of random variables to generate. - nvars = bound(nvars, 1, 20); - - // This will decrease as we generate values in the below loop. - uint256 bitsRemaining = 256; - - // Generate a random value and size for each variable. - uint256[] memory vals = new uint256[](nvars); - uint256[] memory sizes = new uint256[](nvars); - uint256[] memory offsets = new uint256[](nvars); - - for (uint256 i = 0; i < nvars; i++) { - // Generate a random value and size. - offsets[i] = i == 0 ? 0 : offsets[i - 1] + sizes[i - 1]; - - uint256 nvarsRemaining = nvars - i; - uint256 maxVarSize = bitsRemaining - nvarsRemaining + 1; - sizes[i] = bound(uint256(keccak256(abi.encodePacked(seed, i + 256))), 1, maxVarSize); - bitsRemaining -= sizes[i]; - - uint256 maxVal; - uint256 varSize = sizes[i]; - assembly { - // mask = (1 << varSize) - 1 - maxVal := sub(shl(varSize, 1), 1) - } - vals[i] = bound(uint256(keccak256(abi.encodePacked(seed, i))), 0, maxVal); - } - - // Pack all values into the slot. - for (uint256 i = 0; i < nvars; i++) { - stdstore.enable_packed_slots().target(address(test)).sig("getRandomPacked(uint256,uint256)").with_key( - sizes[i] - ).with_key(offsets[i]).checked_write(vals[i]); - } - - // Verify the read data matches. - for (uint256 i = 0; i < nvars; i++) { - uint256 readVal = stdstore.enable_packed_slots().target(address(test)).sig( - "getRandomPacked(uint256,uint256)" - ).with_key(sizes[i]).with_key(offsets[i]).read_uint(); - - uint256 retVal = test.getRandomPacked(sizes[i], offsets[i]); - - assertEq(readVal, vals[i]); - assertEq(retVal, vals[i]); - } - } - - function testEdgeCaseArray() public { - stdstore.target(address(test)).sig("edgeCaseArray(uint256)").with_key(uint256(0)).checked_write(1); - assertEq(test.edgeCaseArray(0), 1); - } -} - -contract StorageTestTarget { - using stdStorage for StdStorage; - - StdStorage internal stdstore; - StorageTest internal test; - - constructor(StorageTest test_) { - test = test_; - } - - function expectRevertStorageConst() public { - stdstore.target(address(test)).sig("const()").find(); - } -} - -contract StorageTest { - uint256 public exists = 1; - mapping(address => uint256) public map_addr; - mapping(uint256 => uint256) public map_uint; - mapping(address => uint256) public map_packed; - mapping(address => UnpackedStruct) public map_struct; - mapping(address => mapping(address => uint256)) public deep_map; - mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; - UnpackedStruct public basic; - - uint248 public tA; - bool public tB; - - bool public tC = false; - uint248 public tD = 1; - - struct UnpackedStruct { - uint256 a; - uint256 b; - } - - mapping(address => bool) public map_bool; - - bytes32 public tE = hex"1337"; - address public tF = address(1337); - int256 public tG = type(int256).min; - bool public tH = true; - bytes32 private tI = ~bytes32(hex"1337"); - - uint256 randomPacking; - - // Array with length matching values of elements. - uint256[] public edgeCaseArray = [3, 3, 3]; - - constructor() { - basic = UnpackedStruct({a: 1337, b: 1337}); - - uint256 two = (1 << 128) | 1; - map_packed[msg.sender] = two; - map_packed[address(uint160(1337))] = 1 << 128; - } - - function read_struct_upper(address who) public view returns (uint256) { - return map_packed[who] >> 128; - } - - function read_struct_lower(address who) public view returns (uint256) { - return map_packed[who] & ((1 << 128) - 1); - } - - function hidden() public view returns (bytes32 t) { - bytes32 slot = keccak256("my.random.var"); - /// @solidity memory-safe-assembly - assembly { - t := sload(slot) - } - } - - function const() public pure returns (bytes32 t) { - t = bytes32(hex"1337"); - } - - function extra_sload() public view returns (bytes32 t) { - // trigger read on slot `tE`, and make a staticcall to make sure compiler doesn't optimize this SLOAD away - assembly { - pop(staticcall(gas(), sload(tE.slot), 0, 0, 0, 0)) - } - t = tI; - } - - function setRandomPacking(uint256 val) public { - randomPacking = val; - } - - function _getMask(uint256 size) internal pure returns (uint256 mask) { - assembly { - // mask = (1 << size) - 1 - mask := sub(shl(size, 1), 1) - } - } - - function setRandomPacking(uint256 val, uint256 size, uint256 offset) public { - // Generate mask based on the size of the value - uint256 mask = _getMask(size); - // Zero out all bits for the word we're about to set - uint256 cleanedWord = randomPacking & ~(mask << offset); - // Place val in the correct spot of the cleaned word - randomPacking = cleanedWord | val << offset; - } - - function getRandomPacked(uint256 size, uint256 offset) public view returns (uint256) { - // Generate mask based on the size of the value - uint256 mask = _getMask(size); - // Shift to place the bits in the correct position, and use mask to zero out remaining bits - return (randomPacking >> offset) & mask; - } - - function getRandomPacked(uint8 shifts, uint8[] memory shiftSizes, uint8 elem) public view returns (uint256) { - require(elem < shifts, "!elem"); - uint256 leftBits; - uint256 rightBits; - - for (uint256 i; i < shiftSizes.length; i++) { - if (i < elem) { - leftBits += shiftSizes[i]; - } else if (elem != i) { - rightBits += shiftSizes[i]; - } - } - - // we may have some right bits unaccounted for - leftBits += 256 - (leftBits + shiftSizes[elem] + rightBits); - - // clear left bits, then clear right bits and realign - return (randomPacking << leftBits) >> (leftBits + rightBits); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdStyle.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdStyle.t.sol deleted file mode 100644 index 974e756fe5..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdStyle.t.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {Test, console2, StdStyle} from "../src/Test.sol"; - -contract StdStyleTest is Test { - function test_StyleColor() public pure { - console2.log(StdStyle.red("StdStyle.red String Test")); - console2.log(StdStyle.red(uint256(10e18))); - console2.log(StdStyle.red(int256(-10e18))); - console2.log(StdStyle.red(true)); - console2.log(StdStyle.red(address(0))); - console2.log(StdStyle.redBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.redBytes32("StdStyle.redBytes32")); - console2.log(StdStyle.green("StdStyle.green String Test")); - console2.log(StdStyle.green(uint256(10e18))); - console2.log(StdStyle.green(int256(-10e18))); - console2.log(StdStyle.green(true)); - console2.log(StdStyle.green(address(0))); - console2.log(StdStyle.greenBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.greenBytes32("StdStyle.greenBytes32")); - console2.log(StdStyle.yellow("StdStyle.yellow String Test")); - console2.log(StdStyle.yellow(uint256(10e18))); - console2.log(StdStyle.yellow(int256(-10e18))); - console2.log(StdStyle.yellow(true)); - console2.log(StdStyle.yellow(address(0))); - console2.log(StdStyle.yellowBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.yellowBytes32("StdStyle.yellowBytes32")); - console2.log(StdStyle.blue("StdStyle.blue String Test")); - console2.log(StdStyle.blue(uint256(10e18))); - console2.log(StdStyle.blue(int256(-10e18))); - console2.log(StdStyle.blue(true)); - console2.log(StdStyle.blue(address(0))); - console2.log(StdStyle.blueBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.blueBytes32("StdStyle.blueBytes32")); - console2.log(StdStyle.magenta("StdStyle.magenta String Test")); - console2.log(StdStyle.magenta(uint256(10e18))); - console2.log(StdStyle.magenta(int256(-10e18))); - console2.log(StdStyle.magenta(true)); - console2.log(StdStyle.magenta(address(0))); - console2.log(StdStyle.magentaBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.magentaBytes32("StdStyle.magentaBytes32")); - console2.log(StdStyle.cyan("StdStyle.cyan String Test")); - console2.log(StdStyle.cyan(uint256(10e18))); - console2.log(StdStyle.cyan(int256(-10e18))); - console2.log(StdStyle.cyan(true)); - console2.log(StdStyle.cyan(address(0))); - console2.log(StdStyle.cyanBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.cyanBytes32("StdStyle.cyanBytes32")); - } - - function test_StyleFontWeight() public pure { - console2.log(StdStyle.bold("StdStyle.bold String Test")); - console2.log(StdStyle.bold(uint256(10e18))); - console2.log(StdStyle.bold(int256(-10e18))); - console2.log(StdStyle.bold(address(0))); - console2.log(StdStyle.bold(true)); - console2.log(StdStyle.boldBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.boldBytes32("StdStyle.boldBytes32")); - console2.log(StdStyle.dim("StdStyle.dim String Test")); - console2.log(StdStyle.dim(uint256(10e18))); - console2.log(StdStyle.dim(int256(-10e18))); - console2.log(StdStyle.dim(address(0))); - console2.log(StdStyle.dim(true)); - console2.log(StdStyle.dimBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.dimBytes32("StdStyle.dimBytes32")); - console2.log(StdStyle.italic("StdStyle.italic String Test")); - console2.log(StdStyle.italic(uint256(10e18))); - console2.log(StdStyle.italic(int256(-10e18))); - console2.log(StdStyle.italic(address(0))); - console2.log(StdStyle.italic(true)); - console2.log(StdStyle.italicBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.italicBytes32("StdStyle.italicBytes32")); - console2.log(StdStyle.underline("StdStyle.underline String Test")); - console2.log(StdStyle.underline(uint256(10e18))); - console2.log(StdStyle.underline(int256(-10e18))); - console2.log(StdStyle.underline(address(0))); - console2.log(StdStyle.underline(true)); - console2.log(StdStyle.underlineBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.underlineBytes32("StdStyle.underlineBytes32")); - console2.log(StdStyle.inverse("StdStyle.inverse String Test")); - console2.log(StdStyle.inverse(uint256(10e18))); - console2.log(StdStyle.inverse(int256(-10e18))); - console2.log(StdStyle.inverse(address(0))); - console2.log(StdStyle.inverse(true)); - console2.log(StdStyle.inverseBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.inverseBytes32("StdStyle.inverseBytes32")); - } - - function test_StyleCombined() public pure { - console2.log(StdStyle.red(StdStyle.bold("Red Bold String Test"))); - console2.log(StdStyle.green(StdStyle.dim(uint256(10e18)))); - console2.log(StdStyle.yellow(StdStyle.italic(int256(-10e18)))); - console2.log(StdStyle.blue(StdStyle.underline(address(0)))); - console2.log(StdStyle.magenta(StdStyle.inverse(true))); - } - - function test_StyleCustom() public pure { - console2.log(h1("Custom Style 1")); - console2.log(h2("Custom Style 2")); - } - - function h1(string memory a) private pure returns (string memory) { - return StdStyle.cyan(StdStyle.inverse(StdStyle.bold(a))); - } - - function h2(string memory a) private pure returns (string memory) { - return StdStyle.magenta(StdStyle.bold(StdStyle.underline(a))); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdToml.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdToml.t.sol deleted file mode 100644 index 5a45f4f5c9..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdToml.t.sol +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {Test, stdToml} from "../src/Test.sol"; - -contract StdTomlTest is Test { - using stdToml for string; - - string root; - string path; - - function setUp() public { - root = vm.projectRoot(); - path = string.concat(root, "/test/fixtures/test.toml"); - } - - struct SimpleToml { - uint256 a; - string b; - } - - struct NestedToml { - uint256 a; - string b; - SimpleToml c; - } - - function test_readToml() public view { - string memory json = vm.readFile(path); - assertEq(json.readUint(".a"), 123); - } - - function test_writeToml() public { - string memory json = "json"; - json.serialize("a", uint256(123)); - string memory semiFinal = json.serialize("b", string("test")); - string memory finalJson = json.serialize("c", semiFinal); - finalJson.write(path); - - string memory toml = vm.readFile(path); - bytes memory data = toml.parseRaw("$"); - NestedToml memory decodedData = abi.decode(data, (NestedToml)); - - assertEq(decodedData.a, 123); - assertEq(decodedData.b, "test"); - assertEq(decodedData.c.a, 123); - assertEq(decodedData.c.b, "test"); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/StdUtils.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/StdUtils.t.sol deleted file mode 100644 index aee801b2cf..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/StdUtils.t.sol +++ /dev/null @@ -1,342 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import {Test, StdUtils} from "../src/Test.sol"; - -contract StdUtilsMock is StdUtils { - // We deploy a mock version so we can properly test expected reverts. - function exposed_getTokenBalances(address token, address[] memory addresses) - external - returns (uint256[] memory balances) - { - return getTokenBalances(token, addresses); - } - - function exposed_bound(int256 num, int256 min, int256 max) external pure returns (int256) { - return bound(num, min, max); - } - - function exposed_bound(uint256 num, uint256 min, uint256 max) external pure returns (uint256) { - return bound(num, min, max); - } - - function exposed_bytesToUint(bytes memory b) external pure returns (uint256) { - return bytesToUint(b); - } -} - -contract StdUtilsTest is Test { - /*////////////////////////////////////////////////////////////////////////// - BOUND UINT - //////////////////////////////////////////////////////////////////////////*/ - - function test_Bound() public pure { - assertEq(bound(uint256(5), 0, 4), 0); - assertEq(bound(uint256(0), 69, 69), 69); - assertEq(bound(uint256(0), 68, 69), 68); - assertEq(bound(uint256(10), 150, 190), 174); - assertEq(bound(uint256(300), 2800, 3200), 3107); - assertEq(bound(uint256(9999), 1337, 6666), 4669); - } - - function test_Bound_WithinRange() public pure { - assertEq(bound(uint256(51), 50, 150), 51); - assertEq(bound(uint256(51), 50, 150), bound(bound(uint256(51), 50, 150), 50, 150)); - assertEq(bound(uint256(149), 50, 150), 149); - assertEq(bound(uint256(149), 50, 150), bound(bound(uint256(149), 50, 150), 50, 150)); - } - - function test_Bound_EdgeCoverage() public pure { - assertEq(bound(uint256(0), 50, 150), 50); - assertEq(bound(uint256(1), 50, 150), 51); - assertEq(bound(uint256(2), 50, 150), 52); - assertEq(bound(uint256(3), 50, 150), 53); - assertEq(bound(type(uint256).max, 50, 150), 150); - assertEq(bound(type(uint256).max - 1, 50, 150), 149); - assertEq(bound(type(uint256).max - 2, 50, 150), 148); - assertEq(bound(type(uint256).max - 3, 50, 150), 147); - } - - function testFuzz_Bound_DistributionIsEven(uint256 min, uint256 size) public pure { - size = size % 100 + 1; - min = bound(min, UINT256_MAX / 2, UINT256_MAX / 2 + size); - uint256 max = min + size - 1; - uint256 result; - - for (uint256 i = 1; i <= size * 4; ++i) { - // x > max - result = bound(max + i, min, max); - assertEq(result, min + (i - 1) % size); - // x < min - result = bound(min - i, min, max); - assertEq(result, max - (i - 1) % size); - } - } - - function testFuzz_Bound(uint256 num, uint256 min, uint256 max) public pure { - if (min > max) (min, max) = (max, min); - - uint256 result = bound(num, min, max); - - assertGe(result, min); - assertLe(result, max); - assertEq(result, bound(result, min, max)); - if (num >= min && num <= max) assertEq(result, num); - } - - function test_BoundUint256Max() public pure { - assertEq(bound(0, type(uint256).max - 1, type(uint256).max), type(uint256).max - 1); - assertEq(bound(1, type(uint256).max - 1, type(uint256).max), type(uint256).max); - } - - function test_RevertIf_BoundMaxLessThanMin() public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); - stdUtils.exposed_bound(uint256(5), 100, 10); - } - - function testFuzz_RevertIf_BoundMaxLessThanMin(uint256 num, uint256 min, uint256 max) public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.assume(min > max); - vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); - stdUtils.exposed_bound(num, min, max); - } - - /*////////////////////////////////////////////////////////////////////////// - BOUND INT - //////////////////////////////////////////////////////////////////////////*/ - - function test_BoundInt() public pure { - assertEq(bound(-3, 0, 4), 2); - assertEq(bound(0, -69, -69), -69); - assertEq(bound(0, -69, -68), -68); - assertEq(bound(-10, 150, 190), 154); - assertEq(bound(-300, 2800, 3200), 2908); - assertEq(bound(9999, -1337, 6666), 1995); - } - - function test_BoundInt_WithinRange() public pure { - assertEq(bound(51, -50, 150), 51); - assertEq(bound(51, -50, 150), bound(bound(51, -50, 150), -50, 150)); - assertEq(bound(149, -50, 150), 149); - assertEq(bound(149, -50, 150), bound(bound(149, -50, 150), -50, 150)); - } - - function test_BoundInt_EdgeCoverage() public pure { - assertEq(bound(type(int256).min, -50, 150), -50); - assertEq(bound(type(int256).min + 1, -50, 150), -49); - assertEq(bound(type(int256).min + 2, -50, 150), -48); - assertEq(bound(type(int256).min + 3, -50, 150), -47); - assertEq(bound(type(int256).min, 10, 150), 10); - assertEq(bound(type(int256).min + 1, 10, 150), 11); - assertEq(bound(type(int256).min + 2, 10, 150), 12); - assertEq(bound(type(int256).min + 3, 10, 150), 13); - - assertEq(bound(type(int256).max, -50, 150), 150); - assertEq(bound(type(int256).max - 1, -50, 150), 149); - assertEq(bound(type(int256).max - 2, -50, 150), 148); - assertEq(bound(type(int256).max - 3, -50, 150), 147); - assertEq(bound(type(int256).max, -50, -10), -10); - assertEq(bound(type(int256).max - 1, -50, -10), -11); - assertEq(bound(type(int256).max - 2, -50, -10), -12); - assertEq(bound(type(int256).max - 3, -50, -10), -13); - } - - function testFuzz_BoundInt_DistributionIsEven(int256 min, uint256 size) public pure { - size = size % 100 + 1; - min = bound(min, -int256(size / 2), int256(size - size / 2)); - int256 max = min + int256(size) - 1; - int256 result; - - for (uint256 i = 1; i <= size * 4; ++i) { - // x > max - result = bound(max + int256(i), min, max); - assertEq(result, min + int256((i - 1) % size)); - // x < min - result = bound(min - int256(i), min, max); - assertEq(result, max - int256((i - 1) % size)); - } - } - - function testFuzz_BoundInt(int256 num, int256 min, int256 max) public pure { - if (min > max) (min, max) = (max, min); - - int256 result = bound(num, min, max); - - assertGe(result, min); - assertLe(result, max); - assertEq(result, bound(result, min, max)); - if (num >= min && num <= max) assertEq(result, num); - } - - function test_BoundIntInt256Max() public pure { - assertEq(bound(0, type(int256).max - 1, type(int256).max), type(int256).max - 1); - assertEq(bound(1, type(int256).max - 1, type(int256).max), type(int256).max); - } - - function test_BoundIntInt256Min() public pure { - assertEq(bound(0, type(int256).min, type(int256).min + 1), type(int256).min); - assertEq(bound(1, type(int256).min, type(int256).min + 1), type(int256).min + 1); - } - - function test_RevertIf_BoundIntMaxLessThanMin() public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); - stdUtils.exposed_bound(-5, 100, 10); - } - - function testFuzz_RevertIf_BoundIntMaxLessThanMin(int256 num, int256 min, int256 max) public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.assume(min > max); - vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); - stdUtils.exposed_bound(num, min, max); - } - - /*////////////////////////////////////////////////////////////////////////// - BOUND PRIVATE KEY - //////////////////////////////////////////////////////////////////////////*/ - - function test_BoundPrivateKey() public pure { - assertEq(boundPrivateKey(0), 1); - assertEq(boundPrivateKey(1), 1); - assertEq(boundPrivateKey(300), 300); - assertEq(boundPrivateKey(9999), 9999); - assertEq(boundPrivateKey(SECP256K1_ORDER - 1), SECP256K1_ORDER - 1); - assertEq(boundPrivateKey(SECP256K1_ORDER), 1); - assertEq(boundPrivateKey(SECP256K1_ORDER + 1), 2); - assertEq(boundPrivateKey(UINT256_MAX), UINT256_MAX & SECP256K1_ORDER - 1); // x&y is equivalent to x-x%y - } - - /*////////////////////////////////////////////////////////////////////////// - BYTES TO UINT - //////////////////////////////////////////////////////////////////////////*/ - - function test_BytesToUint() external pure { - bytes memory maxUint = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; - bytes memory two = hex"02"; - bytes memory millionEther = hex"d3c21bcecceda1000000"; - - assertEq(bytesToUint(maxUint), type(uint256).max); - assertEq(bytesToUint(two), 2); - assertEq(bytesToUint(millionEther), 1_000_000 ether); - } - - function test_RevertIf_BytesLengthExceeds32() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - bytes memory thirty3Bytes = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; - vm.expectRevert("StdUtils bytesToUint(bytes): Bytes length exceeds 32."); - stdUtils.exposed_bytesToUint(thirty3Bytes); - } - - /*////////////////////////////////////////////////////////////////////////// - COMPUTE CREATE ADDRESS - //////////////////////////////////////////////////////////////////////////*/ - - function test_ComputeCreateAddress() external pure { - address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; - uint256 nonce = 14; - address createAddress = computeCreateAddress(deployer, nonce); - assertEq(createAddress, 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); - } - - /*////////////////////////////////////////////////////////////////////////// - COMPUTE CREATE2 ADDRESS - //////////////////////////////////////////////////////////////////////////*/ - - function test_ComputeCreate2Address() external pure { - bytes32 salt = bytes32(uint256(31415)); - bytes32 initcodeHash = keccak256(abi.encode(0x6080)); - address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; - address create2Address = computeCreate2Address(salt, initcodeHash, deployer); - assertEq(create2Address, 0xB147a5d25748fda14b463EB04B111027C290f4d3); - } - - function test_ComputeCreate2AddressWithDefaultDeployer() external pure { - bytes32 salt = 0xc290c670fde54e5ef686f9132cbc8711e76a98f0333a438a92daa442c71403c0; - bytes32 initcodeHash = hashInitCode(hex"6080", ""); - assertEq(initcodeHash, 0x1a578b7a4b0b5755db6d121b4118d4bc68fe170dca840c59bc922f14175a76b0); - address create2Address = computeCreate2Address(salt, initcodeHash); - assertEq(create2Address, 0xc0ffEe2198a06235aAbFffe5Db0CacF1717f5Ac6); - } -} - -contract StdUtilsForkTest is Test { - /*////////////////////////////////////////////////////////////////////////// - GET TOKEN BALANCES - //////////////////////////////////////////////////////////////////////////*/ - - address internal SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE; - address internal SHIB_HOLDER_0 = 0x855F5981e831D83e6A4b4EBFCAdAa68D92333170; - address internal SHIB_HOLDER_1 = 0x8F509A90c2e47779cA408Fe00d7A72e359229AdA; - address internal SHIB_HOLDER_2 = 0x0e3bbc0D04fF62211F71f3e4C45d82ad76224385; - - address internal USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; - address internal USDC_HOLDER_0 = 0xDa9CE944a37d218c3302F6B82a094844C6ECEb17; - address internal USDC_HOLDER_1 = 0x3e67F4721E6d1c41a015f645eFa37BEd854fcf52; - - function setUp() public { - // All tests of the `getTokenBalances` method are fork tests using live contracts. - vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900}); - } - - function test_RevertIf_CannotGetTokenBalances_NonTokenContract() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - // The UniswapV2Factory contract has neither a `balanceOf` function nor a fallback function, - // so the `balanceOf` call should revert. - address token = address(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); - address[] memory addresses = new address[](1); - addresses[0] = USDC_HOLDER_0; - - vm.expectRevert("Multicall3: call failed"); - stdUtils.exposed_getTokenBalances(token, addresses); - } - - function test_RevertIf_CannotGetTokenBalances_EOA() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - address eoa = vm.addr({privateKey: 1}); - address[] memory addresses = new address[](1); - addresses[0] = USDC_HOLDER_0; - vm.expectRevert("StdUtils getTokenBalances(address,address[]): Token address is not a contract."); - stdUtils.exposed_getTokenBalances(eoa, addresses); - } - - function test_GetTokenBalances_Empty() external { - address[] memory addresses = new address[](0); - uint256[] memory balances = getTokenBalances(USDC, addresses); - assertEq(balances.length, 0); - } - - function test_GetTokenBalances_USDC() external { - address[] memory addresses = new address[](2); - addresses[0] = USDC_HOLDER_0; - addresses[1] = USDC_HOLDER_1; - uint256[] memory balances = getTokenBalances(USDC, addresses); - assertEq(balances[0], 159_000_000_000_000); - assertEq(balances[1], 131_350_000_000_000); - } - - function test_GetTokenBalances_SHIB() external { - address[] memory addresses = new address[](3); - addresses[0] = SHIB_HOLDER_0; - addresses[1] = SHIB_HOLDER_1; - addresses[2] = SHIB_HOLDER_2; - uint256[] memory balances = getTokenBalances(SHIB, addresses); - assertEq(balances[0], 3_323_256_285_484.42e18); - assertEq(balances[1], 1_271_702_771_149.99999928e18); - assertEq(balances[2], 606_357_106_247e18); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/Vm.t.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/Vm.t.sol deleted file mode 100644 index 1b99e3db11..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/Vm.t.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import {Test} from "../src/Test.sol"; -import {Vm, VmSafe} from "../src/Vm.sol"; - -// These tests ensure that functions are never accidentally removed from a Vm interface, or -// inadvertently moved between Vm and VmSafe. These tests must be updated each time a function is -// added to or removed from Vm or VmSafe. -contract VmTest is Test { - function test_VmInterfaceId() public pure { - assertEq(type(Vm).interfaceId, bytes4(0xe835828d), "Vm"); - } - - function test_VmSafeInterfaceId() public pure { - assertEq(type(VmSafe).interfaceId, bytes4(0xe02727c3), "VmSafe"); - } -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationScript.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationScript.sol deleted file mode 100644 index d3d88a0b5c..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationScript.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {Script} from "../../src/Script.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationScript is Script {} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationScriptBase.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationScriptBase.sol deleted file mode 100644 index 65b5bedbe2..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationScriptBase.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {ScriptBase} from "../../src/Script.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationScriptBase is ScriptBase {} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationTest.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationTest.sol deleted file mode 100644 index 2a9dec57f0..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationTest.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {Test} from "../../src/Test.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationTest is Test {} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationTestBase.sol b/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationTestBase.sol deleted file mode 100644 index 32b3fc5be6..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/compilation/CompilationTestBase.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {TestBase} from "../../src/Test.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationTestBase is TestBase {} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/broadcast.log.json b/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/broadcast.log.json deleted file mode 100644 index 0a0200bca9..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/broadcast.log.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": "multiple_arguments(uint256,address,uint256[]):(uint256)", - "arguments": ["1", "0000000000000000000000000000000000001337", "[3,4]"], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "gas": "0x73b9", - "value": "0x0", - "data": "0x23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004", - "nonce": "0x3", - "accessList": [] - } - }, - { - "hash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": "inc():(uint256)", - "arguments": [], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "gas": "0xdcb2", - "value": "0x0", - "data": "0x371303c0", - "nonce": "0x4", - "accessList": [] - } - }, - { - "hash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "function": "t(uint256):(uint256)", - "arguments": ["1"], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "gas": "0x8599", - "value": "0x0", - "data": "0xafe29f710000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x5", - "accessList": [] - } - } - ], - "receipts": [ - { - "transactionHash": "0x481dc86e40bba90403c76f8e144aa9ff04c1da2164299d0298573835f0991181", - "transactionIndex": "0x0", - "blockHash": "0xef0730448490304e5403be0fa8f8ce64f118e9adcca60c07a2ae1ab921d748af", - "blockNumber": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "cumulativeGasUsed": "0x13f3a", - "gasUsed": "0x13f3a", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x6a187183545b8a9e7f1790e847139379bf5622baff2cb43acf3f5c79470af782", - "transactionIndex": "0x0", - "blockHash": "0xf3acb96a90071640c2a8c067ae4e16aad87e634ea8d8bbbb5b352fba86ba0148", - "blockNumber": "0x2", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "cumulativeGasUsed": "0x45d80", - "gasUsed": "0x45d80", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x064ad173b4867bdef2fb60060bbdaf01735fbf10414541ea857772974e74ea9d", - "transactionIndex": "0x0", - "blockHash": "0x8373d02109d3ee06a0225f23da4c161c656ccc48fe0fcee931d325508ae73e58", - "blockNumber": "0x3", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "cumulativeGasUsed": "0x45feb", - "gasUsed": "0x45feb", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", - "transactionIndex": "0x0", - "blockHash": "0x16712fae5c0e18f75045f84363fb6b4d9a9fe25e660c4ce286833a533c97f629", - "blockNumber": "0x4", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "cumulativeGasUsed": "0x5905", - "gasUsed": "0x5905", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", - "transactionIndex": "0x0", - "blockHash": "0x156b88c3eb9a1244ba00a1834f3f70de735b39e3e59006dd03af4fe7d5480c11", - "blockNumber": "0x5", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "cumulativeGasUsed": "0xa9c4", - "gasUsed": "0xa9c4", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "transactionIndex": "0x0", - "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", - "blockNumber": "0x6", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "cumulativeGasUsed": "0x66c5", - "gasUsed": "0x66c5", - "contractAddress": null, - "logs": [ - { - "address": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "topics": [ - "0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000046865726500000000000000000000000000000000000000000000000000000000", - "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", - "blockNumber": "0x6", - "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "transactionIndex": "0x1", - "logIndex": "0x0", - "transactionLogIndex": "0x0", - "removed": false - } - ], - "status": "0x1", - "logsBloom": "0x00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x11fbb10230c168ca1e36a7e5c69a6dbcd04fd9e64ede39d10a83e36ee8065c16", - "transactionIndex": "0x0", - "blockHash": "0xf1e0ed2eda4e923626ec74621006ed50b3fc27580dc7b4cf68a07ca77420e29c", - "blockNumber": "0x7", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x0000000000000000000000000000000000001337", - "cumulativeGasUsed": "0x5208", - "gasUsed": "0x5208", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - } - ], - "libraries": [ - "src/Broadcast.t.sol:F:0x5fbdb2315678afecb367f032d93f642f64180aa3" - ], - "pending": [], - "path": "broadcast/Broadcast.t.sol/31337/run-latest.json", - "returns": {}, - "timestamp": 1655140035 -} diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/config.toml b/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/config.toml deleted file mode 100644 index e6dcccca58..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/config.toml +++ /dev/null @@ -1,81 +0,0 @@ -# ------------------------------------------------ -# EXAMPLE DEPLOYMENT CONFIG -# ------------------------------------------------ - -# -- MAINNET ------------------------------------- - -[mainnet] -endpoint_url = "${MAINNET_RPC}" - -[mainnet.bool] -is_live = true -bool_array = [true, false] - -[mainnet.address] -weth = "${WETH_MAINNET}" -deps = [ - "0x0000000000000000000000000000000000000000", - "0x1111111111111111111111111111111111111111", -] - -[mainnet.uint] -number = 1234 -number_array = [5678, 9999] - -[mainnet.int] -signed_number = -1234 -signed_number_array = [-5678, 9999] - -[mainnet.bytes32] -word = "0x00000000000000000000000000000000000000000000000000000000000004d2" # 1234 -word_array = [ - "0x000000000000000000000000000000000000000000000000000000000000162e", # 5678 - "0x000000000000000000000000000000000000000000000000000000000000270f", # 9999 -] - -[mainnet.bytes] -b = "0xabcd" -b_array = ["0xdead", "0xbeef"] - -[mainnet.string] -str = "foo" -str_array = ["bar", "baz"] - -# -- OPTIMISM ------------------------------------ - -[optimism] -endpoint_url = "${OPTIMISM_RPC}" - -[optimism.bool] -is_live = false -bool_array = [false, true] - -[optimism.address] -weth = "${WETH_OPTIMISM}" -deps = [ - "0x2222222222222222222222222222222222222222", - "0x3333333333333333333333333333333333333333", -] - -[optimism.uint] -number = 9999 -number_array = [1234, 5678] - -[optimism.int] -signed_number = 9999 -signed_number_array = [-1234, -5678] - -[optimism.bytes32] -word = "0x000000000000000000000000000000000000000000000000000000000000270f" # 9999 -word_array = [ - "0x00000000000000000000000000000000000000000000000000000000000004d2", # 1234 - "0x000000000000000000000000000000000000000000000000000000000000162e", # 5678 -] - -[optimism.bytes] -b = "0xdcba" -b_array = ["0xc0ffee", "0xbabe"] - -[optimism.string] -str = "alice" -str_array = ["bob", "charlie"] diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/test.json b/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/test.json deleted file mode 100644 index caebf6d965..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/test.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "a": 123, - "b": "test", - "c": { - "a": 123, - "b": "test" - } -} \ No newline at end of file diff --git a/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/test.toml b/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/test.toml deleted file mode 100644 index 60692bc750..0000000000 --- a/packages/wallet-contracts/Counter/lib/forge-std/test/fixtures/test.toml +++ /dev/null @@ -1,6 +0,0 @@ -a = 123 -b = "test" - -[c] -a = 123 -b = "test" diff --git a/packages/wallet-contracts/Counter/script/Counter.s.sol b/packages/wallet-contracts/Counter/script/Counter.s.sol deleted file mode 100644 index f01d69c399..0000000000 --- a/packages/wallet-contracts/Counter/script/Counter.s.sol +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Script} from "forge-std/Script.sol"; -import {Counter} from "../src/Counter.sol"; - -contract CounterScript is Script { - Counter public counter; - - function setUp() public {} - - function run() public { - vm.startBroadcast(); - - counter = new Counter(); - - vm.stopBroadcast(); - } -} diff --git a/packages/wallet-contracts/Counter/src/Counter.sol b/packages/wallet-contracts/Counter/src/Counter.sol deleted file mode 100644 index aded7997b0..0000000000 --- a/packages/wallet-contracts/Counter/src/Counter.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -contract Counter { - uint256 public number; - - function setNumber(uint256 newNumber) public { - number = newNumber; - } - - function increment() public { - number++; - } -} diff --git a/packages/wallet-contracts/Counter/test/Counter.t.sol b/packages/wallet-contracts/Counter/test/Counter.t.sol deleted file mode 100644 index 4831910836..0000000000 --- a/packages/wallet-contracts/Counter/test/Counter.t.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Test} from "forge-std/Test.sol"; -import {Counter} from "../src/Counter.sol"; - -contract CounterTest is Test { - Counter public counter; - - function setUp() public { - counter = new Counter(); - counter.setNumber(0); - } - - function test_Increment() public { - counter.increment(); - assertEq(counter.number(), 1); - } - - function testFuzz_SetNumber(uint256 x) public { - counter.setNumber(x); - assertEq(counter.number(), x); - } -} diff --git a/packages/wallet-contracts/Counter/utils/JsonBindings.sol b/packages/wallet-contracts/Counter/utils/JsonBindings.sol deleted file mode 100644 index 740d475227..0000000000 --- a/packages/wallet-contracts/Counter/utils/JsonBindings.sol +++ /dev/null @@ -1,18 +0,0 @@ -// Automatically generated by forge bind-json. - -pragma solidity >=0.6.2 <0.9.0; -pragma experimental ABIEncoderV2; - - -interface Vm { - function parseJsonTypeArray(string calldata json, string calldata key, string calldata typeDescription) external pure returns (bytes memory); - function parseJsonType(string calldata json, string calldata typeDescription) external pure returns (bytes memory); - function parseJsonType(string calldata json, string calldata key, string calldata typeDescription) external pure returns (bytes memory); - function serializeJsonType(string calldata typeDescription, bytes memory value) external pure returns (string memory json); - function serializeJsonType(string calldata objectKey, string calldata valueKey, string calldata typeDescription, bytes memory value) external returns (string memory json); -} - -library JsonBindings { - Vm constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - -} diff --git a/packages/wallet-contracts/LICENSE b/packages/wallet-contracts/LICENSE deleted file mode 100644 index bf69ef4b95..0000000000 --- a/packages/wallet-contracts/LICENSE +++ /dev/null @@ -1,219 +0,0 @@ - Copyright (c) 2017-present Horizon Blockchain Games Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - ------------------------------------------------------------------------ - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/wallet-contracts/README.md b/packages/wallet-contracts/README.md deleted file mode 100644 index 03031621f3..0000000000 --- a/packages/wallet-contracts/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# Sequence Smart Wallet Contracts - -Ethereum contracts for the Sequence Smart Wallet at [https://sequence.app](https://sequence.app). - -For more information, visit [https://sequence.build](https://sequence.build) - -## Usage - -Please visit [https://sequence.app](https://sequence.app) to access the Sequence Wallet via your Web Browser, or -download "Sequence Wallet" from the respective Apple/Google stores. - -You may also access, interface, or develop your own Sequence Wallet via [sequence.js](https://github.com/0xsequence/sequence.js). The -sequence.js library offers a full open source library to interact, create, deploy and manage a Sequence Smart Wallet Account, -as defined by the contracts in this repository. Also see [go-sequence](https://github.com/0xsequence/go-sequence) for an implementation -in Go. - -## Connecting your Dapp with Sequence Wallet - -If you wish to use Sequence Wallet in your Dapp, simply use [sequence.js](https://github.com/0xsequence/sequence.js). Sequence.js -is an Ethereum client library built on [ethers.js](https://github.com/ethers-io/ethers.js), that provides an additional -Sequence Smart Wallet Signer. - -Please refer to the [sequence.js](https://github.com/0xsequence/sequence.js) repository for usage instructions. - -# Developing a Custom Wallet UI for Sequence (Advanced!) - -If you wish to use the Sequence Wallet Contracts `@0xsequence/wallet-contracts` directly: - -1. Install the contracts: `pnpm add @0xsequence/wallet-contracts` or `npm install @0xsequence/wallet-contracts` -2. Install the Sequence Wallet libraries: `pnpm add @0xsequence/wallet` or `npm install @0xsequence/wallet`. You can view the source, - of the [wallet libraries](https://github.com/0xsequence/sequence.js/tree/master/packages/wallet), and review the - [Sequence tests](https://github.com/0xsequence/sequence.js/tree/master/packages/0xsequence) for sample usage. - -**NOTE:** this integration is only needed if you want low-level access to the Sequence Wallet contracts, such as if you'd building -your own custom wallet, or perhaps a CLI tool for managing your wallet. - -## Security Review - -`@0xsequence/wallet-contracts` has been audited by independent parties. - -### V2 Audits - -- [Consensys Diligence](https://github.com/0xsequence/wallet-contracts/blob/master/audits/v2/consensys-horizon-sequence-wallet-audit-2023-02.pdf) - February 2023 -- [Zellic](https://github.com/0xsequence/wallet-contracts/raw/master/audits/Quantstamp_Arcadeum_Report_Final.pdf) - March 2023 - -### V1 Audits - -- [Consensys Diligence](https://github.com/0xsequence/wallet-contracts/blob/master/audits/v1/Consensys_Diligence.md) - May 2020 -- [Quantstamp - initial audit](https://github.com/0xsequence/wallet-contracts/raw/master/audits/v1/Quantstamp_Arcadeum_Report_Final.pdf) - July 2020 -- [Quantstamp - audit of new capability, nested Sequence signers](https://github.com/0xsequence/wallet-contracts/raw/master/audits/v1/sequence_quantstamp_audit_feb_2021.pdf) - February 2021 - -## License - -Copyright (c) 2017-present [Horizon Blockchain Games Inc](https://horizon.io). - -Licensed under [Apache-2.0](https://github.com/0xsequence/erc-1155/blob/master/LICENSE) diff --git a/packages/wallet-contracts/audits/v1/Consensys_Diligence.md b/packages/wallet-contracts/audits/v1/Consensys_Diligence.md deleted file mode 100644 index aabcfc3591..0000000000 --- a/packages/wallet-contracts/audits/v1/Consensys_Diligence.md +++ /dev/null @@ -1,7 +0,0 @@ -# Consensys Diligence report May 2020 - -[View full report](https://diligence.consensys.net/audits/private/cnhjwtpa-horizon-wallet/) - -Please note, Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" -are synonymous with "Sequence", and this repository. - diff --git a/packages/wallet-contracts/audits/v1/Quantstamp_Arcadeum_Report_Final.pdf b/packages/wallet-contracts/audits/v1/Quantstamp_Arcadeum_Report_Final.pdf deleted file mode 100644 index f78c80a74e..0000000000 Binary files a/packages/wallet-contracts/audits/v1/Quantstamp_Arcadeum_Report_Final.pdf and /dev/null differ diff --git a/packages/wallet-contracts/audits/v1/sequence_quantstamp_audit_feb_2021.pdf b/packages/wallet-contracts/audits/v1/sequence_quantstamp_audit_feb_2021.pdf deleted file mode 100644 index 27c38975ff..0000000000 Binary files a/packages/wallet-contracts/audits/v1/sequence_quantstamp_audit_feb_2021.pdf and /dev/null differ diff --git a/packages/wallet-contracts/audits/v2/Sequence Wallet - Zellic Audit Report.pdf b/packages/wallet-contracts/audits/v2/Sequence Wallet - Zellic Audit Report.pdf deleted file mode 100644 index 817b25d7aa..0000000000 Binary files a/packages/wallet-contracts/audits/v2/Sequence Wallet - Zellic Audit Report.pdf and /dev/null differ diff --git a/packages/wallet-contracts/audits/v2/consensys-horizon-sequence-wallet-audit-2023-02.pdf b/packages/wallet-contracts/audits/v2/consensys-horizon-sequence-wallet-audit-2023-02.pdf deleted file mode 100644 index 407ded4d20..0000000000 Binary files a/packages/wallet-contracts/audits/v2/consensys-horizon-sequence-wallet-audit-2023-02.pdf and /dev/null differ diff --git a/packages/wallet-contracts/config/PROD.env.sample b/packages/wallet-contracts/config/PROD.env.sample deleted file mode 100644 index a5f1dfeba8..0000000000 --- a/packages/wallet-contracts/config/PROD.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -ETH_MNEMONIC="" -INFURA_API_KEY="" -ETHERSCAN="" diff --git a/packages/wallet-contracts/contracts/Factory.sol b/packages/wallet-contracts/contracts/Factory.sol deleted file mode 100644 index 89c3d0e4be..0000000000 --- a/packages/wallet-contracts/contracts/Factory.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./Wallet.sol"; - -contract Factory { - error DeployFailed(address _mainModule, bytes32 _salt); - - /** - * @notice Will deploy a new wallet instance - * @param _mainModule Address of the main module to be used by the wallet - * @param _salt Salt used to generate the wallet, which is the imageHash - * of the wallet's configuration. - * @dev It is recommended to not have more than 200 signers as opcode repricing - * could make transactions impossible to execute as all the signers must be - * passed for each transaction. - */ - function deploy(address _mainModule, bytes32 _salt) public payable returns (address _contract) { - bytes memory code = abi.encodePacked(Wallet.creationCode, uint256(uint160(_mainModule))); - assembly { _contract := create2(callvalue(), add(code, 32), mload(code), _salt) } - if (_contract == address(0)) revert DeployFailed(_mainModule, _salt); - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/metadata.json b/packages/wallet-contracts/contracts/GuestModule-wallet/metadata.json deleted file mode 100644 index d57a0c8c60..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"_space","type":"uint256"},{"internalType":"uint256","name":"_provided","type":"uint256"},{"internalType":"uint256","name":"_current","type":"uint256"}],"name":"BadNonce","type":"error"},{"inputs":[{"internalType":"bytes","name":"_code","type":"bytes"}],"name":"CreateFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"DelegateCallNotAllowed","type":"error"},{"inputs":[],"name":"EmptySignature","type":"error"},{"inputs":[],"name":"ImageHashIsZero","type":"error"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"InvalidNestedSignature","type":"error"},{"inputs":[{"internalType":"bytes","name":"_signature","type":"bytes"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"InvalidSValue","type":"error"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"InvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"_flag","type":"uint256"}],"name":"InvalidSignatureFlag","type":"error"},{"inputs":[{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"InvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes1","name":"_type","type":"bytes1"}],"name":"InvalidSignatureType","type":"error"},{"inputs":[{"internalType":"bytes","name":"_signature","type":"bytes"},{"internalType":"uint256","name":"_v","type":"uint256"}],"name":"InvalidVValue","type":"error"},{"inputs":[{"internalType":"bytes","name":"_signature","type":"bytes"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"_weight","type":"uint256"}],"name":"LowWeightChainedSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_requested","type":"uint256"},{"internalType":"uint256","name":"_available","type":"uint256"}],"name":"NotEnoughGas","type":"error"},{"inputs":[],"name":"NotSupported","type":"error"},{"inputs":[],"name":"OnlyDelegatecall","type":"error"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_self","type":"address"}],"name":"OnlySelfAuth","type":"error"},{"inputs":[{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"SignerIsAddress0","type":"error"},{"inputs":[{"internalType":"bytes","name":"_signature","type":"bytes"},{"internalType":"uint256","name":"_type","type":"uint256"},{"internalType":"bool","name":"_recoverMode","type":"bool"}],"name":"UnsupportedSignatureType","type":"error"},{"inputs":[{"internalType":"uint256","name":"_current","type":"uint256"},{"internalType":"uint256","name":"_prev","type":"uint256"}],"name":"WrongChainedCheckpointOrder","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_contract","type":"address"}],"name":"CreatedContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"newImageHash","type":"bytes32"}],"name":"ImageHashUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_space","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newNonce","type":"uint256"}],"name":"NonceChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tx","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_index","type":"uint256"}],"name":"TxExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_tx","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_index","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_reason","type":"bytes"}],"name":"TxFailed","type":"event"},{"inputs":[],"name":"SET_IMAGE_HASH_TYPE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_code","type":"bytes"}],"name":"createContract","outputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bool","name":"delegateCall","type":"bool"},{"internalType":"bool","name":"revertOnError","type":"bool"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IModuleCalls.Transaction[]","name":"_txs","type":"tuple[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signatures","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"bytes","name":"_signatures","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_space","type":"uint256"}],"name":"readNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bool","name":"delegateCall","type":"bool"},{"internalType":"bool","name":"revertOnError","type":"bool"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IModuleCalls.Transaction[]","name":"_txs","type":"tuple[]"}],"name":"selfExecute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_digest","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"signatureRecovery","outputs":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"weight","type":"uint256"},{"internalType":"bytes32","name":"imageHash","type":"bytes32"},{"internalType":"bytes32","name":"subdigest","type":"bytes32"},{"internalType":"uint256","name":"checkpoint","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_imageHash","type":"bytes32"}],"name":"updateImageHash","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"createContract(bytes)":{"params":{"_code":"Creation code of the contract"},"returns":{"addr":"The address of the created contract"}},"execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)":{"params":{"_txs":"Transactions to process"}},"isValidSignature(bytes,bytes)":{"details":"MUST return the correct magic value if the signature provided is valid for the provided data > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\"))","params":{"_data":"Arbitrary length data signed on the behalf of address(this)","_signatures":"Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)"},"returns":{"_0":"magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise"}},"isValidSignature(bytes32,bytes)":{"details":"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))","params":{"_hash":"keccak256 hash that was signed","_signatures":"Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)"},"returns":{"_0":"magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise"}},"nonce()":{"details":"The default nonce space is 0x00","returns":{"_0":"The next nonce"}},"readNonce(uint256)":{"params":{"_space":"Nonce space, each space keeps an independent nonce count"},"returns":{"_0":"The next nonce"}},"selfExecute((bool,bool,uint256,address,uint256,bytes)[])":{"params":{"_txs":"Transactions to process"}},"signatureRecovery(bytes32,bytes)":{"details":"The signature must be prefixed with a type byte, which is used to determine the recovery method.","params":{"_digest":"Digest of the signed data.","_signature":"A Sequence signature."},"returns":{"checkpoint":"A nonce that is incremented every time a new configuration is set.","imageHash":"The imageHash of the configuration that signed the message.","subdigest":"A modified version of the original digest, unique for each wallet/network.","threshold":"The required number of signatures needed to consider the signature valid.","weight":"The actual number of signatures collected in the signature."}},"supportsInterface(bytes4)":{"params":{"_interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `_interfaceID`"}},"updateImageHash(bytes32)":{"params":{"_imageHash":"New required image hash of the signature"}}},"version":1},"userdoc":{"kind":"user","methods":{"createContract(bytes)":{"notice":"Creates a contract forwarding eth value"},"execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)":{"notice":"Allow any caller to execute an action"},"isValidSignature(bytes,bytes)":{"notice":"Verifies whether the provided signature is valid with respect to the provided data"},"isValidSignature(bytes32,bytes)":{"notice":"Verifies whether the provided signature is valid with respect to the provided hash"},"nonce()":{"notice":"Returns the next nonce of the default nonce space"},"readNonce(uint256)":{"notice":"Returns the next nonce of the given nonce space"},"selfExecute((bool,bool,uint256,address,uint256,bytes)[])":{"notice":"Allow any caller to execute an action"},"signatureRecovery(bytes32,bytes)":{"notice":"Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature."},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"updateImageHash(bytes32)":{"notice":"Updates the signers configuration of the wallet"}},"notice":"GuestModule implements a Sequence wallet without signatures, nonce or replay protection. executing transactions using this wallet is not an authenticated process, and can be done by any address.This contract is completely public with no security, designed to execute pre-signed transactions and use Sequence tools without using the wallets.","version":1}},"settings":{"compilationTarget":{"contracts/modules/GuestModule.sol":"GuestModule"},"evmVersion":"paris","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":500000},"remappings":[]},"sources":{"contracts/interfaces/IERC1271Wallet.sol":{"keccak256":"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c","license":"Apache-2.0","urls":["bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1","dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK"]},"contracts/modules/GuestModule.sol":{"keccak256":"0x14c92b44eac100edbfea10d0d02728752a6be277c267c3776dc563ff963271b1","license":"Apache-2.0","urls":["bzz-raw://e440eb91039118ce26bb66fd549d5e6b59863983efbe6c2617b92e2c4f0aab66","dweb:/ipfs/QmeTd2xBKEv4S4Rp9S4TSY4WwUUDjtA7xiJYiJqkVUio7d"]},"contracts/modules/commons/ModuleAuth.sol":{"keccak256":"0x58c028f02e3517de6c39584bcf1cedd4e7b23f575c24b363cbad4960a74f8a0b","license":"Apache-2.0","urls":["bzz-raw://f9652fead22c9fe8510de8427e2db354ed145ff30f49f85d1c717e293e5df665","dweb:/ipfs/QmSJPFQxRE5n17DNB5Bu2jwRo17yLS7igMQGt3bvKkdLAP"]},"contracts/modules/commons/ModuleCalls.sol":{"keccak256":"0x80c0151dbd444f96c2f935e70a6d3cc57e307588fa21d7eace67e568dd3d35c1","license":"Apache-2.0","urls":["bzz-raw://39a856555a5eb900e67d351e667135f245ccebd304d692b35fc8bdc83aec1b53","dweb:/ipfs/QmUdWfa7GcTGM5gk7qYbNCHtsxF4o8dXHzr6HbdFng5sQm"]},"contracts/modules/commons/ModuleCreator.sol":{"keccak256":"0x16b1400988f6b7bd4d32bdcb36ee2fbd644fb2c8ca571becc0c32e03602bd303","license":"Apache-2.0","urls":["bzz-raw://8bd4681fb4cff10f4e98e45618fbc52ed0a4c7d4fcf614f34a587ad20cd16855","dweb:/ipfs/QmbA2LYBH1x8WX8CaeiFYMU5rjyLGgNCF32r9fQbXuoqwJ"]},"contracts/modules/commons/ModuleERC165.sol":{"keccak256":"0xd4ae13a3d20fd7ab52ad16af6a06e7244daea450b796251e911091cac104d05f","license":"Apache-2.0","urls":["bzz-raw://8de37ec20a6b649e9fe3fb42276e4660ff546bca8b467f72beb35396ab5e62d6","dweb:/ipfs/QmXT2SxBZKitkbKLbGbbNLhUbw2ataRpQ2DHafvhG953RE"]},"contracts/modules/commons/ModuleNonce.sol":{"keccak256":"0x3b5388842f763a5347d632a0e0e8499a54b6f0b0a6eb7f7d3d848319defa042d","license":"Apache-2.0","urls":["bzz-raw://b36fa5a88a4e174967f850bf2bb78c787d8016ef7b5eee3e2f883fbfe9b87a7d","dweb:/ipfs/QmTDZiPiQGe1fmTKKzdwzBE1xjkh8apTotW1SQRUCFXf4q"]},"contracts/modules/commons/ModuleOnlyDelegatecall.sol":{"keccak256":"0x32bdb1d343eee2e32fd9d0f1d6dc0e265411d0821bd908881822f0f26f0887f8","license":"Apache-2.0","urls":["bzz-raw://1537c4f60a609751013bdc69eb1c6e6218982d91013115bc4e28cb84f816cd91","dweb:/ipfs/QmSjkSTrrB4vuxECcm5cRG7YmraF53QWRgftxS827KcQLW"]},"contracts/modules/commons/ModuleSelfAuth.sol":{"keccak256":"0x91545de5c77cfac86c5686c4e1f338a18ee7adb689ac0234848d7a7fc8a560db","license":"Apache-2.0","urls":["bzz-raw://dc89d05d8099ba4c3c2cf85737796d439899b5a04e6b87b1ea43f687ae08848a","dweb:/ipfs/QmatU8gRvFkK3Yn1MYAekzi48Waw3cDLtXJpduvju9HFUu"]},"contracts/modules/commons/ModuleStorage.sol":{"keccak256":"0x876c6a40cba975df4f7dfe24e02d153b2ee758975b6d1eda494ecd4b7244aa8e","license":"Apache-2.0","urls":["bzz-raw://b9be3f7930476d528ce10a121701421f0fb251b7d6b7cd579917375e6b283bb4","dweb:/ipfs/QmSbvbYQvTk8KYJZ7QqSKB9Y4M1X3UDhS6k765Zr1BAwK8"]},"contracts/modules/commons/interfaces/IModuleAuth.sol":{"keccak256":"0x24c6b05c32cb344b3b0aebd01fbd8bfc69f8c8e29fca340b262d9612c34d51e2","license":"Apache-2.0","urls":["bzz-raw://5f6c004946f0cbc4b3e52d45248337146bc82569da894ecff3cbdc5a0dca95c3","dweb:/ipfs/QmNSgDMQ7SHL6AJuzTSRbY2kgciHF1SKWfH6MaPH1N3TpR"]},"contracts/modules/commons/interfaces/IModuleCalls.sol":{"keccak256":"0xde065c15e38eb009c3dc8f99dfefdd1d6d244dd12a889a8b57edd90d32fb4395","license":"Apache-2.0","urls":["bzz-raw://23608955786060457f79267795a61eb89b3910b683fc136c749548369425088f","dweb:/ipfs/QmXNorcQBF1Qk21y3aEJRiiHVtwm61zP4ttA1ZzmRjyHnz"]},"contracts/modules/commons/interfaces/IModuleCreator.sol":{"keccak256":"0xa206dd3d424b8cd1c4f1400aa344cbc974480fea02f0fb371b872558e5ff4e6d","license":"Apache-2.0","urls":["bzz-raw://ea14c75f43a0008c582dcbae3ba3c900e446e28039dfdbb059d326ec5cc6a2d2","dweb:/ipfs/QmRfF6BmUWiFkCgzVFbLcHsUCNz5q2XkkcwXPX57ViTK4D"]},"contracts/modules/commons/submodules/auth/SequenceBaseSig.sol":{"keccak256":"0xe0565e24e94204d4b254ace42d124d3279256090921a4818cbbf9747cbb14e04","license":"Apache-2.0","urls":["bzz-raw://4293a4762b0816738511f697efd04a0e881d4c409bd15ac1c4e7261fe5e482a2","dweb:/ipfs/QmcHbEBne4fvpcD7RTJHCL6q9czoLa7KHneaCeYfXuWiGu"]},"contracts/modules/commons/submodules/auth/SequenceChainedSig.sol":{"keccak256":"0x755fbf6c106fe1c3c375c41c95c38269873717d8e683678b5fdbf6c8d3426306","license":"Apache-2.0","urls":["bzz-raw://7c7c92e72dd94f16b5c004d38c2d92eb2b760fd29a939945ed275633b0f93fa5","dweb:/ipfs/QmVdCG7Aw7aVV67z5mUKZa4VqhXHdLqy3SKxPfxaxq54p2"]},"contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol":{"keccak256":"0x6de353f8c7f44c4294914a4917458ce90ae2f7ecd2d84074fe12d4a4f1485ee5","license":"Apache-2.0","urls":["bzz-raw://369f979b79a3d3fd0336ab14b3accadb63e4784324afc34f8db11d1988526afd","dweb:/ipfs/QmavmBZ354wTaXQ6ixBd8GrC9HwtRqn4MoNhCVJcx11off"]},"contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol":{"keccak256":"0xa3ac8b8d31f20a8732bb4ebad53b42b334ec29041de0224bd494913ef0b2ad07","license":"Apache-2.0","urls":["bzz-raw://5a81d4eb3f47b09a8835b2fd53e0baa2e23cb604db3b10dae82543a5bcc52fa4","dweb:/ipfs/QmQ9XSSgbaagWArmZJJ366bdJ7HfxUxn9jdnWwN6SxUSeY"]},"contracts/modules/commons/submodules/nonce/SubModuleNonce.sol":{"keccak256":"0x98520e740b0822ec053d21f376b8be8a58e93228f3758f9228a7d00e1f60950f","license":"Apache-2.0","urls":["bzz-raw://31226706c004f1a4315d6b8d37621b46f4d5807c16e1ce72675c1431ed9006a2","dweb:/ipfs/QmdSSyCuPex2E2VTd6UMYy9WAq9eJNZ6vHSUomntNknzXE"]},"contracts/utils/LibBytes.sol":{"keccak256":"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805","license":"Apache-2.0","urls":["bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98","dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i"]},"contracts/utils/LibBytesPointer.sol":{"keccak256":"0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15","license":"Apache-2.0","urls":["bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25","dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y"]},"contracts/utils/LibOptim.sol":{"keccak256":"0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af","license":"Apache-2.0","urls":["bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335","dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM"]},"contracts/utils/SignatureValidator.sol":{"keccak256":"0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba","license":"Apache-2.0","urls":["bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353","dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv"]}},"version":1} \ No newline at end of file diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/interfaces/IERC1271Wallet.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/interfaces/IERC1271Wallet.sol deleted file mode 100644 index 5572aaea43..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/interfaces/IERC1271Wallet.sol +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -interface IERC1271Wallet { - - /** - * @notice Verifies whether the provided signature is valid with respect to the provided data - * @dev MUST return the correct magic value if the signature provided is valid for the provided data - * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)") - * > This function MAY modify Ethereum's state - * @param _data Arbitrary length data signed on the behalf of address(this) - * @param _signature Signature byte array associated with _data - * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise - */ - function isValidSignature( - bytes calldata _data, - bytes calldata _signature) - external - view - returns (bytes4 magicValue); - - /** - * @notice Verifies whether the provided signature is valid with respect to the provided hash - * @dev MUST return the correct magic value if the signature provided is valid for the provided hash - * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)") - * > This function MAY modify Ethereum's state - * @param _hash keccak256 hash that was signed - * @param _signature Signature byte array associated with _data - * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise - */ - function isValidSignature( - bytes32 _hash, - bytes calldata _signature) - external - view - returns (bytes4 magicValue); -} \ No newline at end of file diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/GuestModule.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/GuestModule.sol deleted file mode 100644 index 54cb770a88..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/GuestModule.sol +++ /dev/null @@ -1,126 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../utils/LibOptim.sol"; - -import "./commons/submodules/auth/SequenceBaseSig.sol"; - -import "./commons/ModuleAuth.sol"; -import "./commons/ModuleCalls.sol"; -import "./commons/ModuleCreator.sol"; - - -/** - * GuestModule implements a Sequence wallet without signatures, nonce or replay protection. - * executing transactions using this wallet is not an authenticated process, and can be done by any address. - * - * @notice This contract is completely public with no security, designed to execute pre-signed transactions - * and use Sequence tools without using the wallets. - */ -contract GuestModule is - ModuleAuth, - ModuleCalls, - ModuleCreator -{ - error DelegateCallNotAllowed(uint256 _index); - error NotSupported(); - - /** - * @notice Allow any caller to execute an action - * @param _txs Transactions to process - */ - function execute( - Transaction[] calldata _txs, - uint256, - bytes calldata - ) public override { - // Hash transaction bundle - bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode('guest:', _txs))); - - // Execute the transactions - _executeGuest(txHash, _txs); - } - - /** - * @notice Allow any caller to execute an action - * @param _txs Transactions to process - */ - function selfExecute( - Transaction[] calldata _txs - ) public override { - // Hash transaction bundle - bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode('self:', _txs))); - - // Execute the transactions - _executeGuest(txHash, _txs); - } - - /** - * @notice Executes a list of transactions - * @param _txHash Hash of the batch of transactions - * @param _txs Transactions to execute - */ - function _executeGuest( - bytes32 _txHash, - Transaction[] calldata _txs - ) private { - // Execute transaction - uint256 size = _txs.length; - for (uint256 i = 0; i < size; i++) { - Transaction calldata transaction = _txs[i]; - - if (transaction.delegateCall) revert DelegateCallNotAllowed(i); - - uint256 gasLimit = transaction.gasLimit; - if (gasleft() < gasLimit) revert NotEnoughGas(i, gasLimit, gasleft()); - - bool success = LibOptim.call( - transaction.target, - transaction.value, - gasLimit == 0 ? gasleft() : gasLimit, - transaction.data - ); - - if (success) { - emit TxExecuted(_txHash, i); - } else { - _revertBytes( - transaction.revertOnError, - _txHash, - i, - LibOptim.returnData() - ); - } - } - } - - /** - * @notice Validates any signature image, because the wallet is public and has no owner. - * @return true, all signatures are valid. - */ - function _isValidImage(bytes32) internal override pure returns (bool) { - return true; - } - - /** - * Not supported. - */ - function _updateImageHash(bytes32) internal override virtual { - revert NotSupported(); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface( - bytes4 _interfaceID - ) public override ( - ModuleAuth, - ModuleCalls, - ModuleCreator - ) pure returns (bool) { - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/GuestModule.json b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/GuestModule.json deleted file mode 100644 index a1977cfea3..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/GuestModule.json +++ /dev/null @@ -1,14655 +0,0 @@ -{ - "deploy": { - "VM:-": { - "linkReferences": {}, - "autoDeployLib": true - }, - "main:1": { - "linkReferences": {}, - "autoDeployLib": true - }, - "ropsten:3": { - "linkReferences": {}, - "autoDeployLib": true - }, - "rinkeby:4": { - "linkReferences": {}, - "autoDeployLib": true - }, - "kovan:42": { - "linkReferences": {}, - "autoDeployLib": true - }, - "goerli:5": { - "linkReferences": {}, - "autoDeployLib": true - }, - "Custom": { - "linkReferences": {}, - "autoDeployLib": true - } - }, - "data": { - "bytecode": { - "functionDebugData": { - "@_1068": { - "entryPoint": null, - "id": 1068, - "parameterSlots": 0, - "returnSlots": 0 - } - }, - "generatedSources": [], - "linkReferences": {}, - "object": "60a060405234801561001057600080fd5b50306080526080516121de61002d600039600050506121de6000f3fe6080604052600436106100bc5760003560e01c806361c2926c116100745780638c3f55631161004e5780638c3f55631461025357806390042baf14610273578063affed0e0146102ab57600080fd5b806361c2926c146101cb5780637a9a1628146101eb578063853c50681461020b57600080fd5b806320c13b0b116100a557806320c13b0b14610147578063295614261461016757806357c56d6b1461018957600080fd5b806301ffc9a7146100c15780631626ba7e146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004611880565b6102c0565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b506101166101113660046118e6565b6102d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ed565b34801561015357600080fd5b50610116610162366004611932565b61031e565b34801561017357600080fd5b5061018761018236600461199e565b610383565b005b34801561019557600080fd5b506101bd7f8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d181565b6040519081526020016100ed565b3480156101d757600080fd5b506101876101e63660046119fc565b6103d5565b3480156101f757600080fd5b50610187610206366004611a3e565b61041a565b34801561021757600080fd5b5061022b6102263660046118e6565b610447565b604080519586526020860194909452928401919091526060830152608082015260a0016100ed565b34801561025f57600080fd5b506101bd61026e36600461199e565b61060f565b610286610281366004611ae7565b61063b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b3480156102b757600080fd5b506101bd610725565b60006102cb82610736565b92915050565b6000806102df858585610792565b509050801561031157507f1626ba7e000000000000000000000000000000000000000000000000000000009050610317565b50600090505b9392505050565b6000806103438686604051610334929190611bb6565b60405180910390208585610792565b509050801561037557507f20c13b0b00000000000000000000000000000000000000000000000000000000905061037b565b50600090505b949350505050565b3330146103c9576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044015b60405180910390fd5b6103d2816107ca565b50565b600061040883836040516020016103ed929190611d97565b604051602081830303815290604052805190602001206107fc565b9050610415818484610881565b505050565b600061043286866040516020016103ed929190611ddf565b905061043f818787610881565b505050505050565b6000806000806000808787600081811061046357610463611e27565b909101357fff000000000000000000000000000000000000000000000000000000000000001691508190506104b95761049b896107fc565b92506104a8838989610a0e565b929850909650945091506106049050565b7fff00000000000000000000000000000000000000000000000000000000000000818116016104f8576104eb896107fc565b92506104a8838989610a5f565b7ffe000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082160161054a576104eb89610a8b565b7ffd000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216016105ae5761059e898989610af8565b9550955095509550955050610604565b6040517f6085cd820000000000000000000000000000000000000000000000000000000081527fff00000000000000000000000000000000000000000000000000000000000000821660048201526024016103c0565b939792965093509350565b60006102cb7f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83610c75565b600033301461067e576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044016103c0565b81516020830134f0905073ffffffffffffffffffffffffffffffffffffffff81166106d757816040517f0d2571910000000000000000000000000000000000000000000000000000000081526004016103c09190611eba565b60405173ffffffffffffffffffffffffffffffffffffffff821681527fa506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c9060200160405180910390a1919050565b6000610731600061060f565b905090565b60007f6ffbd451000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083160161078957506001919050565b6102cb82610cd3565b60008060008060006107a5888888610447565b509650919450925090508282108015906107bd575060015b9450505050935093915050565b6040517fa038794000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f190100000000000000000000000000000000000000000000000000000000000060208201524660228201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166042820152605681018290526000906076015b604051602081830303815290604052805190602001209050919050565b8060005b81811015610a0757368484838181106108a0576108a0611e27565b90506020028101906108b29190611ecd565b90506108c16020820182611f0b565b156108fb576040517f230d1ccc000000000000000000000000000000000000000000000000000000008152600481018390526024016103c0565b6040810135805a101561094e5782815a6040517f2bb3e3ba0000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915260448201526064016103c0565b60006109886109636080850160608601611f26565b608085013584156109745784610976565b5a5b61098360a0880188611f41565b610d2f565b905080156109cf57877f5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7856040516109c291815260200190565b60405180910390a26109f1565b6109f16109e26040850160208601611f0b565b89866109ec610d4c565b610d6b565b50505080806109ff90611fd5565b915050610885565b5050505050565b6000808080610a2987610a24876006818b61200d565b610db9565b6000908152873560f01c6020818152604080842084526002909a013560e01c908190529890912090999198509695509350505050565b6000808080610a7a87610a75876001818b61200d565b610a0e565b935093509350935093509350935093565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201526000602282018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660428301526056820183905290607601610864565b6000808080806004600188013560e81c82610b138383612037565b9050610b258b61022683868d8f61200d565b939b5091995097509550935087871015610b7d57610b4581848b8d61200d565b89896040517fb006aba00000000000000000000000000000000000000000000000000000000081526004016103c0949392919061204a565b8092505b88831015610c675760038301928a013560e81c9150610ba08383612037565b90506000610bc2610bb08861124f565b8c8c879086926102269392919061200d565b939c50919a5098509091505088881015610c1a57610be282858c8e61200d565b8a8a6040517fb006aba00000000000000000000000000000000000000000000000000000000081526004016103c0949392919061204a565b848110610c5d576040517f37daf62b00000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016103c0565b9350915081610b81565b505050939792965093509350565b6000808383604051602001610c94929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012054949350505050565b60007fe4a77bbc000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601610d2657506001919050565b6102cb82611283565b6000604051828482376000808483898b8af1979650505050505050565b60603d604051915060208201818101604052818352816000823e505090565b8315610d7957805160208201fd5b827fab46c69f7f32e1bf09b0725853da82a211e5402a0600296ab499a2fb5ea3b4198383604051610dab929190612071565b60405180910390a250505050565b60008060005b8381101561124657600181019085013560f81c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101610e6057601582019186013560f881901c9060581c73ffffffffffffffffffffffffffffffffffffffff81169074ff000000000000000000000000000000000000000016811785610e465780610e55565b60008681526020829052604090205b955050505050610dbf565b80610ef65760018201918681013560f81c906043016000610e8c8a610e8784888c8e61200d565b61136d565b60ff841697909701969194508491905060a083901b74ff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff82161786610edb5780610eea565b60008781526020829052604090205b96505050505050610dbf565b6002810361101e576000808784013560f881901c9060581c73ffffffffffffffffffffffffffffffffffffffff16601586019550909250905060008885013560e81c600386018162ffffff169150809650819250505060008186019050610f6f8b848c8c8a908692610f6a9392919061200d565b611630565b610fb7578a83610f8183898d8f61200d565b6040517f9a9462320000000000000000000000000000000000000000000000000000000081526004016103c0949392919061208a565b60ff8416979097019694508460a084901b74ff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617876110025780611011565b60008881526020829052604090205b9750505050505050610dbf565b60038103611051576020820191860135836110395780611048565b60008481526020829052604090205b93505050610dbf565b6004810361109d576003808301928781013560e81c919082010160008061107e8b610a2485898d8f61200d565b60009889526020526040909720969097019650909350610dbf92505050565b600681036111a55760008287013560f81c60018401935060ff16905060008784013560f01c60028501945061ffff16905060008885013560e81c600386018162ffffff16915080965081925050506000818601905060008061110b8d8d8d8b908792610a249392919061200d565b9398508893909250905084821061112157988501985b604080517f53657175656e6365206e657374656420636f6e6669673a0a0000000000000000602080830191909152603882018490526058820188905260788083018a90528351808403909101815260989092019092528051910120896111875780611196565b60008a81526020829052604090205b99505050505050505050610dbf565b600581036112115760208201918601358781036111e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94505b60006111eb82611817565b9050846111f85780611207565b60008581526020829052604090205b9450505050610dbf565b6040517fb2505f7c000000000000000000000000000000000000000000000000000000008152600481018290526024016103c0565b50935093915050565b7f8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d160009081526020829052604081206102cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fac6a444e00000000000000000000000000000000000000000000000000000000148061131657507fffffffff0000000000000000000000000000000000000000000000000000000082167f36e7817500000000000000000000000000000000000000000000000000000000145b1561132357506001919050565b7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102cb565b6000604282146113ad5782826040517f2ee17a3d0000000000000000000000000000000000000000000000000000000081526004016103c09291906120ca565b60006113c66113bd6001856120de565b85013560f81c90565b60ff169050604084013560f81c843560208601357f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081111561143a578686826040517fad4aac760000000000000000000000000000000000000000000000000000000081526004016103c0939291906120f1565b8260ff16601b1415801561145257508260ff16601c14155b1561148f578686846040517fe578897e0000000000000000000000000000000000000000000000000000000081526004016103c093929190612115565b600184036114fc576040805160008152602081018083528a905260ff851691810191909152606081018390526080810182905260019060a0015b6020604051602081039080840390855afa1580156114eb573d6000803e3d6000fd5b5050506020604051035194506115d4565b60028403611599576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101899052600190605c01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff861690820152606081018490526080810183905260a0016114c9565b86868560016040517f9dfba8520000000000000000000000000000000000000000000000000000000081526004016103c0949392919061213c565b73ffffffffffffffffffffffffffffffffffffffff85166116255786866040517f6c1719d20000000000000000000000000000000000000000000000000000000081526004016103c09291906120ca565b505050509392505050565b600081810361166b576040517fac241e1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838361167a6001826120de565b81811061168957611689611e27565b919091013560f81c91505060018114806116a35750600281145b156116e8578473ffffffffffffffffffffffffffffffffffffffff166116ca87868661136d565b73ffffffffffffffffffffffffffffffffffffffff1614915061180e565b600381036117d35773ffffffffffffffffffffffffffffffffffffffff8516631626ba7e878660008761171c6001826120de565b926117299392919061200d565b6040518463ffffffff1660e01b815260040161174793929190612168565b602060405180830381865afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611788919061218b565b7fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014915061180e565b83838260006040517f9dfba8520000000000000000000000000000000000000000000000000000000081526004016103c0949392919061213c565b50949350505050565b6040517f53657175656e636520737461746963206469676573743a0a0000000000000000602082015260388101829052600090605801610864565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146103d257600080fd5b60006020828403121561189257600080fd5b813561031781611852565b60008083601f8401126118af57600080fd5b50813567ffffffffffffffff8111156118c757600080fd5b6020830191508360208285010111156118df57600080fd5b9250929050565b6000806000604084860312156118fb57600080fd5b83359250602084013567ffffffffffffffff81111561191957600080fd5b6119258682870161189d565b9497909650939450505050565b6000806000806040858703121561194857600080fd5b843567ffffffffffffffff8082111561196057600080fd5b61196c8883890161189d565b9096509450602087013591508082111561198557600080fd5b506119928782880161189d565b95989497509550505050565b6000602082840312156119b057600080fd5b5035919050565b60008083601f8401126119c957600080fd5b50813567ffffffffffffffff8111156119e157600080fd5b6020830191508360208260051b85010111156118df57600080fd5b60008060208385031215611a0f57600080fd5b823567ffffffffffffffff811115611a2657600080fd5b611a32858286016119b7565b90969095509350505050565b600080600080600060608688031215611a5657600080fd5b853567ffffffffffffffff80821115611a6e57600080fd5b611a7a89838a016119b7565b9097509550602088013594506040880135915080821115611a9a57600080fd5b50611aa78882890161189d565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611af957600080fd5b813567ffffffffffffffff80821115611b1157600080fd5b818401915084601f830112611b2557600080fd5b813581811115611b3757611b37611ab8565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611b7d57611b7d611ab8565b81604052828152876020848701011115611b9657600080fd5b826020860160208301376000928101602001929092525095945050505050565b8183823760009101908152919050565b80358015158114611bd657600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bd657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260006020808501808196508560051b810191508460005b87811015611d8a57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41883603018112611ca157600080fd5b870160c0611cae82611bc6565b15158652611cbd878301611bc6565b15158688015260408281013590870152606073ffffffffffffffffffffffffffffffffffffffff611cef828501611bdb565b16908701526080828101359087015260a080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112611d3557600080fd5b90920187810192903567ffffffffffffffff811115611d5357600080fd5b803603841315611d6257600080fd5b8282890152611d748389018286611bff565b9c89019c97505050928601925050600101611c62565b5091979650505050505050565b60408152600560408201527f73656c663a000000000000000000000000000000000000000000000000000000606082015260806020820152600061037b608083018486611c48565b60408152600660408201527f67756573743a0000000000000000000000000000000000000000000000000000606082015260806020820152600061037b608083018486611c48565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815180845260005b81811015611e7c57602081850181015186830182015201611e60565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006103176020830184611e56565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112611f0157600080fd5b9190910192915050565b600060208284031215611f1d57600080fd5b61031782611bc6565b600060208284031215611f3857600080fd5b61031782611bdb565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f7657600080fd5b83018035915067ffffffffffffffff821115611f9157600080fd5b6020019150368190038213156118df57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200657612006611fa6565b5060010190565b6000808585111561201d57600080fd5b8386111561202a57600080fd5b5050820193919092039150565b808201808211156102cb576102cb611fa6565b60608152600061205e606083018688611bff565b6020830194909452506040015292915050565b82815260406020820152600061037b6040830184611e56565b84815273ffffffffffffffffffffffffffffffffffffffff841660208201526060604082015260006120c0606083018486611bff565b9695505050505050565b60208152600061037b602083018486611bff565b818103818111156102cb576102cb611fa6565b604081526000612105604083018587611bff565b9050826020830152949350505050565b604081526000612129604083018587611bff565b905060ff83166020830152949350505050565b606081526000612150606083018688611bff565b60208301949094525090151560409091015292915050565b838152604060208201526000612182604083018486611bff565b95945050505050565b60006020828403121561219d57600080fd5b81516103178161185256fea26469706673582212209bb95d18e97f278aa47e0c04c20d5a6af9bdb6d473c6d4051192cd96fc17866864736f6c63430008120033", - "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0x21DE PUSH2 0x2D PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH2 0x21DE PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x61C2926C GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x8C3F5563 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C3F5563 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x90042BAF EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xAFFED0E0 EQ PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x61C2926C EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x7A9A1628 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0x853C5068 EQ PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x20C13B0B GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x20C13B0B EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x29561426 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x57C56D6B EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x1880 JUMP JUMPDEST PUSH2 0x2C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x18E6 JUMP JUMPDEST PUSH2 0x2D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x162 CALLDATASIZE PUSH1 0x4 PUSH2 0x1932 JUMP JUMPDEST PUSH2 0x31E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x199E JUMP JUMPDEST PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH32 0x8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x3D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A3E JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x18E6 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x199E JUMP JUMPDEST PUSH2 0x60F JUMP JUMPDEST PUSH2 0x286 PUSH2 0x281 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AE7 JUMP JUMPDEST PUSH2 0x63B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH2 0x725 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CB DUP3 PUSH2 0x736 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DF DUP6 DUP6 DUP6 PUSH2 0x792 JUMP JUMPDEST POP SWAP1 POP DUP1 ISZERO PUSH2 0x311 JUMPI POP PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP1 POP PUSH2 0x317 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x343 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x334 SWAP3 SWAP2 SWAP1 PUSH2 0x1BB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP6 DUP6 PUSH2 0x792 JUMP JUMPDEST POP SWAP1 POP DUP1 ISZERO PUSH2 0x375 JUMPI POP PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 SWAP1 POP PUSH2 0x37B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x3C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3D2 DUP2 PUSH2 0x7CA JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ED SWAP3 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x7FC JUMP JUMPDEST SWAP1 POP PUSH2 0x415 DUP2 DUP5 DUP5 PUSH2 0x881 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x432 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ED SWAP3 SWAP2 SWAP1 PUSH2 0x1DDF JUMP JUMPDEST SWAP1 POP PUSH2 0x43F DUP2 DUP8 DUP8 PUSH2 0x881 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x463 JUMPI PUSH2 0x463 PUSH2 0x1E27 JUMP JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP2 POP DUP2 SWAP1 POP PUSH2 0x4B9 JUMPI PUSH2 0x49B DUP10 PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP PUSH2 0x4A8 DUP4 DUP10 DUP10 PUSH2 0xA0E JUMP JUMPDEST SWAP3 SWAP9 POP SWAP1 SWAP7 POP SWAP5 POP SWAP2 POP PUSH2 0x604 SWAP1 POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 DUP2 AND ADD PUSH2 0x4F8 JUMPI PUSH2 0x4EB DUP10 PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP PUSH2 0x4A8 DUP4 DUP10 DUP10 PUSH2 0xA5F JUMP JUMPDEST PUSH32 0xFE00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND ADD PUSH2 0x54A JUMPI PUSH2 0x4EB DUP10 PUSH2 0xA8B JUMP JUMPDEST PUSH32 0xFD00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND ADD PUSH2 0x5AE JUMPI PUSH2 0x59E DUP10 DUP10 DUP10 PUSH2 0xAF8 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x604 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6085CD8200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CB PUSH32 0x8D0BF1FD623D628C741362C1289948E57B3E2905218C676D3E69ABEE36D6AE2E DUP4 PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x67E JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x3C0 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD CALLVALUE CREATE SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6D7 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xD25719100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x1EBA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0xA506AD4E7F05ECEBA62A023C3219E5BD98A615F4FA87E2AFB08A2DA5CF62BF0C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x731 PUSH1 0x0 PUSH2 0x60F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6FFBD45100000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0x789 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CB DUP3 PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x7A5 DUP9 DUP9 DUP9 PUSH2 0x447 JUMP JUMPDEST POP SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP3 DUP3 LT DUP1 ISZERO SWAP1 PUSH2 0x7BD JUMPI POP PUSH1 0x1 JUMPDEST SWAP5 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA038794000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE CHAINID PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x56 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x76 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA07 JUMPI CALLDATASIZE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x8A0 JUMPI PUSH2 0x8A0 PUSH2 0x1E27 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x8B2 SWAP2 SWAP1 PUSH2 0x1ECD JUMP JUMPDEST SWAP1 POP PUSH2 0x8C1 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x1F0B JUMP JUMPDEST ISZERO PUSH2 0x8FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x230D1CCC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP1 GAS LT ISZERO PUSH2 0x94E JUMPI DUP3 DUP2 GAS PUSH1 0x40 MLOAD PUSH32 0x2BB3E3BA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x988 PUSH2 0x963 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x1F26 JUMP JUMPDEST PUSH1 0x80 DUP6 ADD CALLDATALOAD DUP5 ISZERO PUSH2 0x974 JUMPI DUP5 PUSH2 0x976 JUMP JUMPDEST GAS JUMPDEST PUSH2 0x983 PUSH1 0xA0 DUP9 ADD DUP9 PUSH2 0x1F41 JUMP JUMPDEST PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9CF JUMPI DUP8 PUSH32 0x5C4EEB02DABF8976016AB414D617F9A162936DCACE3CDEF8C69EF6E262AD5AE7 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9C2 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x9F1 PUSH2 0x9E2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1F0B JUMP JUMPDEST DUP10 DUP7 PUSH2 0x9EC PUSH2 0xD4C JUMP JUMPDEST PUSH2 0xD6B JUMP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x9FF SWAP1 PUSH2 0x1FD5 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x885 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xA29 DUP8 PUSH2 0xA24 DUP8 PUSH1 0x6 DUP2 DUP12 PUSH2 0x200D JUMP JUMPDEST PUSH2 0xDB9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE DUP8 CALLDATALOAD PUSH1 0xF0 SHR PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP5 MSTORE PUSH1 0x2 SWAP1 SWAP11 ADD CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 SWAP1 MSTORE SWAP9 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP10 SWAP2 SWAP9 POP SWAP7 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xA7A DUP8 PUSH2 0xA75 DUP8 PUSH1 0x1 DUP2 DUP12 PUSH2 0x200D JUMP JUMPDEST PUSH2 0xA0E JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x22 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x42 DUP4 ADD MSTORE PUSH1 0x56 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH1 0x76 ADD PUSH2 0x864 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH1 0x4 PUSH1 0x1 DUP9 ADD CALLDATALOAD PUSH1 0xE8 SHR DUP3 PUSH2 0xB13 DUP4 DUP4 PUSH2 0x2037 JUMP JUMPDEST SWAP1 POP PUSH2 0xB25 DUP12 PUSH2 0x226 DUP4 DUP7 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP12 POP SWAP2 SWAP10 POP SWAP8 POP SWAP6 POP SWAP4 POP DUP8 DUP8 LT ISZERO PUSH2 0xB7D JUMPI PUSH2 0xB45 DUP2 DUP5 DUP12 DUP14 PUSH2 0x200D JUMP JUMPDEST DUP10 DUP10 PUSH1 0x40 MLOAD PUSH32 0xB006ABA000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x204A JUMP JUMPDEST DUP1 SWAP3 POP JUMPDEST DUP9 DUP4 LT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x3 DUP4 ADD SWAP3 DUP11 ADD CALLDATALOAD PUSH1 0xE8 SHR SWAP2 POP PUSH2 0xBA0 DUP4 DUP4 PUSH2 0x2037 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBC2 PUSH2 0xBB0 DUP9 PUSH2 0x124F JUMP JUMPDEST DUP13 DUP13 DUP8 SWAP1 DUP7 SWAP3 PUSH2 0x226 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP13 POP SWAP2 SWAP11 POP SWAP9 POP SWAP1 SWAP2 POP POP DUP9 DUP9 LT ISZERO PUSH2 0xC1A JUMPI PUSH2 0xBE2 DUP3 DUP6 DUP13 DUP15 PUSH2 0x200D JUMP JUMPDEST DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB006ABA000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x204A JUMP JUMPDEST DUP5 DUP2 LT PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x37DAF62B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x3C0 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0xB81 JUMP JUMPDEST POP POP POP SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC94 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xE4A77BBC00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0xD26 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CB DUP3 PUSH2 0x1283 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 DUP5 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 DUP5 DUP4 DUP10 DUP12 DUP11 CALL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 RETURNDATASIZE PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 DUP4 MSTORE DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY POP POP SWAP1 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xD79 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST DUP3 PUSH32 0xAB46C69F7F32E1BF09B0725853DA82A211E5402A0600296AB499A2FB5EA3B419 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xDAB SWAP3 SWAP2 SWAP1 PUSH2 0x2071 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1246 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 DUP6 ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD PUSH2 0xE60 JUMPI PUSH1 0x15 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD PUSH1 0xF8 DUP2 SWAP1 SHR SWAP1 PUSH1 0x58 SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 AND DUP2 OR DUP6 PUSH2 0xE46 JUMPI DUP1 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP6 POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST DUP1 PUSH2 0xEF6 JUMPI PUSH1 0x1 DUP3 ADD SWAP2 DUP7 DUP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP1 PUSH1 0x43 ADD PUSH1 0x0 PUSH2 0xE8C DUP11 PUSH2 0xE87 DUP5 DUP9 DUP13 DUP15 PUSH2 0x200D JUMP JUMPDEST PUSH2 0x136D JUMP JUMPDEST PUSH1 0xFF DUP5 AND SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP2 SWAP5 POP DUP5 SWAP2 SWAP1 POP PUSH1 0xA0 DUP4 SWAP1 SHL PUSH21 0xFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND OR DUP7 PUSH2 0xEDB JUMPI DUP1 PUSH2 0xEEA JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP7 POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x101E JUMPI PUSH1 0x0 DUP1 DUP8 DUP5 ADD CALLDATALOAD PUSH1 0xF8 DUP2 SWAP1 SHR SWAP1 PUSH1 0x58 SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x15 DUP7 ADD SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP9 DUP6 ADD CALLDATALOAD PUSH1 0xE8 SHR PUSH1 0x3 DUP7 ADD DUP2 PUSH3 0xFFFFFF AND SWAP2 POP DUP1 SWAP7 POP DUP2 SWAP3 POP POP POP PUSH1 0x0 DUP2 DUP7 ADD SWAP1 POP PUSH2 0xF6F DUP12 DUP5 DUP13 DUP13 DUP11 SWAP1 DUP7 SWAP3 PUSH2 0xF6A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST PUSH2 0x1630 JUMP JUMPDEST PUSH2 0xFB7 JUMPI DUP11 DUP4 PUSH2 0xF81 DUP4 DUP10 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9A94623200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x208A JUMP JUMPDEST PUSH1 0xFF DUP5 AND SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP5 POP DUP5 PUSH1 0xA0 DUP5 SWAP1 SHL PUSH21 0xFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR DUP8 PUSH2 0x1002 JUMPI DUP1 PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP8 POP POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x1051 JUMPI PUSH1 0x20 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD DUP4 PUSH2 0x1039 JUMPI DUP1 PUSH2 0x1048 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP4 POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x109D JUMPI PUSH1 0x3 DUP1 DUP4 ADD SWAP3 DUP8 DUP2 ADD CALLDATALOAD PUSH1 0xE8 SHR SWAP2 SWAP1 DUP3 ADD ADD PUSH1 0x0 DUP1 PUSH2 0x107E DUP12 PUSH2 0xA24 DUP6 DUP10 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x0 SWAP9 DUP10 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 SWAP7 SWAP1 SWAP8 ADD SWAP7 POP SWAP1 SWAP4 POP PUSH2 0xDBF SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x11A5 JUMPI PUSH1 0x0 DUP3 DUP8 ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH1 0xFF AND SWAP1 POP PUSH1 0x0 DUP8 DUP5 ADD CALLDATALOAD PUSH1 0xF0 SHR PUSH1 0x2 DUP6 ADD SWAP5 POP PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 DUP9 DUP6 ADD CALLDATALOAD PUSH1 0xE8 SHR PUSH1 0x3 DUP7 ADD DUP2 PUSH3 0xFFFFFF AND SWAP2 POP DUP1 SWAP7 POP DUP2 SWAP3 POP POP POP PUSH1 0x0 DUP2 DUP7 ADD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x110B DUP14 DUP14 DUP14 DUP12 SWAP1 DUP8 SWAP3 PUSH2 0xA24 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP9 POP DUP9 SWAP4 SWAP1 SWAP3 POP SWAP1 POP DUP5 DUP3 LT PUSH2 0x1121 JUMPI SWAP9 DUP6 ADD SWAP9 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x53657175656E6365206E657374656420636F6E6669673A0A0000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x38 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x58 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x78 DUP1 DUP4 ADD DUP11 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x98 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 DUP10 PUSH2 0x1187 JUMPI DUP1 PUSH2 0x1196 JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x1211 JUMPI PUSH1 0x20 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD DUP8 DUP2 SUB PUSH2 0x11E0 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP3 PUSH2 0x1817 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x11F8 JUMPI DUP1 PUSH2 0x1207 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP5 POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB2505F7C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xAC6A444E00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1316 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x36E7817500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x1323 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x42 DUP3 EQ PUSH2 0x13AD JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x2EE17A3D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP3 SWAP2 SWAP1 PUSH2 0x20CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C6 PUSH2 0x13BD PUSH1 0x1 DUP6 PUSH2 0x20DE JUMP JUMPDEST DUP6 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0xF8 SHR DUP5 CALLDATALOAD PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP2 GT ISZERO PUSH2 0x143A JUMPI DUP7 DUP7 DUP3 PUSH1 0x40 MLOAD PUSH32 0xAD4AAC7600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20F1 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x1452 JUMPI POP DUP3 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x148F JUMPI DUP7 DUP7 DUP5 PUSH1 0x40 MLOAD PUSH32 0xE578897E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 DUP5 SUB PUSH2 0x14FC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 DUP4 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP6 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP5 POP PUSH2 0x15D4 JUMP JUMPDEST PUSH1 0x2 DUP5 SUB PUSH2 0x1599 JUMPI PUSH1 0x40 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3C DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0x5C ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP5 MSTORE SWAP1 DUP4 ADD DUP1 DUP4 MSTORE MSTORE PUSH1 0xFF DUP7 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 ADD PUSH2 0x14C9 JUMP JUMPDEST DUP7 DUP7 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH32 0x9DFBA85200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x1625 JUMPI DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x6C1719D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP3 SWAP2 SWAP1 PUSH2 0x20CA JUMP JUMPDEST POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB PUSH2 0x166B JUMPI PUSH1 0x40 MLOAD PUSH32 0xAC241E1100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 PUSH2 0x167A PUSH1 0x1 DUP3 PUSH2 0x20DE JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x1689 JUMPI PUSH2 0x1689 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP2 POP POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x16A3 JUMPI POP PUSH1 0x2 DUP2 EQ JUMPDEST ISZERO PUSH2 0x16E8 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16CA DUP8 DUP7 DUP7 PUSH2 0x136D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP2 POP PUSH2 0x180E JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x17D3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH4 0x1626BA7E DUP8 DUP7 PUSH1 0x0 DUP8 PUSH2 0x171C PUSH1 0x1 DUP3 PUSH2 0x20DE JUMP JUMPDEST SWAP3 PUSH2 0x1729 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1747 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1764 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1788 SWAP2 SWAP1 PUSH2 0x218B JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP2 POP PUSH2 0x180E JUMP JUMPDEST DUP4 DUP4 DUP3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x9DFBA85200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x53657175656E636520737461746963206469676573743A0A0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x38 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x58 ADD PUSH2 0x864 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x317 DUP2 PUSH2 0x1852 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x18AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1925 DUP7 DUP3 DUP8 ADD PUSH2 0x189D JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x196C DUP9 DUP4 DUP10 ADD PUSH2 0x189D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1992 DUP8 DUP3 DUP9 ADD PUSH2 0x189D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x19C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A32 DUP6 DUP3 DUP7 ADD PUSH2 0x19B7 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1A56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7A DUP10 DUP4 DUP11 ADD PUSH2 0x19B7 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA7 DUP9 DUP3 DUP10 ADD PUSH2 0x189D JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B37 JUMPI PUSH2 0x1B37 PUSH2 0x1AB8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1B7D JUMPI PUSH2 0x1B7D PUSH2 0x1AB8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP6 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP5 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1D8A JUMPI DUP3 DUP5 SUB DUP10 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP9 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1CA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 ADD PUSH1 0xC0 PUSH2 0x1CAE DUP3 PUSH2 0x1BC6 JUMP JUMPDEST ISZERO ISZERO DUP7 MSTORE PUSH2 0x1CBD DUP8 DUP4 ADD PUSH2 0x1BC6 JUMP JUMPDEST ISZERO ISZERO DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1CEF DUP3 DUP6 ADD PUSH2 0x1BDB JUMP JUMPDEST AND SWAP1 DUP8 ADD MSTORE PUSH1 0x80 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP8 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD CALLDATALOAD CALLDATASIZE DUP5 SWAP1 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 ADD DUP2 SLT PUSH2 0x1D35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 ADD DUP8 DUP2 ADD SWAP3 SWAP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP5 SGT ISZERO PUSH2 0x1D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP3 DUP10 ADD MSTORE PUSH2 0x1D74 DUP4 DUP10 ADD DUP3 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP13 DUP10 ADD SWAP13 SWAP8 POP POP POP SWAP3 DUP7 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1C62 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x5 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x73656C663A000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x6 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x67756573743A0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E7C JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1E60 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x317 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1E56 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1F01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x317 DUP3 PUSH2 0x1BC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x317 DUP3 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1F76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2006 JUMPI PUSH2 0x2006 PUSH2 0x1FA6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x201D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x202A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2CB JUMPI PUSH2 0x2CB PUSH2 0x1FA6 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x205E PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1E56 JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x20C0 PUSH1 0x60 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2CB JUMPI PUSH2 0x2CB PUSH2 0x1FA6 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2105 PUSH1 0x40 DUP4 ADD DUP6 DUP8 PUSH2 0x1BFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2129 PUSH1 0x40 DUP4 ADD DUP6 DUP8 PUSH2 0x1BFF JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2150 PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP SWAP1 ISZERO ISZERO PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2182 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x219D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x317 DUP2 PUSH2 0x1852 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 0xB9 0x5D XOR 0xE9 PUSH32 0x278AA47E0C04C20D5A6AF9BDB6D473C6D4051192CD96FC17866864736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "640:2693:1:-:0;;;;;;;;;;;;-1:-1:-1;200:4:7;185:20;;640:2693:1;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": { - "@SET_IMAGE_HASH_TYPE_HASH_2042": { - "entryPoint": null, - "id": 2042, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@_executeGuest_199": { - "entryPoint": 2177, - "id": 199, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_hashSetImageHashStruct_2071": { - "entryPoint": 4687, - "id": 2071, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@_isValidImage_211": { - "entryPoint": null, - "id": 211, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@_leafForAddressAndWeight_1424": { - "entryPoint": null, - "id": 1424, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@_leafForHardcodedSubdigest_1441": { - "entryPoint": 6167, - "id": 1441, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@_leafForNested_1464": { - "entryPoint": null, - "id": 1464, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@_revertBytes_807": { - "entryPoint": 3435, - "id": 807, - "parameterSlots": 4, - "returnSlots": 0 - }, - "@_signatureValidation_457": { - "entryPoint": 1938, - "id": 457, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@_updateImageHash_222": { - "entryPoint": 1994, - "id": 222, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@call_2515": { - "entryPoint": 3375, - "id": 2515, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@chainedRecover_2217": { - "entryPoint": 2808, - "id": 2217, - "parameterSlots": 3, - "returnSlots": 5 - }, - "@createContract_876": { - "entryPoint": 1595, - "id": 876, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@execute_74": { - "entryPoint": 1050, - "id": 74, - "parameterSlots": 5, - "returnSlots": 0 - }, - "@fkeccak256_2491": { - "entryPoint": null, - "id": 2491, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@isValidSignature_2797": { - "entryPoint": 5680, - "id": 2797, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@isValidSignature_488": { - "entryPoint": 798, - "id": 488, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@isValidSignature_517": { - "entryPoint": 721, - "id": 517, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@nonce_955": { - "entryPoint": 1829, - "id": 955, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@readBytes32Map_1178": { - "entryPoint": 3189, - "id": 1178, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@readBytes32_2339": { - "entryPoint": null, - "id": 2339, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@readBytes32_2475": { - "entryPoint": null, - "id": 2475, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@readFirstUint16_2361": { - "entryPoint": null, - "id": 2361, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@readNonce_976": { - "entryPoint": 1551, - "id": 976, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@readUint16_2433": { - "entryPoint": null, - "id": 2433, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@readUint24_2447": { - "entryPoint": null, - "id": 2447, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@readUint32_2373": { - "entryPoint": null, - "id": 2373, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@readUint8Address_2419": { - "entryPoint": null, - "id": 2419, - "parameterSlots": 3, - "returnSlots": 3 - }, - "@readUint8_2351": { - "entryPoint": null, - "id": 2351, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@readUint8_2403": { - "entryPoint": null, - "id": 2403, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@recoverBranch_1954": { - "entryPoint": 3513, - "id": 1954, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@recoverSigner_2715": { - "entryPoint": 4973, - "id": 2715, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@recover_2020": { - "entryPoint": 2574, - "id": 2020, - "parameterSlots": 3, - "returnSlots": 4 - }, - "@recover_2246": { - "entryPoint": 2655, - "id": 2246, - "parameterSlots": 3, - "returnSlots": 4 - }, - "@returnData_2499": { - "entryPoint": 3404, - "id": 2499, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@selfExecute_102": { - "entryPoint": 981, - "id": 102, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@signatureRecovery_413": { - "entryPoint": 1095, - "id": 413, - "parameterSlots": 3, - "returnSlots": 5 - }, - "@subdigest_1394": { - "entryPoint": 2044, - "id": 1394, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@subdigest_2274": { - "entryPoint": 2699, - "id": 2274, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_240": { - "entryPoint": 704, - "id": 240, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_549": { - "entryPoint": 4739, - "id": 549, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_832": { - "entryPoint": 3283, - "id": 832, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_901": { - "entryPoint": 1846, - "id": 901, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_919": { - "entryPoint": null, - "id": 919, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@updateImageHash_563": { - "entryPoint": 899, - "id": 563, - "parameterSlots": 1, - "returnSlots": 0 - }, - "abi_decode_address": { - "entryPoint": 7131, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_array_struct_Transaction_calldata_dyn_calldata": { - "entryPoint": 6583, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_bool": { - "entryPoint": 7110, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_bytes_calldata": { - "entryPoint": 6301, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_address": { - "entryPoint": 7974, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr": { - "entryPoint": 6652, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes_calldata_ptr": { - "entryPoint": 6718, - "id": null, - "parameterSlots": 2, - "returnSlots": 5 - }, - "abi_decode_tuple_t_bool": { - "entryPoint": 7947, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes32": { - "entryPoint": 6558, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr": { - "entryPoint": 6374, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_bytes4": { - "entryPoint": 6272, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes4_fromMemory": { - "entryPoint": 8587, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr": { - "entryPoint": 6450, - "id": null, - "parameterSlots": 2, - "returnSlots": 4 - }, - "abi_decode_tuple_t_bytes_memory_ptr": { - "entryPoint": 6887, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_uint256": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_array_struct_Transaction_calldata_dyn_calldata": { - "entryPoint": 7240, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_bytes": { - "entryPoint": 7766, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_bytes_calldata": { - "entryPoint": 7167, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { - "entryPoint": 7094, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_uint256_t_address_t_bytes32__to_t_string_memory_ptr_t_uint256_t_address_t_bytes32__nonPadded_inplace_fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7_t_bytes32_t_uint256_t_uint256__to_t_string_memory_ptr_t_bytes32_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes1__to_t_bytes1__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_address_t_bytes_calldata_ptr_slice__to_t_bytes32_t_address_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 8330, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr_slice__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 8552, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 8394, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr_slice_t_uint256_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 8266, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed": { - "entryPoint": 8433, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr_t_uint256_t_bool__to_t_bytes_memory_ptr_t_uint256_t_bool__fromStack_reversed": { - "entryPoint": 8508, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed": { - "entryPoint": 8469, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 7866, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_4dfa0bed92fb5c2df0b47ce555e6e6b89f746e856aa9783c634a4987edcbf682_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 7647, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 7575, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 8305, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__to_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 6, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "access_calldata_tail_t_bytes_calldata_ptr": { - "entryPoint": 8001, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "access_calldata_tail_t_struct$_Transaction_$1292_calldata_ptr": { - "entryPoint": 7885, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "calldata_array_index_range_access_t_bytes_calldata_ptr": { - "entryPoint": 8205, - "id": null, - "parameterSlots": 4, - "returnSlots": 2 - }, - "checked_add_t_uint256": { - "entryPoint": 8247, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_sub_t_uint256": { - "entryPoint": 8414, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "increment_t_uint256": { - "entryPoint": 8149, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "panic_error_0x11": { - "entryPoint": 8102, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x32": { - "entryPoint": 7719, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x41": { - "entryPoint": 6840, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "validator_revert_bytes4": { - "entryPoint": 6226, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:20962:22", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:22", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "58:133:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "169:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "178:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "181:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "171:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "171:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "171:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "81:5:22" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "92:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "99:66:22", - "type": "", - "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "88:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "88:78:22" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "78:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "78:89:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "71:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "71:97:22" - }, - "nodeType": "YulIf", - "src": "68:117:22" - } - ] - }, - "name": "validator_revert_bytes4", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "47:5:22", - "type": "" - } - ], - "src": "14:177:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "265:176:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "311:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "320:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "323:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "313:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "313:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "313:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "286:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "295:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "282:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "282:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "307:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "278:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "278:32:22" - }, - "nodeType": "YulIf", - "src": "275:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "336:36:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "362:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "349:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "349:23:22" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "340:5:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "405:5:22" - } - ], - "functionName": { - "name": "validator_revert_bytes4", - "nodeType": "YulIdentifier", - "src": "381:23:22" - }, - "nodeType": "YulFunctionCall", - "src": "381:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "381:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "420:15:22", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "430:5:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "420:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes4", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "231:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "242:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "254:6:22", - "type": "" - } - ], - "src": "196:245:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "541:92:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "551:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "563:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "574:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "559:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "559:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "551:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "593:9:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "618:6:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "611:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "611:14:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "604:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "604:22:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "586:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "586:41:22" - }, - "nodeType": "YulExpressionStatement", - "src": "586:41:22" - } - ] - }, - "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "510:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "521:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "532:4:22", - "type": "" - } - ], - "src": "446:187:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "710:275:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "759:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "768:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "771:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "761:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "761:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "761:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "738:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "746:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "734:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "734:17:22" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "753:3:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "730:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "730:27:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "723:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "723:35:22" - }, - "nodeType": "YulIf", - "src": "720:55:22" - }, - { - "nodeType": "YulAssignment", - "src": "784:30:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "807:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "794:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "794:20:22" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "784:6:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "857:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "866:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "869:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "859:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "859:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "859:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "829:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "837:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "826:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "826:30:22" - }, - "nodeType": "YulIf", - "src": "823:50:22" - }, - { - "nodeType": "YulAssignment", - "src": "882:29:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "898:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "906:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "894:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "894:17:22" - }, - "variableNames": [ - { - "name": "arrayPos", - "nodeType": "YulIdentifier", - "src": "882:8:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "963:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "972:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "975:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "965:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "965:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "965:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "934:6:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "942:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "930:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "930:19:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "951:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "926:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "926:30:22" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "958:3:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "923:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "923:39:22" - }, - "nodeType": "YulIf", - "src": "920:59:22" - } - ] - }, - "name": "abi_decode_bytes_calldata", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "673:6:22", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "681:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "arrayPos", - "nodeType": "YulTypedName", - "src": "689:8:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "699:6:22", - "type": "" - } - ], - "src": "638:347:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1096:371:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1142:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1151:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1154:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1144:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1144:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1144:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1117:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1126:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1113:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1113:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1138:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1109:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1109:32:22" - }, - "nodeType": "YulIf", - "src": "1106:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "1167:33:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1190:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1177:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "1177:23:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1167:6:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1209:46:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1240:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1251:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1236:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1236:18:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1223:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "1223:32:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1213:6:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1298:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1307:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1310:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1300:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1300:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1300:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1270:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1278:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1267:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "1267:30:22" - }, - "nodeType": "YulIf", - "src": "1264:50:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1323:84:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1379:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1390:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1375:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1375:22:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1399:7:22" - } - ], - "functionName": { - "name": "abi_decode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "1349:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "1349:58:22" - }, - "variables": [ - { - "name": "value1_1", - "nodeType": "YulTypedName", - "src": "1327:8:22", - "type": "" - }, - { - "name": "value2_1", - "nodeType": "YulTypedName", - "src": "1337:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1416:18:22", - "value": { - "name": "value1_1", - "nodeType": "YulIdentifier", - "src": "1426:8:22" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1416:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1443:18:22", - "value": { - "name": "value2_1", - "nodeType": "YulIdentifier", - "src": "1453:8:22" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1443:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1046:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1057:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1069:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1077:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1085:6:22", - "type": "" - } - ], - "src": "990:477:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1571:149:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1581:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1593:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1604:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1589:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1589:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1581:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1623:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1638:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1646:66:22", - "type": "", - "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1634:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1634:79:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1616:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1616:98:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1616:98:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1540:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1551:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1562:4:22", - "type": "" - } - ], - "src": "1472:248:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1850:592:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1896:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1905:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1908:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1898:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1898:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1898:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1871:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1880:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1867:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1867:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1892:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1863:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1863:32:22" - }, - "nodeType": "YulIf", - "src": "1860:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1921:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1948:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1935:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "1935:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1925:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1967:28:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1977:18:22", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "1971:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2022:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2031:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2034:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2024:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2024:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2024:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2010:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2018:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2007:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "2007:14:22" - }, - "nodeType": "YulIf", - "src": "2004:34:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2047:84:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2103:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2114:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2099:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2099:22:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2123:7:22" - } - ], - "functionName": { - "name": "abi_decode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "2073:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "2073:58:22" - }, - "variables": [ - { - "name": "value0_1", - "nodeType": "YulTypedName", - "src": "2051:8:22", - "type": "" - }, - { - "name": "value1_1", - "nodeType": "YulTypedName", - "src": "2061:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2140:18:22", - "value": { - "name": "value0_1", - "nodeType": "YulIdentifier", - "src": "2150:8:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2140:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2167:18:22", - "value": { - "name": "value1_1", - "nodeType": "YulIdentifier", - "src": "2177:8:22" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2167:6:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2194:48:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2227:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2238:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2223:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2223:18:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2210:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "2210:32:22" - }, - "variables": [ - { - "name": "offset_1", - "nodeType": "YulTypedName", - "src": "2198:8:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2271:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2280:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2283:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2273:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2273:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2273:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "2257:8:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2267:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2254:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "2254:16:22" - }, - "nodeType": "YulIf", - "src": "2251:36:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2296:86:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2352:9:22" - }, - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "2363:8:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2348:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2348:24:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2374:7:22" - } - ], - "functionName": { - "name": "abi_decode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "2322:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "2322:60:22" - }, - "variables": [ - { - "name": "value2_1", - "nodeType": "YulTypedName", - "src": "2300:8:22", - "type": "" - }, - { - "name": "value3_1", - "nodeType": "YulTypedName", - "src": "2310:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2391:18:22", - "value": { - "name": "value2_1", - "nodeType": "YulIdentifier", - "src": "2401:8:22" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "2391:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2418:18:22", - "value": { - "name": "value3_1", - "nodeType": "YulIdentifier", - "src": "2428:8:22" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "2418:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1792:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1803:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1815:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1823:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1831:6:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "1839:6:22", - "type": "" - } - ], - "src": "1725:717:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2517:110:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2563:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2572:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2575:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2565:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2565:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2565:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2538:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2547:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2534:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2534:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2559:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2530:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2530:32:22" - }, - "nodeType": "YulIf", - "src": "2527:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "2588:33:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2611:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2598:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "2598:23:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2588:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes32", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2483:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "2494:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2506:6:22", - "type": "" - } - ], - "src": "2447:180:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2733:76:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2743:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2755:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2766:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2751:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2751:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2743:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2785:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2796:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2778:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2778:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2778:25:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2702:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2713:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2724:4:22", - "type": "" - } - ], - "src": "2632:177:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2918:283:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2967:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2976:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2979:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2969:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2969:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2969:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2946:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2954:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2942:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2942:17:22" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "2961:3:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2938:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2938:27:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2931:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2931:35:22" - }, - "nodeType": "YulIf", - "src": "2928:55:22" - }, - { - "nodeType": "YulAssignment", - "src": "2992:30:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3015:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3002:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "3002:20:22" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2992:6:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3065:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3074:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3077:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3067:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3067:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3067:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3037:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3045:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3034:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "3034:30:22" - }, - "nodeType": "YulIf", - "src": "3031:50:22" - }, - { - "nodeType": "YulAssignment", - "src": "3090:29:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3106:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3114:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3102:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3102:17:22" - }, - "variableNames": [ - { - "name": "arrayPos", - "nodeType": "YulIdentifier", - "src": "3090:8:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3179:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3188:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3191:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3181:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3181:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3181:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3142:6:22" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3154:1:22", - "type": "", - "value": "5" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3157:6:22" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3150:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3150:14:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3138:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3138:27:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3167:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3134:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3134:38:22" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "3174:3:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3131:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "3131:47:22" - }, - "nodeType": "YulIf", - "src": "3128:67:22" - } - ] - }, - "name": "abi_decode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "2881:6:22", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "2889:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "arrayPos", - "nodeType": "YulTypedName", - "src": "2897:8:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "2907:6:22", - "type": "" - } - ], - "src": "2814:387:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3342:352:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3388:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3397:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3400:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3390:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3390:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3390:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3363:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3372:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3359:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3359:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3384:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "3355:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3355:32:22" - }, - "nodeType": "YulIf", - "src": "3352:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3413:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3440:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3427:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "3427:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3417:6:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3493:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3502:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3505:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3495:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3495:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3495:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3465:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3473:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3462:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "3462:30:22" - }, - "nodeType": "YulIf", - "src": "3459:50:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3518:116:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3606:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3617:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3602:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3602:22:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3626:7:22" - } - ], - "functionName": { - "name": "abi_decode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulIdentifier", - "src": "3544:57:22" - }, - "nodeType": "YulFunctionCall", - "src": "3544:90:22" - }, - "variables": [ - { - "name": "value0_1", - "nodeType": "YulTypedName", - "src": "3522:8:22", - "type": "" - }, - { - "name": "value1_1", - "nodeType": "YulTypedName", - "src": "3532:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3643:18:22", - "value": { - "name": "value0_1", - "nodeType": "YulIdentifier", - "src": "3653:8:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3643:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3670:18:22", - "value": { - "name": "value1_1", - "nodeType": "YulIdentifier", - "src": "3680:8:22" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "3670:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3300:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "3311:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3323:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "3331:6:22", - "type": "" - } - ], - "src": "3206:488:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3888:675:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3934:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3943:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3946:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3936:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3936:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3936:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3909:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3918:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3905:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3905:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3930:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "3901:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3901:32:22" - }, - "nodeType": "YulIf", - "src": "3898:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3959:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3986:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3973:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "3973:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3963:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4005:28:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4015:18:22", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "4009:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4060:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4069:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4072:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "4062:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4062:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4062:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4048:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4056:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4045:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "4045:14:22" - }, - "nodeType": "YulIf", - "src": "4042:34:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4085:116:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4173:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4184:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4169:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4169:22:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "4193:7:22" - } - ], - "functionName": { - "name": "abi_decode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulIdentifier", - "src": "4111:57:22" - }, - "nodeType": "YulFunctionCall", - "src": "4111:90:22" - }, - "variables": [ - { - "name": "value0_1", - "nodeType": "YulTypedName", - "src": "4089:8:22", - "type": "" - }, - { - "name": "value1_1", - "nodeType": "YulTypedName", - "src": "4099:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4210:18:22", - "value": { - "name": "value0_1", - "nodeType": "YulIdentifier", - "src": "4220:8:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4210:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4237:18:22", - "value": { - "name": "value1_1", - "nodeType": "YulIdentifier", - "src": "4247:8:22" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "4237:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4264:42:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4291:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4302:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4287:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4287:18:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "4274:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "4274:32:22" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "4264:6:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4315:48:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4348:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4359:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4344:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4344:18:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "4331:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "4331:32:22" - }, - "variables": [ - { - "name": "offset_1", - "nodeType": "YulTypedName", - "src": "4319:8:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4392:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4401:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4404:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "4394:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4394:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4394:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "4378:8:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4388:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4375:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "4375:16:22" - }, - "nodeType": "YulIf", - "src": "4372:36:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4417:86:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4473:9:22" - }, - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "4484:8:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4469:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4469:24:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "4495:7:22" - } - ], - "functionName": { - "name": "abi_decode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "4443:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "4443:60:22" - }, - "variables": [ - { - "name": "value3_1", - "nodeType": "YulTypedName", - "src": "4421:8:22", - "type": "" - }, - { - "name": "value4_1", - "nodeType": "YulTypedName", - "src": "4431:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4512:18:22", - "value": { - "name": "value3_1", - "nodeType": "YulIdentifier", - "src": "4522:8:22" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "4512:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4539:18:22", - "value": { - "name": "value4_1", - "nodeType": "YulIdentifier", - "src": "4549:8:22" - }, - "variableNames": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "4539:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3822:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "3833:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3845:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "3853:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "3861:6:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "3869:6:22", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "3877:6:22", - "type": "" - } - ], - "src": "3699:864:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4781:250:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4791:27:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4803:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4814:3:22", - "type": "", - "value": "160" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4799:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4799:19:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4791:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4834:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4845:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4827:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4827:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4827:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4872:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4883:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4868:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4868:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "4888:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4861:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4861:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4861:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4915:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4926:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4911:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4911:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "4931:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4904:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4904:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4904:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4958:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4969:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4954:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4954:18:22" - }, - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "4974:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4947:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4947:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4947:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5001:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5012:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4997:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4997:19:22" - }, - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "5018:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4990:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4990:35:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4990:35:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__to_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4718:9:22", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "4729:6:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "4737:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "4745:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "4753:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4761:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4772:4:22", - "type": "" - } - ], - "src": "4568:463:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5106:110:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "5152:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5161:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5164:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5154:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5154:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5154:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "5127:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5136:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "5123:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5123:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5148:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "5119:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5119:32:22" - }, - "nodeType": "YulIf", - "src": "5116:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "5177:33:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5200:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5187:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "5187:23:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5177:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5072:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "5083:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5095:6:22", - "type": "" - } - ], - "src": "5036:180:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5322:76:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5332:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5344:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5355:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5340:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5340:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "5332:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5374:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5385:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5367:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5367:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5367:25:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5291:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5302:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "5313:4:22", - "type": "" - } - ], - "src": "5221:177:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5435:152:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5452:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5455:77:22", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5445:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5445:88:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5445:88:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5549:1:22", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5552:4:22", - "type": "", - "value": "0x41" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5542:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5542:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5542:15:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5573:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5576:4:22", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5566:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5566:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5566:15:22" - } - ] - }, - "name": "panic_error_0x41", - "nodeType": "YulFunctionDefinition", - "src": "5403:184:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5671:901:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "5717:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5726:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5729:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5719:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5719:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5719:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "5692:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5701:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "5688:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5688:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5713:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "5684:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5684:32:22" - }, - "nodeType": "YulIf", - "src": "5681:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5742:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5769:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5756:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "5756:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "5746:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5788:28:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5798:18:22", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "5792:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5843:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5852:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5855:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5845:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5845:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5845:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "5831:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "5839:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5828:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "5828:14:22" - }, - "nodeType": "YulIf", - "src": "5825:34:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5868:32:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5882:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "5893:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5878:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5878:22:22" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "5872:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5948:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5957:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5960:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5950:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5950:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5950:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "5927:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5931:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5923:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5923:13:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "5938:7:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "5919:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5919:27:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "5912:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5912:35:22" - }, - "nodeType": "YulIf", - "src": "5909:55:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5973:26:22", - "value": { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "5996:2:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5983:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "5983:16:22" - }, - "variables": [ - { - "name": "_3", - "nodeType": "YulTypedName", - "src": "5977:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6022:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "6024:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "6024:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6024:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6014:2:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "6018:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "6011:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6011:10:22" - }, - "nodeType": "YulIf", - "src": "6008:36:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6053:76:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6063:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" - }, - "variables": [ - { - "name": "_4", - "nodeType": "YulTypedName", - "src": "6057:2:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6138:23:22", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6158:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "6152:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "6152:9:22" - }, - "variables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "6142:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6170:71:22", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6192:6:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6216:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6220:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6212:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6212:13:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "6227:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "6208:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6208:22:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6232:2:22", - "type": "", - "value": "63" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6204:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6204:31:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "6237:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "6200:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6200:40:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6188:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6188:53:22" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "6174:10:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6300:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "6302:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "6302:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6302:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "6259:10:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "6271:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "6256:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6256:18:22" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "6279:10:22" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6291:6:22" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "6276:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6276:22:22" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "6253:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6253:46:22" - }, - "nodeType": "YulIf", - "src": "6250:72:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6338:2:22", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "6342:10:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6331:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6331:22:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6331:22:22" - }, - { - "expression": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6369:6:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6377:2:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6362:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6362:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6362:18:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6426:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6435:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6438:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "6428:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6428:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6428:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "6403:2:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6407:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6399:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6399:11:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6412:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6395:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6395:20:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "6417:7:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "6392:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6392:33:22" - }, - "nodeType": "YulIf", - "src": "6389:53:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6468:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6476:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6464:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6464:15:22" - }, - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "6485:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6489:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6481:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6481:11:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6494:2:22" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "6451:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "6451:46:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6451:46:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6521:6:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6529:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6517:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6517:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6534:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6513:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6513:24:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6539:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6506:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6506:35:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6506:35:22" - }, - { - "nodeType": "YulAssignment", - "src": "6550:16:22", - "value": { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6560:6:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "6550:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5637:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "5648:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5660:6:22", - "type": "" - } - ], - "src": "5592:980:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6678:125:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6688:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6700:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6711:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6696:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6696:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "6688:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6730:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "6745:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6753:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "6741:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6741:55:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6723:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6723:74:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6723:74:22" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "6647:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "6658:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "6669:4:22", - "type": "" - } - ], - "src": "6577:226:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6955:124:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "6978:3:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "6983:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "6991:6:22" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "6965:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "6965:33:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6965:33:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7007:26:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "7021:3:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "7026:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7017:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7017:16:22" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "7011:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "7049:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7053:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7042:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7042:13:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7042:13:22" - }, - { - "nodeType": "YulAssignment", - "src": "7064:9:22", - "value": { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "7071:2:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "7064:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "6923:3:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "6928:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "6936:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "6947:3:22", - "type": "" - } - ], - "src": "6808:271:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7213:198:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7223:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7235:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7246:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7231:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7231:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "7223:4:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7258:52:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7268:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "7262:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7326:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "7341:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "7349:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "7337:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7337:15:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7319:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7319:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7319:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7373:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7384:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7369:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7369:18:22" - }, - { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "7393:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "7401:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "7389:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7389:15:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7362:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7362:43:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7362:43:22" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "7174:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "7185:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "7193:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "7204:4:22", - "type": "" - } - ], - "src": "7084:327:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7462:114:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7472:29:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "7494:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "7481:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "7481:20:22" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7472:5:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7554:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7563:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7566:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "7556:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7556:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7556:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7523:5:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7544:5:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "7537:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7537:13:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "7530:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7530:21:22" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "7520:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "7520:32:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "7513:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7513:40:22" - }, - "nodeType": "YulIf", - "src": "7510:60:22" - } - ] - }, - "name": "abi_decode_bool", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "7441:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "7452:5:22", - "type": "" - } - ], - "src": "7416:160:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7630:147:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7640:29:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "7662:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "7649:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "7649:20:22" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7640:5:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7755:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7764:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7767:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "7757:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7757:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7757:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7691:5:22" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7702:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7709:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "7698:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7698:54:22" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "7688:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "7688:65:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "7681:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7681:73:22" - }, - "nodeType": "YulIf", - "src": "7678:93:22" - } - ] - }, - "name": "abi_decode_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "7609:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "7620:5:22", - "type": "" - } - ], - "src": "7581:196:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7848:259:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "7865:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "7870:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7858:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7858:19:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7858:19:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "7903:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7908:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7899:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7899:14:22" - }, - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "7915:5:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "7922:6:22" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "7886:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "7886:43:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7886:43:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "7953:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "7958:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7949:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7949:16:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7967:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7945:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7945:27:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7974:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7938:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7938:38:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7938:38:22" - }, - { - "nodeType": "YulAssignment", - "src": "7985:116:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8000:3:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "8013:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8021:2:22", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8009:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8009:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8026:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "8005:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8005:88:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7996:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7996:98:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8096:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7992:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7992:109:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "7985:3:22" - } - ] - } - ] - }, - "name": "abi_encode_bytes_calldata", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "start", - "nodeType": "YulTypedName", - "src": "7817:5:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "7824:6:22", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "7832:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "7840:3:22", - "type": "" - } - ], - "src": "7782:325:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "8210:1930:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8227:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "8232:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8220:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8220:19:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8220:19:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8248:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8258:4:22", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "8252:2:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8271:31:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8294:3:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "8299:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8290:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8290:12:22" - }, - "variables": [ - { - "name": "updated_pos", - "nodeType": "YulTypedName", - "src": "8275:11:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8311:24:22", - "value": { - "name": "updated_pos", - "nodeType": "YulIdentifier", - "src": "8324:11:22" - }, - "variables": [ - { - "name": "pos_1", - "nodeType": "YulTypedName", - "src": "8315:5:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "8344:18:22", - "value": { - "name": "updated_pos", - "nodeType": "YulIdentifier", - "src": "8351:11:22" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8344:3:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8371:38:22", - "value": { - "arguments": [ - { - "name": "pos_1", - "nodeType": "YulIdentifier", - "src": "8387:5:22" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8398:1:22", - "type": "", - "value": "5" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "8401:6:22" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "8394:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8394:14:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8383:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8383:26:22" - }, - "variables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "8375:4:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8418:19:22", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8432:5:22" - }, - "variables": [ - { - "name": "srcPtr", - "nodeType": "YulTypedName", - "src": "8422:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8446:10:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8455:1:22", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "8450:1:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "8514:1600:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8535:3:22" - }, - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "8544:4:22" - }, - { - "name": "pos_1", - "nodeType": "YulIdentifier", - "src": "8550:5:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "8540:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8540:16:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8528:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8528:29:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8528:29:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8570:46:22", - "value": { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "8609:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "8596:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "8596:20:22" - }, - "variables": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulTypedName", - "src": "8574:18:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "8765:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8774:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8777:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "8767:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8767:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8767:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "8643:18:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "8671:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "8671:14:22" - }, - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8687:5:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "8667:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8667:26:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8695:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8663:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8663:99:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "8639:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8639:124:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8632:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8632:132:22" - }, - "nodeType": "YulIf", - "src": "8629:152:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8794:45:22", - "value": { - "arguments": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "8813:18:22" - }, - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8833:5:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8809:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8809:30:22" - }, - "variables": [ - { - "name": "value_1", - "nodeType": "YulTypedName", - "src": "8798:7:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8852:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8862:4:22", - "type": "", - "value": "0xc0" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "8856:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "8886:4:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "8922:7:22" - } - ], - "functionName": { - "name": "abi_decode_bool", - "nodeType": "YulIdentifier", - "src": "8906:15:22" - }, - "nodeType": "YulFunctionCall", - "src": "8906:24:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8899:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8899:32:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8892:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8892:40:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8879:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8879:54:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8879:54:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "8957:4:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "8963:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8953:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8953:13:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9002:7:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "9011:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8998:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8998:16:22" - } - ], - "functionName": { - "name": "abi_decode_bool", - "nodeType": "YulIdentifier", - "src": "8982:15:22" - }, - "nodeType": "YulFunctionCall", - "src": "8982:33:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8975:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8975:41:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8968:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8968:49:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8946:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8946:72:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8946:72:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9031:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9041:4:22", - "type": "", - "value": "0x40" - }, - "variables": [ - { - "name": "_3", - "nodeType": "YulTypedName", - "src": "9035:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9069:4:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "9075:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9065:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9065:13:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9097:7:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "9106:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9093:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9093:16:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9080:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9080:30:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9058:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9058:53:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9058:53:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9124:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9134:4:22", - "type": "", - "value": "0x60" - }, - "variables": [ - { - "name": "_4", - "nodeType": "YulTypedName", - "src": "9128:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9162:4:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "9168:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9158:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9158:13:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9200:7:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "9209:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9196:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9196:16:22" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "9177:18:22" - }, - "nodeType": "YulFunctionCall", - "src": "9177:36:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9215:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "9173:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9173:85:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9151:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9151:108:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9151:108:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9272:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9282:4:22", - "type": "", - "value": "0x80" - }, - "variables": [ - { - "name": "_5", - "nodeType": "YulTypedName", - "src": "9276:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9310:4:22" - }, - { - "name": "_5", - "nodeType": "YulIdentifier", - "src": "9316:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9306:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9306:13:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9338:7:22" - }, - { - "name": "_5", - "nodeType": "YulIdentifier", - "src": "9347:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9334:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9334:16:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9321:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9321:30:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9299:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9299:53:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9299:53:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9365:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9375:4:22", - "type": "", - "value": "0xa0" - }, - "variables": [ - { - "name": "_6", - "nodeType": "YulTypedName", - "src": "9369:2:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9392:58:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9437:7:22" - }, - { - "name": "_6", - "nodeType": "YulIdentifier", - "src": "9446:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9433:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9433:16:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9420:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9420:30:22" - }, - "variables": [ - { - "name": "rel_offset_of_tail_1", - "nodeType": "YulTypedName", - "src": "9396:20:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9603:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9612:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9615:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "9605:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9605:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9605:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "rel_offset_of_tail_1", - "nodeType": "YulIdentifier", - "src": "9477:20:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "9507:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9507:14:22" - }, - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9523:7:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "9503:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9503:28:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9533:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9499:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9499:101:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "9473:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9473:128:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "9466:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9466:136:22" - }, - "nodeType": "YulIf", - "src": "9463:156:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9632:49:22", - "value": { - "arguments": [ - { - "name": "rel_offset_of_tail_1", - "nodeType": "YulIdentifier", - "src": "9651:20:22" - }, - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9673:7:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9647:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9647:34:22" - }, - "variables": [ - { - "name": "value_2", - "nodeType": "YulTypedName", - "src": "9636:7:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9694:37:22", - "value": { - "arguments": [ - { - "name": "value_2", - "nodeType": "YulIdentifier", - "src": "9723:7:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9710:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9710:21:22" - }, - "variables": [ - { - "name": "length_1", - "nodeType": "YulTypedName", - "src": "9698:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9744:31:22", - "value": { - "arguments": [ - { - "name": "value_2", - "nodeType": "YulIdentifier", - "src": "9763:7:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "9772:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9759:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9759:16:22" - }, - "variables": [ - { - "name": "value_3", - "nodeType": "YulTypedName", - "src": "9748:7:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9824:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9833:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9836:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "9826:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9826:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9826:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length_1", - "nodeType": "YulIdentifier", - "src": "9794:8:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9804:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "9791:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "9791:32:22" - }, - "nodeType": "YulIf", - "src": "9788:52:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9900:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9909:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9912:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "9902:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9902:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9902:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "value_3", - "nodeType": "YulIdentifier", - "src": "9860:7:22" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "9873:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9873:14:22" - }, - { - "name": "length_1", - "nodeType": "YulIdentifier", - "src": "9889:8:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "9869:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9869:29:22" - } - ], - "functionName": { - "name": "sgt", - "nodeType": "YulIdentifier", - "src": "9856:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9856:43:22" - }, - "nodeType": "YulIf", - "src": "9853:63:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9940:4:22" - }, - { - "name": "_6", - "nodeType": "YulIdentifier", - "src": "9946:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9936:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9936:13:22" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "9951:2:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9929:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9929:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9929:25:22" - }, - { - "nodeType": "YulAssignment", - "src": "9967:67:22", - "value": { - "arguments": [ - { - "name": "value_3", - "nodeType": "YulIdentifier", - "src": "10001:7:22" - }, - { - "name": "length_1", - "nodeType": "YulIdentifier", - "src": "10010:8:22" - }, - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "10024:4:22" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "10030:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10020:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10020:13:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "9975:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "9975:59:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9967:4:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "10047:25:22", - "value": { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "10061:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "10069:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10057:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10057:15:22" - }, - "variableNames": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "10047:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "10085:19:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "10096:3:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "10101:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10092:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10092:12:22" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "10085:3:22" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "8476:1:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "8479:6:22" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "8473:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "8473:13:22" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "8487:18:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "8489:14:22", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "8498:1:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8501:1:22", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8494:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8494:9:22" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "8489:1:22" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "8469:3:22", - "statements": [] - }, - "src": "8465:1649:22" - }, - { - "nodeType": "YulAssignment", - "src": "10123:11:22", - "value": { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "10130:4:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "10123:3:22" - } - ] - } - ] - }, - "name": "abi_encode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "8179:5:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "8186:6:22", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "8194:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "8202:3:22", - "type": "" - } - ], - "src": "8112:2028:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "10467:272:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10484:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10495:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10477:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "10477:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "10477:21:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10518:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10529:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10514:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10514:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10534:1:22", - "type": "", - "value": "5" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10507:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "10507:29:22" - }, - "nodeType": "YulExpressionStatement", - "src": "10507:29:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10556:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10567:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10552:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10552:18:22" - }, - { - "hexValue": "73656c663a", - "kind": "string", - "nodeType": "YulLiteral", - "src": "10572:7:22", - "type": "", - "value": "self:" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10545:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "10545:35:22" - }, - "nodeType": "YulExpressionStatement", - "src": "10545:35:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10600:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10611:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10596:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10596:20:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10618:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10589:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "10589:33:22" - }, - "nodeType": "YulExpressionStatement", - "src": "10589:33:22" - }, - { - "nodeType": "YulAssignment", - "src": "10631:102:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "10697:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "10705:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10717:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10728:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10713:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10713:19:22" - } - ], - "functionName": { - "name": "abi_encode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulIdentifier", - "src": "10639:57:22" - }, - "nodeType": "YulFunctionCall", - "src": "10639:94:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "10631:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "10428:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "10439:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "10447:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "10458:4:22", - "type": "" - } - ], - "src": "10145:594:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11066:273:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11083:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11094:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11076:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11076:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11076:21:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11117:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11128:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11113:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11113:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11133:1:22", - "type": "", - "value": "6" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11106:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11106:29:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11106:29:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11155:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11166:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11151:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11151:18:22" - }, - { - "hexValue": "67756573743a", - "kind": "string", - "nodeType": "YulLiteral", - "src": "11171:8:22", - "type": "", - "value": "guest:" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11144:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11144:36:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11144:36:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11200:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11211:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11196:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11196:20:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11218:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11189:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11189:33:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11189:33:22" - }, - { - "nodeType": "YulAssignment", - "src": "11231:102:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "11297:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "11305:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11317:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11328:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11313:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11313:19:22" - } - ], - "functionName": { - "name": "abi_encode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulIdentifier", - "src": "11239:57:22" - }, - "nodeType": "YulFunctionCall", - "src": "11239:94:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "11231:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_4dfa0bed92fb5c2df0b47ce555e6e6b89f746e856aa9783c634a4987edcbf682_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "11027:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "11038:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "11046:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "11057:4:22", - "type": "" - } - ], - "src": "10744:595:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11376:152:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11393:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11396:77:22", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11386:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11386:88:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11386:88:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11490:1:22", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11493:4:22", - "type": "", - "value": "0x32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11483:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11483:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11483:15:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11514:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11517:4:22", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "11507:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11507:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11507:15:22" - } - ] - }, - "name": "panic_error_0x32", - "nodeType": "YulFunctionDefinition", - "src": "11344:184:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11632:149:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "11642:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11654:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11665:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11650:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11650:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "11642:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11684:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "11699:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11707:66:22", - "type": "", - "value": "0xff00000000000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "11695:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11695:79:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11677:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11677:98:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11677:98:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes1__to_t_bytes1__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "11601:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "11612:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "11623:4:22", - "type": "" - } - ], - "src": "11533:248:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11835:432:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "11845:26:22", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "11865:5:22" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "11859:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "11859:12:22" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "11849:6:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "11887:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "11892:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11880:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11880:19:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11880:19:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "11908:10:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11917:1:22", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "11912:1:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11979:110:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "11993:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12003:4:22", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "11997:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12035:3:22" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "12040:1:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12031:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12031:11:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "12044:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12027:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12027:20:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "12063:5:22" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "12070:1:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12059:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12059:13:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "12074:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12055:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12055:22:22" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "12049:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "12049:29:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12020:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12020:59:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12020:59:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "11938:1:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "11941:6:22" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "11935:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "11935:13:22" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "11949:21:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "11951:17:22", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "11960:1:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11963:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11956:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11956:12:22" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "11951:1:22" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "11931:3:22", - "statements": [] - }, - "src": "11927:162:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12113:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "12118:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12109:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12109:16:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12127:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12105:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12105:27:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12134:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12098:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12098:38:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12098:38:22" - }, - { - "nodeType": "YulAssignment", - "src": "12145:116:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12160:3:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "12173:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12181:2:22", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12169:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12169:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12186:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "12165:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12165:88:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12156:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12156:98:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12256:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12152:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12152:109:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "12145:3:22" - } - ] - } - ] - }, - "name": "abi_encode_bytes", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "11812:5:22", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "11819:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "11827:3:22", - "type": "" - } - ], - "src": "11786:481:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "12391:98:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "12408:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12419:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12401:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12401:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12401:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "12431:52:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "12456:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "12468:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12479:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12464:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12464:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes", - "nodeType": "YulIdentifier", - "src": "12439:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "12439:44:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "12431:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "12360:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "12371:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "12382:4:22", - "type": "" - } - ], - "src": "12272:217:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "12770:315:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12787:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12792:66:22", - "type": "", - "value": "0x1901000000000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12780:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12780:79:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12780:79:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12879:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12884:1:22", - "type": "", - "value": "2" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12875:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12875:11:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "12888:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12868:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12868:27:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12868:27:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12915:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12920:2:22", - "type": "", - "value": "34" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12911:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12911:12:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12933:2:22", - "type": "", - "value": "96" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "12937:6:22" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "12929:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12929:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12946:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "12925:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12925:88:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12904:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12904:110:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12904:110:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13034:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13039:2:22", - "type": "", - "value": "54" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13030:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13030:12:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "13044:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "13023:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13023:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13023:28:22" - }, - { - "nodeType": "YulAssignment", - "src": "13060:19:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13071:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13076:2:22", - "type": "", - "value": "86" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13067:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13067:12:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "13060:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_uint256_t_address_t_bytes32__to_t_string_memory_ptr_t_uint256_t_address_t_bytes32__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "12730:3:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "12735:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "12743:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "12751:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "12762:3:22", - "type": "" - } - ], - "src": "12494:591:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13196:281:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "13206:51:22", - "value": { - "arguments": [ - { - "name": "ptr_to_tail", - "nodeType": "YulIdentifier", - "src": "13245:11:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "13232:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "13232:25:22" - }, - "variables": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulTypedName", - "src": "13210:18:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13405:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13414:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13417:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "13407:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13407:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13407:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "13280:18:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "13308:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "13308:14:22" - }, - { - "name": "base_ref", - "nodeType": "YulIdentifier", - "src": "13324:8:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "13304:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13304:29:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13335:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13300:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13300:102:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "13276:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13276:127:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "13269:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13269:135:22" - }, - "nodeType": "YulIf", - "src": "13266:155:22" - }, - { - "nodeType": "YulAssignment", - "src": "13430:41:22", - "value": { - "arguments": [ - { - "name": "base_ref", - "nodeType": "YulIdentifier", - "src": "13442:8:22" - }, - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "13452:18:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13438:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13438:33:22" - }, - "variableNames": [ - { - "name": "addr", - "nodeType": "YulIdentifier", - "src": "13430:4:22" - } - ] - } - ] - }, - "name": "access_calldata_tail_t_struct$_Transaction_$1292_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "base_ref", - "nodeType": "YulTypedName", - "src": "13161:8:22", - "type": "" - }, - { - "name": "ptr_to_tail", - "nodeType": "YulTypedName", - "src": "13171:11:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "addr", - "nodeType": "YulTypedName", - "src": "13187:4:22", - "type": "" - } - ], - "src": "13090:387:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13549:113:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "13595:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13604:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13607:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "13597:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13597:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13597:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "13570:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13579:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "13566:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13566:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13591:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "13562:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13562:32:22" - }, - "nodeType": "YulIf", - "src": "13559:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "13620:36:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13646:9:22" - } - ], - "functionName": { - "name": "abi_decode_bool", - "nodeType": "YulIdentifier", - "src": "13630:15:22" - }, - "nodeType": "YulFunctionCall", - "src": "13630:26:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "13620:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bool", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "13515:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "13526:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "13538:6:22", - "type": "" - } - ], - "src": "13482:180:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13824:162:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "13834:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13846:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13857:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13842:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13842:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "13834:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13876:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "13887:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "13869:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13869:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13869:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13914:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13925:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13910:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13910:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "13930:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "13903:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13903:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13903:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13957:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13968:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13953:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13953:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "13973:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "13946:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13946:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13946:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "13777:9:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "13788:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "13796:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "13804:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "13815:4:22", - "type": "" - } - ], - "src": "13667:319:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14061:116:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "14107:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14116:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14119:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14109:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14109:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14109:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "14082:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "14091:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "14078:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14078:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14103:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "14074:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14074:32:22" - }, - "nodeType": "YulIf", - "src": "14071:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "14132:39:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "14161:9:22" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "14142:18:22" - }, - "nodeType": "YulFunctionCall", - "src": "14142:29:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "14132:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "14027:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "14038:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "14050:6:22", - "type": "" - } - ], - "src": "13991:186:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14276:486:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "14286:51:22", - "value": { - "arguments": [ - { - "name": "ptr_to_tail", - "nodeType": "YulIdentifier", - "src": "14325:11:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "14312:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "14312:25:22" - }, - "variables": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulTypedName", - "src": "14290:18:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14485:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14494:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14497:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14487:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14487:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14487:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "14360:18:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "14388:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "14388:14:22" - }, - { - "name": "base_ref", - "nodeType": "YulIdentifier", - "src": "14404:8:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "14384:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14384:29:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14415:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "14380:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14380:102:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "14356:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14356:127:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "14349:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14349:135:22" - }, - "nodeType": "YulIf", - "src": "14346:155:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "14510:47:22", - "value": { - "arguments": [ - { - "name": "base_ref", - "nodeType": "YulIdentifier", - "src": "14528:8:22" - }, - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "14538:18:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "14524:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14524:33:22" - }, - "variables": [ - { - "name": "addr_1", - "nodeType": "YulTypedName", - "src": "14514:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "14566:30:22", - "value": { - "arguments": [ - { - "name": "addr_1", - "nodeType": "YulIdentifier", - "src": "14589:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "14576:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "14576:20:22" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "14566:6:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14639:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14648:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14651:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14641:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14641:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14641:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "14611:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14619:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "14608:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "14608:30:22" - }, - "nodeType": "YulIf", - "src": "14605:50:22" - }, - { - "nodeType": "YulAssignment", - "src": "14664:25:22", - "value": { - "arguments": [ - { - "name": "addr_1", - "nodeType": "YulIdentifier", - "src": "14676:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14684:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "14672:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14672:17:22" - }, - "variableNames": [ - { - "name": "addr", - "nodeType": "YulIdentifier", - "src": "14664:4:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14740:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14749:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14752:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14742:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14742:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14742:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "addr", - "nodeType": "YulIdentifier", - "src": "14705:4:22" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "14715:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "14715:14:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "14731:6:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "14711:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14711:27:22" - } - ], - "functionName": { - "name": "sgt", - "nodeType": "YulIdentifier", - "src": "14701:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14701:38:22" - }, - "nodeType": "YulIf", - "src": "14698:58:22" - } - ] - }, - "name": "access_calldata_tail_t_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "base_ref", - "nodeType": "YulTypedName", - "src": "14233:8:22", - "type": "" - }, - { - "name": "ptr_to_tail", - "nodeType": "YulTypedName", - "src": "14243:11:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "addr", - "nodeType": "YulTypedName", - "src": "14259:4:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "14265:6:22", - "type": "" - } - ], - "src": "14182:580:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14799:152:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14816:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14819:77:22", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "14809:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14809:88:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14809:88:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14913:1:22", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14916:4:22", - "type": "", - "value": "0x11" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "14906:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14906:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14906:15:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14937:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14940:4:22", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14930:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14930:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14930:15:22" - } - ] - }, - "name": "panic_error_0x11", - "nodeType": "YulFunctionDefinition", - "src": "14767:184:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15003:148:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "15094:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "15096:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "15096:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15096:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "15019:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15026:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "15016:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "15016:77:22" - }, - "nodeType": "YulIf", - "src": "15013:103:22" - }, - { - "nodeType": "YulAssignment", - "src": "15125:20:22", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "15136:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15143:1:22", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15132:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15132:13:22" - }, - "variableNames": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "15125:3:22" - } - ] - } - ] - }, - "name": "increment_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "14985:5:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "ret", - "nodeType": "YulTypedName", - "src": "14995:3:22", - "type": "" - } - ], - "src": "14956:195:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15286:201:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "15324:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15333:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15336:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "15326:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15326:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15326:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "15302:10:22" - }, - { - "name": "endIndex", - "nodeType": "YulIdentifier", - "src": "15314:8:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "15299:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "15299:24:22" - }, - "nodeType": "YulIf", - "src": "15296:44:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15373:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15382:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15385:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "15375:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15375:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15375:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "endIndex", - "nodeType": "YulIdentifier", - "src": "15355:8:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "15365:6:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "15352:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "15352:20:22" - }, - "nodeType": "YulIf", - "src": "15349:40:22" - }, - { - "nodeType": "YulAssignment", - "src": "15398:36:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "15415:6:22" - }, - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "15423:10:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15411:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15411:23:22" - }, - "variableNames": [ - { - "name": "offsetOut", - "nodeType": "YulIdentifier", - "src": "15398:9:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "15443:38:22", - "value": { - "arguments": [ - { - "name": "endIndex", - "nodeType": "YulIdentifier", - "src": "15460:8:22" - }, - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "15470:10:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "15456:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15456:25:22" - }, - "variableNames": [ - { - "name": "lengthOut", - "nodeType": "YulIdentifier", - "src": "15443:9:22" - } - ] - } - ] - }, - "name": "calldata_array_index_range_access_t_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "15220:6:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "15228:6:22", - "type": "" - }, - { - "name": "startIndex", - "nodeType": "YulTypedName", - "src": "15236:10:22", - "type": "" - }, - { - "name": "endIndex", - "nodeType": "YulTypedName", - "src": "15248:8:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "offsetOut", - "nodeType": "YulTypedName", - "src": "15261:9:22", - "type": "" - }, - { - "name": "lengthOut", - "nodeType": "YulTypedName", - "src": "15272:9:22", - "type": "" - } - ], - "src": "15156:331:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15540:77:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "15550:16:22", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "15561:1:22" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "15564:1:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15557:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15557:9:22" - }, - "variableNames": [ - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "15550:3:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15589:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "15591:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "15591:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15591:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "15581:1:22" - }, - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "15584:3:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "15578:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "15578:10:22" - }, - "nodeType": "YulIf", - "src": "15575:36:22" - } - ] - }, - "name": "checked_add_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "15523:1:22", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "15526:1:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "sum", - "nodeType": "YulTypedName", - "src": "15532:3:22", - "type": "" - } - ], - "src": "15492:125:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15813:201:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15830:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15841:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "15823:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15823:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15823:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "15853:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "15887:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "15895:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15907:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15918:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15903:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15903:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "15861:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "15861:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "15853:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15942:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15953:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15938:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15938:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "15958:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "15931:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15931:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15931:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15985:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15996:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15981:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15981:18:22" - }, - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "16001:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "15974:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15974:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15974:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr_slice_t_uint256_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "15758:9:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "15769:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "15777:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "15785:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "15793:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "15804:4:22", - "type": "" - } - ], - "src": "15622:392:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "16148:119:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "16158:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16170:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16181:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16166:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16166:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "16158:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16200:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "16211:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16193:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16193:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16193:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16238:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16249:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16234:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16234:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "16254:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16227:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16227:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16227:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "16109:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "16120:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "16128:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "16139:4:22", - "type": "" - } - ], - "src": "16019:248:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "16401:119:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "16411:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16423:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16434:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16419:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16419:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "16411:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16453:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "16464:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16446:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16446:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16446:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16491:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16502:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16487:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16487:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "16507:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16480:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16480:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16480:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "16362:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "16373:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "16381:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "16392:4:22", - "type": "" - } - ], - "src": "16272:248:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "16672:141:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16689:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "16700:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16682:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16682:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16682:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16727:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16738:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16723:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16723:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16743:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16716:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16716:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16716:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "16755:52:22", - "value": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "16780:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16792:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16803:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16788:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16788:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes", - "nodeType": "YulIdentifier", - "src": "16763:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "16763:44:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "16755:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "16633:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "16644:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "16652:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "16663:4:22", - "type": "" - } - ], - "src": "16525:288:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17009:250:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17026:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "17037:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17019:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17019:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17019:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17064:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17075:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17060:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17060:18:22" - }, - { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "17084:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17092:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "17080:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17080:55:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17053:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17053:83:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17053:83:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17156:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17167:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17152:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17152:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17172:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17145:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17145:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17145:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "17184:69:22", - "value": { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "17218:6:22" - }, - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "17226:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17238:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17249:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17234:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17234:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "17192:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "17192:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "17184:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_address_t_bytes_calldata_ptr_slice__to_t_bytes32_t_address_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "16954:9:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "16965:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "16973:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "16981:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "16989:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "17000:4:22", - "type": "" - } - ], - "src": "16818:441:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17393:115:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17410:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17421:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17403:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17403:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17403:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "17433:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "17467:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "17475:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17487:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17498:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17483:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17483:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "17441:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "17441:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "17433:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "17354:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "17365:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "17373:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "17384:4:22", - "type": "" - } - ], - "src": "17264:244:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17562:79:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "17572:17:22", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "17584:1:22" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "17587:1:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "17580:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17580:9:22" - }, - "variableNames": [ - { - "name": "diff", - "nodeType": "YulIdentifier", - "src": "17572:4:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17613:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "17615:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "17615:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17615:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "diff", - "nodeType": "YulIdentifier", - "src": "17604:4:22" - }, - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "17610:1:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "17601:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "17601:11:22" - }, - "nodeType": "YulIf", - "src": "17598:37:22" - } - ] - }, - "name": "checked_sub_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "17544:1:22", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "17547:1:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "diff", - "nodeType": "YulTypedName", - "src": "17553:4:22", - "type": "" - } - ], - "src": "17513:128:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17803:158:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17820:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17831:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17813:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17813:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17813:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "17843:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "17877:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "17885:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17897:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17908:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17893:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17893:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "17851:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "17851:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "17843:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17932:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17943:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17928:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17928:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "17948:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17921:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17921:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17921:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "17756:9:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "17767:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "17775:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "17783:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "17794:4:22", - "type": "" - } - ], - "src": "17646:315:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18121:169:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18138:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18149:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18131:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18131:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18131:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "18161:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "18195:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "18203:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18215:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18226:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18211:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18211:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "18169:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "18169:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "18161:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18250:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18261:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18246:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18246:18:22" - }, - { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "18270:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18278:4:22", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "18266:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18266:17:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18239:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18239:45:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18239:45:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "18074:9:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "18085:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "18093:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "18101:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "18112:4:22", - "type": "" - } - ], - "src": "17966:324:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18476:217:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "18486:27:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18498:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18509:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18494:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18494:19:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "18486:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18529:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "18540:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18522:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18522:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18522:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18567:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18578:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18563:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18563:18:22" - }, - { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "18587:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18595:4:22", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "18583:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18583:17:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18556:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18556:45:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18556:45:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18621:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18632:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18617:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18617:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "18637:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18610:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18610:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18610:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18664:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18675:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18660:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18660:18:22" - }, - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "18680:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18653:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18653:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18653:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "18421:9:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "18432:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "18440:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "18448:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "18456:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "18467:4:22", - "type": "" - } - ], - "src": "18295:398:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18918:160:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "18935:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18940:66:22", - "type": "", - "value": "0x19457468657265756d205369676e6564204d6573736167653a0a333200000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18928:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18928:79:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18928:79:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "19027:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19032:2:22", - "type": "", - "value": "28" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19023:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19023:12:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "19037:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19016:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19016:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19016:28:22" - }, - { - "nodeType": "YulAssignment", - "src": "19053:19:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "19064:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19069:2:22", - "type": "", - "value": "60" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19060:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19060:12:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "19053:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "18894:3:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "18899:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "18910:3:22", - "type": "" - } - ], - "src": "18698:380:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19262:217:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19279:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19290:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19272:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19272:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19272:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "19302:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "19336:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "19344:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19356:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19367:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19352:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19352:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "19310:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "19310:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "19302:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19391:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19402:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19387:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19387:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "19407:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19380:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19380:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19380:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19434:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19445:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19430:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19430:18:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "19464:6:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "19457:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19457:14:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "19450:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19450:22:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19423:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19423:50:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19423:50:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr_t_uint256_t_bool__to_t_bytes_memory_ptr_t_uint256_t_bool__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "19207:9:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "19218:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "19226:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "19234:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "19242:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "19253:4:22", - "type": "" - } - ], - "src": "19083:396:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19647:158:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19664:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "19675:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19657:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19657:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19657:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19702:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19713:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19698:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19698:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19718:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19691:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19691:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19691:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "19730:69:22", - "value": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "19764:6:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "19772:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19784:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19795:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19780:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19780:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "19738:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "19738:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "19730:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr_slice__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "19600:9:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "19611:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "19619:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "19627:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "19638:4:22", - "type": "" - } - ], - "src": "19484:321:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19890:169:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "19936:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19945:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19948:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "19938:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19938:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19938:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "19911:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19920:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "19907:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19907:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19932:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "19903:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19903:32:22" - }, - "nodeType": "YulIf", - "src": "19900:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "19961:29:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19980:9:22" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "19974:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "19974:16:22" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "19965:5:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "20023:5:22" - } - ], - "functionName": { - "name": "validator_revert_bytes4", - "nodeType": "YulIdentifier", - "src": "19999:23:22" - }, - "nodeType": "YulFunctionCall", - "src": "19999:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19999:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "20038:15:22", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "20048:5:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "20038:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes4_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "19856:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "19867:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "19879:6:22", - "type": "" - } - ], - "src": "19810:249:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "20340:235:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20357:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20362:66:22", - "type": "", - "value": "0x53657175656e6365206e657374656420636f6e6669673a0a0000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20350:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20350:79:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20350:79:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20449:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20454:2:22", - "type": "", - "value": "24" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20445:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20445:12:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "20459:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20438:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20438:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20438:28:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20486:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20491:2:22", - "type": "", - "value": "56" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20482:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20482:12:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "20496:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20475:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20475:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20475:28:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20523:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20528:2:22", - "type": "", - "value": "88" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20519:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20519:12:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "20533:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20512:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20512:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20512:28:22" - }, - { - "nodeType": "YulAssignment", - "src": "20549:20:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20560:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20565:3:22", - "type": "", - "value": "120" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20556:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20556:13:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "20549:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7_t_bytes32_t_uint256_t_uint256__to_t_string_memory_ptr_t_bytes32_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "20300:3:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "20305:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "20313:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "20321:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "20332:3:22", - "type": "" - } - ], - "src": "20064:511:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "20800:160:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20817:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20822:66:22", - "type": "", - "value": "0x53657175656e636520737461746963206469676573743a0a0000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20810:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20810:79:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20810:79:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20909:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20914:2:22", - "type": "", - "value": "24" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20905:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20905:12:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "20919:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20898:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20898:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20898:28:22" - }, - { - "nodeType": "YulAssignment", - "src": "20935:19:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20946:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20951:2:22", - "type": "", - "value": "56" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20942:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20942:12:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "20935:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "20776:3:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "20781:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "20792:3:22", - "type": "" - } - ], - "src": "20580:380:22" - } - ] - }, - "contents": "{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value1 := value1_1\n value2 := value2_1\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n }\n function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_array_struct_Transaction_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_struct_Transaction_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_struct_Transaction_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n value2 := calldataload(add(headStart, 32))\n let offset_1 := calldataload(add(headStart, 64))\n if gt(offset_1, _1) { revert(0, 0) }\n let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n value3 := value3_1\n value4 := value4_1\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__to_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value0 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n calldatacopy(pos, value0, value1)\n let _1 := add(pos, value1)\n mstore(_1, 0)\n end := _1\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_decode_bool(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_array_struct_Transaction_calldata_dyn_calldata(value, length, pos) -> end\n {\n mstore(pos, length)\n let _1 := 0x20\n let updated_pos := add(pos, _1)\n let pos_1 := updated_pos\n pos := updated_pos\n let tail := add(pos_1, shl(5, length))\n let srcPtr := value\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, pos_1))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41))) { revert(0, 0) }\n let value_1 := add(rel_offset_of_tail, value)\n let _2 := 0xc0\n mstore(tail, iszero(iszero(abi_decode_bool(value_1))))\n mstore(add(tail, _1), iszero(iszero(abi_decode_bool(add(value_1, _1)))))\n let _3 := 0x40\n mstore(add(tail, _3), calldataload(add(value_1, _3)))\n let _4 := 0x60\n mstore(add(tail, _4), and(abi_decode_address(add(value_1, _4)), 0xffffffffffffffffffffffffffffffffffffffff))\n let _5 := 0x80\n mstore(add(tail, _5), calldataload(add(value_1, _5)))\n let _6 := 0xa0\n let rel_offset_of_tail_1 := calldataload(add(value_1, _6))\n if iszero(slt(rel_offset_of_tail_1, add(sub(calldatasize(), value_1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let value_2 := add(rel_offset_of_tail_1, value_1)\n let length_1 := calldataload(value_2)\n let value_3 := add(value_2, _1)\n if gt(length_1, 0xffffffffffffffff) { revert(0, 0) }\n if sgt(value_3, sub(calldatasize(), length_1)) { revert(0, 0) }\n mstore(add(tail, _6), _2)\n tail := abi_encode_bytes_calldata(value_3, length_1, add(tail, _2))\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n end := tail\n }\n function abi_encode_tuple_t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n mstore(add(headStart, 64), 5)\n mstore(add(headStart, 96), \"self:\")\n mstore(add(headStart, 0x20), 128)\n tail := abi_encode_array_struct_Transaction_calldata_dyn_calldata(value0, value1, add(headStart, 128))\n }\n function abi_encode_tuple_t_stringliteral_4dfa0bed92fb5c2df0b47ce555e6e6b89f746e856aa9783c634a4987edcbf682_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n mstore(add(headStart, 64), 6)\n mstore(add(headStart, 96), \"guest:\")\n mstore(add(headStart, 0x20), 128)\n tail := abi_encode_array_struct_Transaction_calldata_dyn_calldata(value0, value1, add(headStart, 128))\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_bytes1__to_t_bytes1__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff00000000000000000000000000000000000000000000000000000000000000))\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_uint256_t_address_t_bytes32__to_t_string_memory_ptr_t_uint256_t_address_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n {\n mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), and(shl(96, value1), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 54), value2)\n end := add(pos, 86)\n }\n function access_calldata_tail_t_struct$_Transaction_$1292_calldata_ptr(base_ref, ptr_to_tail) -> addr\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41))) { revert(0, 0) }\n addr := add(base_ref, rel_offset_of_tail)\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_bool(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n {\n if gt(startIndex, endIndex) { revert(0, 0) }\n if gt(endIndex, length) { revert(0, 0) }\n offsetOut := add(offset, startIndex)\n lengthOut := sub(endIndex, startIndex)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_bytes_calldata_ptr_slice_t_uint256_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, 96)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 96))\n mstore(add(headStart, 32), value2)\n mstore(add(headStart, 64), value3)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_bytes32_t_address_t_bytes_calldata_ptr_slice__to_t_bytes32_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 64), 96)\n tail := abi_encode_bytes_calldata(value2, value3, add(headStart, 96))\n }\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 32))\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_bytes_calldata_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 64))\n mstore(add(headStart, 32), value2)\n }\n function abi_encode_tuple_t_bytes_calldata_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 64))\n mstore(add(headStart, 32), and(value2, 0xff))\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n mstore(pos, 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000)\n mstore(add(pos, 28), value0)\n end := add(pos, 60)\n }\n function abi_encode_tuple_t_bytes_calldata_ptr_t_uint256_t_bool__to_t_bytes_memory_ptr_t_uint256_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, 96)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 96))\n mstore(add(headStart, 32), value2)\n mstore(add(headStart, 64), iszero(iszero(value3)))\n }\n function abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr_slice__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes_calldata(value1, value2, add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_packed_t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7_t_bytes32_t_uint256_t_uint256__to_t_string_memory_ptr_t_bytes32_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n {\n mstore(pos, 0x53657175656e6365206e657374656420636f6e6669673a0a0000000000000000)\n mstore(add(pos, 24), value0)\n mstore(add(pos, 56), value1)\n mstore(add(pos, 88), value2)\n end := add(pos, 120)\n }\n function abi_encode_tuple_packed_t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n mstore(pos, 0x53657175656e636520737461746963206469676573743a0a0000000000000000)\n mstore(add(pos, 24), value0)\n end := add(pos, 56)\n }\n}", - "id": 22, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "6080604052600436106100bc5760003560e01c806361c2926c116100745780638c3f55631161004e5780638c3f55631461025357806390042baf14610273578063affed0e0146102ab57600080fd5b806361c2926c146101cb5780637a9a1628146101eb578063853c50681461020b57600080fd5b806320c13b0b116100a557806320c13b0b14610147578063295614261461016757806357c56d6b1461018957600080fd5b806301ffc9a7146100c15780631626ba7e146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004611880565b6102c0565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b506101166101113660046118e6565b6102d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ed565b34801561015357600080fd5b50610116610162366004611932565b61031e565b34801561017357600080fd5b5061018761018236600461199e565b610383565b005b34801561019557600080fd5b506101bd7f8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d181565b6040519081526020016100ed565b3480156101d757600080fd5b506101876101e63660046119fc565b6103d5565b3480156101f757600080fd5b50610187610206366004611a3e565b61041a565b34801561021757600080fd5b5061022b6102263660046118e6565b610447565b604080519586526020860194909452928401919091526060830152608082015260a0016100ed565b34801561025f57600080fd5b506101bd61026e36600461199e565b61060f565b610286610281366004611ae7565b61063b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b3480156102b757600080fd5b506101bd610725565b60006102cb82610736565b92915050565b6000806102df858585610792565b509050801561031157507f1626ba7e000000000000000000000000000000000000000000000000000000009050610317565b50600090505b9392505050565b6000806103438686604051610334929190611bb6565b60405180910390208585610792565b509050801561037557507f20c13b0b00000000000000000000000000000000000000000000000000000000905061037b565b50600090505b949350505050565b3330146103c9576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044015b60405180910390fd5b6103d2816107ca565b50565b600061040883836040516020016103ed929190611d97565b604051602081830303815290604052805190602001206107fc565b9050610415818484610881565b505050565b600061043286866040516020016103ed929190611ddf565b905061043f818787610881565b505050505050565b6000806000806000808787600081811061046357610463611e27565b909101357fff000000000000000000000000000000000000000000000000000000000000001691508190506104b95761049b896107fc565b92506104a8838989610a0e565b929850909650945091506106049050565b7fff00000000000000000000000000000000000000000000000000000000000000818116016104f8576104eb896107fc565b92506104a8838989610a5f565b7ffe000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082160161054a576104eb89610a8b565b7ffd000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216016105ae5761059e898989610af8565b9550955095509550955050610604565b6040517f6085cd820000000000000000000000000000000000000000000000000000000081527fff00000000000000000000000000000000000000000000000000000000000000821660048201526024016103c0565b939792965093509350565b60006102cb7f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83610c75565b600033301461067e576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044016103c0565b81516020830134f0905073ffffffffffffffffffffffffffffffffffffffff81166106d757816040517f0d2571910000000000000000000000000000000000000000000000000000000081526004016103c09190611eba565b60405173ffffffffffffffffffffffffffffffffffffffff821681527fa506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c9060200160405180910390a1919050565b6000610731600061060f565b905090565b60007f6ffbd451000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083160161078957506001919050565b6102cb82610cd3565b60008060008060006107a5888888610447565b509650919450925090508282108015906107bd575060015b9450505050935093915050565b6040517fa038794000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f190100000000000000000000000000000000000000000000000000000000000060208201524660228201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166042820152605681018290526000906076015b604051602081830303815290604052805190602001209050919050565b8060005b81811015610a0757368484838181106108a0576108a0611e27565b90506020028101906108b29190611ecd565b90506108c16020820182611f0b565b156108fb576040517f230d1ccc000000000000000000000000000000000000000000000000000000008152600481018390526024016103c0565b6040810135805a101561094e5782815a6040517f2bb3e3ba0000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915260448201526064016103c0565b60006109886109636080850160608601611f26565b608085013584156109745784610976565b5a5b61098360a0880188611f41565b610d2f565b905080156109cf57877f5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7856040516109c291815260200190565b60405180910390a26109f1565b6109f16109e26040850160208601611f0b565b89866109ec610d4c565b610d6b565b50505080806109ff90611fd5565b915050610885565b5050505050565b6000808080610a2987610a24876006818b61200d565b610db9565b6000908152873560f01c6020818152604080842084526002909a013560e01c908190529890912090999198509695509350505050565b6000808080610a7a87610a75876001818b61200d565b610a0e565b935093509350935093509350935093565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201526000602282018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660428301526056820183905290607601610864565b6000808080806004600188013560e81c82610b138383612037565b9050610b258b61022683868d8f61200d565b939b5091995097509550935087871015610b7d57610b4581848b8d61200d565b89896040517fb006aba00000000000000000000000000000000000000000000000000000000081526004016103c0949392919061204a565b8092505b88831015610c675760038301928a013560e81c9150610ba08383612037565b90506000610bc2610bb08861124f565b8c8c879086926102269392919061200d565b939c50919a5098509091505088881015610c1a57610be282858c8e61200d565b8a8a6040517fb006aba00000000000000000000000000000000000000000000000000000000081526004016103c0949392919061204a565b848110610c5d576040517f37daf62b00000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016103c0565b9350915081610b81565b505050939792965093509350565b6000808383604051602001610c94929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012054949350505050565b60007fe4a77bbc000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601610d2657506001919050565b6102cb82611283565b6000604051828482376000808483898b8af1979650505050505050565b60603d604051915060208201818101604052818352816000823e505090565b8315610d7957805160208201fd5b827fab46c69f7f32e1bf09b0725853da82a211e5402a0600296ab499a2fb5ea3b4198383604051610dab929190612071565b60405180910390a250505050565b60008060005b8381101561124657600181019085013560f81c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101610e6057601582019186013560f881901c9060581c73ffffffffffffffffffffffffffffffffffffffff81169074ff000000000000000000000000000000000000000016811785610e465780610e55565b60008681526020829052604090205b955050505050610dbf565b80610ef65760018201918681013560f81c906043016000610e8c8a610e8784888c8e61200d565b61136d565b60ff841697909701969194508491905060a083901b74ff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff82161786610edb5780610eea565b60008781526020829052604090205b96505050505050610dbf565b6002810361101e576000808784013560f881901c9060581c73ffffffffffffffffffffffffffffffffffffffff16601586019550909250905060008885013560e81c600386018162ffffff169150809650819250505060008186019050610f6f8b848c8c8a908692610f6a9392919061200d565b611630565b610fb7578a83610f8183898d8f61200d565b6040517f9a9462320000000000000000000000000000000000000000000000000000000081526004016103c0949392919061208a565b60ff8416979097019694508460a084901b74ff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617876110025780611011565b60008881526020829052604090205b9750505050505050610dbf565b60038103611051576020820191860135836110395780611048565b60008481526020829052604090205b93505050610dbf565b6004810361109d576003808301928781013560e81c919082010160008061107e8b610a2485898d8f61200d565b60009889526020526040909720969097019650909350610dbf92505050565b600681036111a55760008287013560f81c60018401935060ff16905060008784013560f01c60028501945061ffff16905060008885013560e81c600386018162ffffff16915080965081925050506000818601905060008061110b8d8d8d8b908792610a249392919061200d565b9398508893909250905084821061112157988501985b604080517f53657175656e6365206e657374656420636f6e6669673a0a0000000000000000602080830191909152603882018490526058820188905260788083018a90528351808403909101815260989092019092528051910120896111875780611196565b60008a81526020829052604090205b99505050505050505050610dbf565b600581036112115760208201918601358781036111e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94505b60006111eb82611817565b9050846111f85780611207565b60008581526020829052604090205b9450505050610dbf565b6040517fb2505f7c000000000000000000000000000000000000000000000000000000008152600481018290526024016103c0565b50935093915050565b7f8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d160009081526020829052604081206102cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fac6a444e00000000000000000000000000000000000000000000000000000000148061131657507fffffffff0000000000000000000000000000000000000000000000000000000082167f36e7817500000000000000000000000000000000000000000000000000000000145b1561132357506001919050565b7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102cb565b6000604282146113ad5782826040517f2ee17a3d0000000000000000000000000000000000000000000000000000000081526004016103c09291906120ca565b60006113c66113bd6001856120de565b85013560f81c90565b60ff169050604084013560f81c843560208601357f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081111561143a578686826040517fad4aac760000000000000000000000000000000000000000000000000000000081526004016103c0939291906120f1565b8260ff16601b1415801561145257508260ff16601c14155b1561148f578686846040517fe578897e0000000000000000000000000000000000000000000000000000000081526004016103c093929190612115565b600184036114fc576040805160008152602081018083528a905260ff851691810191909152606081018390526080810182905260019060a0015b6020604051602081039080840390855afa1580156114eb573d6000803e3d6000fd5b5050506020604051035194506115d4565b60028403611599576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101899052600190605c01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff861690820152606081018490526080810183905260a0016114c9565b86868560016040517f9dfba8520000000000000000000000000000000000000000000000000000000081526004016103c0949392919061213c565b73ffffffffffffffffffffffffffffffffffffffff85166116255786866040517f6c1719d20000000000000000000000000000000000000000000000000000000081526004016103c09291906120ca565b505050509392505050565b600081810361166b576040517fac241e1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838361167a6001826120de565b81811061168957611689611e27565b919091013560f81c91505060018114806116a35750600281145b156116e8578473ffffffffffffffffffffffffffffffffffffffff166116ca87868661136d565b73ffffffffffffffffffffffffffffffffffffffff1614915061180e565b600381036117d35773ffffffffffffffffffffffffffffffffffffffff8516631626ba7e878660008761171c6001826120de565b926117299392919061200d565b6040518463ffffffff1660e01b815260040161174793929190612168565b602060405180830381865afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611788919061218b565b7fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014915061180e565b83838260006040517f9dfba8520000000000000000000000000000000000000000000000000000000081526004016103c0949392919061213c565b50949350505050565b6040517f53657175656e636520737461746963206469676573743a0a0000000000000000602082015260388101829052600090605801610864565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146103d257600080fd5b60006020828403121561189257600080fd5b813561031781611852565b60008083601f8401126118af57600080fd5b50813567ffffffffffffffff8111156118c757600080fd5b6020830191508360208285010111156118df57600080fd5b9250929050565b6000806000604084860312156118fb57600080fd5b83359250602084013567ffffffffffffffff81111561191957600080fd5b6119258682870161189d565b9497909650939450505050565b6000806000806040858703121561194857600080fd5b843567ffffffffffffffff8082111561196057600080fd5b61196c8883890161189d565b9096509450602087013591508082111561198557600080fd5b506119928782880161189d565b95989497509550505050565b6000602082840312156119b057600080fd5b5035919050565b60008083601f8401126119c957600080fd5b50813567ffffffffffffffff8111156119e157600080fd5b6020830191508360208260051b85010111156118df57600080fd5b60008060208385031215611a0f57600080fd5b823567ffffffffffffffff811115611a2657600080fd5b611a32858286016119b7565b90969095509350505050565b600080600080600060608688031215611a5657600080fd5b853567ffffffffffffffff80821115611a6e57600080fd5b611a7a89838a016119b7565b9097509550602088013594506040880135915080821115611a9a57600080fd5b50611aa78882890161189d565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611af957600080fd5b813567ffffffffffffffff80821115611b1157600080fd5b818401915084601f830112611b2557600080fd5b813581811115611b3757611b37611ab8565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611b7d57611b7d611ab8565b81604052828152876020848701011115611b9657600080fd5b826020860160208301376000928101602001929092525095945050505050565b8183823760009101908152919050565b80358015158114611bd657600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bd657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260006020808501808196508560051b810191508460005b87811015611d8a57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41883603018112611ca157600080fd5b870160c0611cae82611bc6565b15158652611cbd878301611bc6565b15158688015260408281013590870152606073ffffffffffffffffffffffffffffffffffffffff611cef828501611bdb565b16908701526080828101359087015260a080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112611d3557600080fd5b90920187810192903567ffffffffffffffff811115611d5357600080fd5b803603841315611d6257600080fd5b8282890152611d748389018286611bff565b9c89019c97505050928601925050600101611c62565b5091979650505050505050565b60408152600560408201527f73656c663a000000000000000000000000000000000000000000000000000000606082015260806020820152600061037b608083018486611c48565b60408152600660408201527f67756573743a0000000000000000000000000000000000000000000000000000606082015260806020820152600061037b608083018486611c48565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815180845260005b81811015611e7c57602081850181015186830182015201611e60565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006103176020830184611e56565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112611f0157600080fd5b9190910192915050565b600060208284031215611f1d57600080fd5b61031782611bc6565b600060208284031215611f3857600080fd5b61031782611bdb565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f7657600080fd5b83018035915067ffffffffffffffff821115611f9157600080fd5b6020019150368190038213156118df57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200657612006611fa6565b5060010190565b6000808585111561201d57600080fd5b8386111561202a57600080fd5b5050820193919092039150565b808201808211156102cb576102cb611fa6565b60608152600061205e606083018688611bff565b6020830194909452506040015292915050565b82815260406020820152600061037b6040830184611e56565b84815273ffffffffffffffffffffffffffffffffffffffff841660208201526060604082015260006120c0606083018486611bff565b9695505050505050565b60208152600061037b602083018486611bff565b818103818111156102cb576102cb611fa6565b604081526000612105604083018587611bff565b9050826020830152949350505050565b604081526000612129604083018587611bff565b905060ff83166020830152949350505050565b606081526000612150606083018688611bff565b60208301949094525090151560409091015292915050565b838152604060208201526000612182604083018486611bff565b95945050505050565b60006020828403121561219d57600080fd5b81516103178161185256fea26469706673582212209bb95d18e97f278aa47e0c04c20d5a6af9bdb6d473c6d4051192cd96fc17866864736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x61C2926C GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x8C3F5563 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C3F5563 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x90042BAF EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xAFFED0E0 EQ PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x61C2926C EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x7A9A1628 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0x853C5068 EQ PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x20C13B0B GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x20C13B0B EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x29561426 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x57C56D6B EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x1880 JUMP JUMPDEST PUSH2 0x2C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x18E6 JUMP JUMPDEST PUSH2 0x2D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x162 CALLDATASIZE PUSH1 0x4 PUSH2 0x1932 JUMP JUMPDEST PUSH2 0x31E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x199E JUMP JUMPDEST PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH32 0x8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x3D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A3E JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x18E6 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x199E JUMP JUMPDEST PUSH2 0x60F JUMP JUMPDEST PUSH2 0x286 PUSH2 0x281 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AE7 JUMP JUMPDEST PUSH2 0x63B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH2 0x725 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CB DUP3 PUSH2 0x736 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DF DUP6 DUP6 DUP6 PUSH2 0x792 JUMP JUMPDEST POP SWAP1 POP DUP1 ISZERO PUSH2 0x311 JUMPI POP PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP1 POP PUSH2 0x317 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x343 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x334 SWAP3 SWAP2 SWAP1 PUSH2 0x1BB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP6 DUP6 PUSH2 0x792 JUMP JUMPDEST POP SWAP1 POP DUP1 ISZERO PUSH2 0x375 JUMPI POP PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 SWAP1 POP PUSH2 0x37B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x3C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3D2 DUP2 PUSH2 0x7CA JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ED SWAP3 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x7FC JUMP JUMPDEST SWAP1 POP PUSH2 0x415 DUP2 DUP5 DUP5 PUSH2 0x881 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x432 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ED SWAP3 SWAP2 SWAP1 PUSH2 0x1DDF JUMP JUMPDEST SWAP1 POP PUSH2 0x43F DUP2 DUP8 DUP8 PUSH2 0x881 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x463 JUMPI PUSH2 0x463 PUSH2 0x1E27 JUMP JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP2 POP DUP2 SWAP1 POP PUSH2 0x4B9 JUMPI PUSH2 0x49B DUP10 PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP PUSH2 0x4A8 DUP4 DUP10 DUP10 PUSH2 0xA0E JUMP JUMPDEST SWAP3 SWAP9 POP SWAP1 SWAP7 POP SWAP5 POP SWAP2 POP PUSH2 0x604 SWAP1 POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 DUP2 AND ADD PUSH2 0x4F8 JUMPI PUSH2 0x4EB DUP10 PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP PUSH2 0x4A8 DUP4 DUP10 DUP10 PUSH2 0xA5F JUMP JUMPDEST PUSH32 0xFE00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND ADD PUSH2 0x54A JUMPI PUSH2 0x4EB DUP10 PUSH2 0xA8B JUMP JUMPDEST PUSH32 0xFD00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND ADD PUSH2 0x5AE JUMPI PUSH2 0x59E DUP10 DUP10 DUP10 PUSH2 0xAF8 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x604 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6085CD8200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CB PUSH32 0x8D0BF1FD623D628C741362C1289948E57B3E2905218C676D3E69ABEE36D6AE2E DUP4 PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x67E JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x3C0 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD CALLVALUE CREATE SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6D7 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xD25719100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x1EBA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0xA506AD4E7F05ECEBA62A023C3219E5BD98A615F4FA87E2AFB08A2DA5CF62BF0C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x731 PUSH1 0x0 PUSH2 0x60F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6FFBD45100000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0x789 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CB DUP3 PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x7A5 DUP9 DUP9 DUP9 PUSH2 0x447 JUMP JUMPDEST POP SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP3 DUP3 LT DUP1 ISZERO SWAP1 PUSH2 0x7BD JUMPI POP PUSH1 0x1 JUMPDEST SWAP5 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA038794000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE CHAINID PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x56 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x76 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA07 JUMPI CALLDATASIZE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x8A0 JUMPI PUSH2 0x8A0 PUSH2 0x1E27 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x8B2 SWAP2 SWAP1 PUSH2 0x1ECD JUMP JUMPDEST SWAP1 POP PUSH2 0x8C1 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x1F0B JUMP JUMPDEST ISZERO PUSH2 0x8FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x230D1CCC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP1 GAS LT ISZERO PUSH2 0x94E JUMPI DUP3 DUP2 GAS PUSH1 0x40 MLOAD PUSH32 0x2BB3E3BA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x988 PUSH2 0x963 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x1F26 JUMP JUMPDEST PUSH1 0x80 DUP6 ADD CALLDATALOAD DUP5 ISZERO PUSH2 0x974 JUMPI DUP5 PUSH2 0x976 JUMP JUMPDEST GAS JUMPDEST PUSH2 0x983 PUSH1 0xA0 DUP9 ADD DUP9 PUSH2 0x1F41 JUMP JUMPDEST PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9CF JUMPI DUP8 PUSH32 0x5C4EEB02DABF8976016AB414D617F9A162936DCACE3CDEF8C69EF6E262AD5AE7 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9C2 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x9F1 PUSH2 0x9E2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1F0B JUMP JUMPDEST DUP10 DUP7 PUSH2 0x9EC PUSH2 0xD4C JUMP JUMPDEST PUSH2 0xD6B JUMP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x9FF SWAP1 PUSH2 0x1FD5 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x885 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xA29 DUP8 PUSH2 0xA24 DUP8 PUSH1 0x6 DUP2 DUP12 PUSH2 0x200D JUMP JUMPDEST PUSH2 0xDB9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE DUP8 CALLDATALOAD PUSH1 0xF0 SHR PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP5 MSTORE PUSH1 0x2 SWAP1 SWAP11 ADD CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 SWAP1 MSTORE SWAP9 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP10 SWAP2 SWAP9 POP SWAP7 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xA7A DUP8 PUSH2 0xA75 DUP8 PUSH1 0x1 DUP2 DUP12 PUSH2 0x200D JUMP JUMPDEST PUSH2 0xA0E JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x22 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x42 DUP4 ADD MSTORE PUSH1 0x56 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH1 0x76 ADD PUSH2 0x864 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH1 0x4 PUSH1 0x1 DUP9 ADD CALLDATALOAD PUSH1 0xE8 SHR DUP3 PUSH2 0xB13 DUP4 DUP4 PUSH2 0x2037 JUMP JUMPDEST SWAP1 POP PUSH2 0xB25 DUP12 PUSH2 0x226 DUP4 DUP7 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP12 POP SWAP2 SWAP10 POP SWAP8 POP SWAP6 POP SWAP4 POP DUP8 DUP8 LT ISZERO PUSH2 0xB7D JUMPI PUSH2 0xB45 DUP2 DUP5 DUP12 DUP14 PUSH2 0x200D JUMP JUMPDEST DUP10 DUP10 PUSH1 0x40 MLOAD PUSH32 0xB006ABA000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x204A JUMP JUMPDEST DUP1 SWAP3 POP JUMPDEST DUP9 DUP4 LT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x3 DUP4 ADD SWAP3 DUP11 ADD CALLDATALOAD PUSH1 0xE8 SHR SWAP2 POP PUSH2 0xBA0 DUP4 DUP4 PUSH2 0x2037 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBC2 PUSH2 0xBB0 DUP9 PUSH2 0x124F JUMP JUMPDEST DUP13 DUP13 DUP8 SWAP1 DUP7 SWAP3 PUSH2 0x226 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP13 POP SWAP2 SWAP11 POP SWAP9 POP SWAP1 SWAP2 POP POP DUP9 DUP9 LT ISZERO PUSH2 0xC1A JUMPI PUSH2 0xBE2 DUP3 DUP6 DUP13 DUP15 PUSH2 0x200D JUMP JUMPDEST DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB006ABA000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x204A JUMP JUMPDEST DUP5 DUP2 LT PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x37DAF62B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x3C0 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0xB81 JUMP JUMPDEST POP POP POP SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC94 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xE4A77BBC00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0xD26 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CB DUP3 PUSH2 0x1283 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 DUP5 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 DUP5 DUP4 DUP10 DUP12 DUP11 CALL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 RETURNDATASIZE PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 DUP4 MSTORE DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY POP POP SWAP1 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xD79 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST DUP3 PUSH32 0xAB46C69F7F32E1BF09B0725853DA82A211E5402A0600296AB499A2FB5EA3B419 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xDAB SWAP3 SWAP2 SWAP1 PUSH2 0x2071 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1246 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 DUP6 ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD PUSH2 0xE60 JUMPI PUSH1 0x15 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD PUSH1 0xF8 DUP2 SWAP1 SHR SWAP1 PUSH1 0x58 SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 AND DUP2 OR DUP6 PUSH2 0xE46 JUMPI DUP1 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP6 POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST DUP1 PUSH2 0xEF6 JUMPI PUSH1 0x1 DUP3 ADD SWAP2 DUP7 DUP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP1 PUSH1 0x43 ADD PUSH1 0x0 PUSH2 0xE8C DUP11 PUSH2 0xE87 DUP5 DUP9 DUP13 DUP15 PUSH2 0x200D JUMP JUMPDEST PUSH2 0x136D JUMP JUMPDEST PUSH1 0xFF DUP5 AND SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP2 SWAP5 POP DUP5 SWAP2 SWAP1 POP PUSH1 0xA0 DUP4 SWAP1 SHL PUSH21 0xFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND OR DUP7 PUSH2 0xEDB JUMPI DUP1 PUSH2 0xEEA JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP7 POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x101E JUMPI PUSH1 0x0 DUP1 DUP8 DUP5 ADD CALLDATALOAD PUSH1 0xF8 DUP2 SWAP1 SHR SWAP1 PUSH1 0x58 SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x15 DUP7 ADD SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP9 DUP6 ADD CALLDATALOAD PUSH1 0xE8 SHR PUSH1 0x3 DUP7 ADD DUP2 PUSH3 0xFFFFFF AND SWAP2 POP DUP1 SWAP7 POP DUP2 SWAP3 POP POP POP PUSH1 0x0 DUP2 DUP7 ADD SWAP1 POP PUSH2 0xF6F DUP12 DUP5 DUP13 DUP13 DUP11 SWAP1 DUP7 SWAP3 PUSH2 0xF6A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST PUSH2 0x1630 JUMP JUMPDEST PUSH2 0xFB7 JUMPI DUP11 DUP4 PUSH2 0xF81 DUP4 DUP10 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9A94623200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x208A JUMP JUMPDEST PUSH1 0xFF DUP5 AND SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP5 POP DUP5 PUSH1 0xA0 DUP5 SWAP1 SHL PUSH21 0xFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR DUP8 PUSH2 0x1002 JUMPI DUP1 PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP8 POP POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x1051 JUMPI PUSH1 0x20 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD DUP4 PUSH2 0x1039 JUMPI DUP1 PUSH2 0x1048 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP4 POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x109D JUMPI PUSH1 0x3 DUP1 DUP4 ADD SWAP3 DUP8 DUP2 ADD CALLDATALOAD PUSH1 0xE8 SHR SWAP2 SWAP1 DUP3 ADD ADD PUSH1 0x0 DUP1 PUSH2 0x107E DUP12 PUSH2 0xA24 DUP6 DUP10 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x0 SWAP9 DUP10 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 SWAP7 SWAP1 SWAP8 ADD SWAP7 POP SWAP1 SWAP4 POP PUSH2 0xDBF SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x11A5 JUMPI PUSH1 0x0 DUP3 DUP8 ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH1 0xFF AND SWAP1 POP PUSH1 0x0 DUP8 DUP5 ADD CALLDATALOAD PUSH1 0xF0 SHR PUSH1 0x2 DUP6 ADD SWAP5 POP PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 DUP9 DUP6 ADD CALLDATALOAD PUSH1 0xE8 SHR PUSH1 0x3 DUP7 ADD DUP2 PUSH3 0xFFFFFF AND SWAP2 POP DUP1 SWAP7 POP DUP2 SWAP3 POP POP POP PUSH1 0x0 DUP2 DUP7 ADD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x110B DUP14 DUP14 DUP14 DUP12 SWAP1 DUP8 SWAP3 PUSH2 0xA24 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP9 POP DUP9 SWAP4 SWAP1 SWAP3 POP SWAP1 POP DUP5 DUP3 LT PUSH2 0x1121 JUMPI SWAP9 DUP6 ADD SWAP9 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x53657175656E6365206E657374656420636F6E6669673A0A0000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x38 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x58 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x78 DUP1 DUP4 ADD DUP11 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x98 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 DUP10 PUSH2 0x1187 JUMPI DUP1 PUSH2 0x1196 JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x1211 JUMPI PUSH1 0x20 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD DUP8 DUP2 SUB PUSH2 0x11E0 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP3 PUSH2 0x1817 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x11F8 JUMPI DUP1 PUSH2 0x1207 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP5 POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB2505F7C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xAC6A444E00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1316 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x36E7817500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x1323 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x42 DUP3 EQ PUSH2 0x13AD JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x2EE17A3D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP3 SWAP2 SWAP1 PUSH2 0x20CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C6 PUSH2 0x13BD PUSH1 0x1 DUP6 PUSH2 0x20DE JUMP JUMPDEST DUP6 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0xF8 SHR DUP5 CALLDATALOAD PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP2 GT ISZERO PUSH2 0x143A JUMPI DUP7 DUP7 DUP3 PUSH1 0x40 MLOAD PUSH32 0xAD4AAC7600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20F1 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x1452 JUMPI POP DUP3 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x148F JUMPI DUP7 DUP7 DUP5 PUSH1 0x40 MLOAD PUSH32 0xE578897E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 DUP5 SUB PUSH2 0x14FC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 DUP4 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP6 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP5 POP PUSH2 0x15D4 JUMP JUMPDEST PUSH1 0x2 DUP5 SUB PUSH2 0x1599 JUMPI PUSH1 0x40 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3C DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0x5C ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP5 MSTORE SWAP1 DUP4 ADD DUP1 DUP4 MSTORE MSTORE PUSH1 0xFF DUP7 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 ADD PUSH2 0x14C9 JUMP JUMPDEST DUP7 DUP7 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH32 0x9DFBA85200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x1625 JUMPI DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x6C1719D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP3 SWAP2 SWAP1 PUSH2 0x20CA JUMP JUMPDEST POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB PUSH2 0x166B JUMPI PUSH1 0x40 MLOAD PUSH32 0xAC241E1100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 PUSH2 0x167A PUSH1 0x1 DUP3 PUSH2 0x20DE JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x1689 JUMPI PUSH2 0x1689 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP2 POP POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x16A3 JUMPI POP PUSH1 0x2 DUP2 EQ JUMPDEST ISZERO PUSH2 0x16E8 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16CA DUP8 DUP7 DUP7 PUSH2 0x136D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP2 POP PUSH2 0x180E JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x17D3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH4 0x1626BA7E DUP8 DUP7 PUSH1 0x0 DUP8 PUSH2 0x171C PUSH1 0x1 DUP3 PUSH2 0x20DE JUMP JUMPDEST SWAP3 PUSH2 0x1729 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1747 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1764 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1788 SWAP2 SWAP1 PUSH2 0x218B JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP2 POP PUSH2 0x180E JUMP JUMPDEST DUP4 DUP4 DUP3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x9DFBA85200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x53657175656E636520737461746963206469676573743A0A0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x38 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x58 ADD PUSH2 0x864 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x317 DUP2 PUSH2 0x1852 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x18AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1925 DUP7 DUP3 DUP8 ADD PUSH2 0x189D JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x196C DUP9 DUP4 DUP10 ADD PUSH2 0x189D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1992 DUP8 DUP3 DUP9 ADD PUSH2 0x189D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x19C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A32 DUP6 DUP3 DUP7 ADD PUSH2 0x19B7 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1A56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7A DUP10 DUP4 DUP11 ADD PUSH2 0x19B7 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA7 DUP9 DUP3 DUP10 ADD PUSH2 0x189D JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B37 JUMPI PUSH2 0x1B37 PUSH2 0x1AB8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1B7D JUMPI PUSH2 0x1B7D PUSH2 0x1AB8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP6 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP5 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1D8A JUMPI DUP3 DUP5 SUB DUP10 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP9 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1CA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 ADD PUSH1 0xC0 PUSH2 0x1CAE DUP3 PUSH2 0x1BC6 JUMP JUMPDEST ISZERO ISZERO DUP7 MSTORE PUSH2 0x1CBD DUP8 DUP4 ADD PUSH2 0x1BC6 JUMP JUMPDEST ISZERO ISZERO DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1CEF DUP3 DUP6 ADD PUSH2 0x1BDB JUMP JUMPDEST AND SWAP1 DUP8 ADD MSTORE PUSH1 0x80 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP8 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD CALLDATALOAD CALLDATASIZE DUP5 SWAP1 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 ADD DUP2 SLT PUSH2 0x1D35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 ADD DUP8 DUP2 ADD SWAP3 SWAP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP5 SGT ISZERO PUSH2 0x1D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP3 DUP10 ADD MSTORE PUSH2 0x1D74 DUP4 DUP10 ADD DUP3 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP13 DUP10 ADD SWAP13 SWAP8 POP POP POP SWAP3 DUP7 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1C62 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x5 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x73656C663A000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x6 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x67756573743A0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E7C JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1E60 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x317 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1E56 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1F01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x317 DUP3 PUSH2 0x1BC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x317 DUP3 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1F76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2006 JUMPI PUSH2 0x2006 PUSH2 0x1FA6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x201D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x202A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2CB JUMPI PUSH2 0x2CB PUSH2 0x1FA6 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x205E PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1E56 JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x20C0 PUSH1 0x60 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2CB JUMPI PUSH2 0x2CB PUSH2 0x1FA6 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2105 PUSH1 0x40 DUP4 ADD DUP6 DUP8 PUSH2 0x1BFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2129 PUSH1 0x40 DUP4 ADD DUP6 DUP8 PUSH2 0x1BFF JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2150 PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP SWAP1 ISZERO ISZERO PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2182 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x219D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x317 DUP2 PUSH2 0x1852 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 0xB9 0x5D XOR 0xE9 PUSH32 0x278AA47E0C04C20D5A6AF9BDB6D473C6D4051192CD96FC17866864736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "640:2693:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3127:204;;;;;;;;;;-1:-1:-1;3127:204:1;;;;;:::i;:::-;;:::i;:::-;;;611:14:22;;604:22;586:41;;574:2;559:18;3127:204:1;;;;;;;;5489:316:2;;;;;;;;;;-1:-1:-1;5489:316:2;;;;;:::i;:::-;;:::i;:::-;;;1646:66:22;1634:79;;;1616:98;;1604:2;1589:18;5489:316:2;1472:248:22;4525:332:2;;;;;;;;;;-1:-1:-1;4525:332:2;;;;;:::i;:::-;;:::i;6456:119::-;;;;;;;;;;-1:-1:-1;6456:119:2;;;;;:::i;:::-;;:::i;:::-;;811:95:14;;;;;;;;;;;;862:44;811:95;;;;;2778:25:22;;;2766:2;2751:18;811:95:14;2632:177:22;1290:262:1;;;;;;;;;;-1:-1:-1;1290:262:1;;;;;:::i;:::-;;:::i;890:292::-;;;;;;;;;;-1:-1:-1;890:292:1;;;;;:::i;:::-;;:::i;1675:1486:2:-;;;;;;;;;;-1:-1:-1;1675:1486:2;;;;;:::i;:::-;;:::i;:::-;;;;4827:25:22;;;4883:2;4868:18;;4861:34;;;;4911:18;;;4904:34;;;;4969:2;4954:18;;4947:34;5012:3;4997:19;;4990:35;4814:3;4799:19;1675:1486:2;4568:463:22;938:156:6;;;;;;;;;;-1:-1:-1;938:156:6;;;;;:::i;:::-;;:::i;456:276:4:-;;;;;;:::i;:::-;;:::i;:::-;;;6753:42:22;6741:55;;;6723:74;;6711:2;6696:18;456:276:4;6577:226:22;670:87:6;;;;;;;;;;;;;:::i;3127:204:1:-;3270:4;3289:37;3313:12;3289:23;:37::i;:::-;3282:44;3127:204;-1:-1:-1;;3127:204:1:o;5489:316:2:-;5608:6;5650:12;5667:40;5688:5;5695:11;;5667:20;:40::i;:::-;5649:58;;;5717:7;5713:65;;;-1:-1:-1;5741:30:2;;-1:-1:-1;5734:37:2;;5713:65;-1:-1:-1;5798:1:2;;-1:-1:-1;5489:316:2;;;;;;:::o;4525:332::-;4651:6;4693:12;4710:51;4741:5;;4731:16;;;;;;;:::i;:::-;;;;;;;;4749:11;;4710:20;:51::i;:::-;4692:69;;;4771:7;4767:63;;;-1:-1:-1;4795:28:2;;-1:-1:-1;4788:35:2;;4767:63;-1:-1:-1;4850:1:2;;-1:-1:-1;4525:332:2;;;;;;;:::o;6456:119::-;178:10:8;200:4;178:27;174:94;;222:39;;;;;235:10;222:39;;;7319:34:22;255:4:8;7369:18:22;;;7362:43;7231:18;;222:39:8;;;;;;;;174:94;6542:28:2::1;6559:10;6542:16;:28::i;:::-;6456:119:::0;:::o;1290:262:1:-;1401:14;1418:63;1474:4;;1454:25;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1444:36;;;;;;1418:25;:63::i;:::-;1401:80;;1520:27;1534:6;1542:4;;1520:13;:27::i;:::-;1364:188;1290:262;;:::o;890:292::-;1030:14;1047:64;1104:4;;1083:26;;;;;;;;;:::i;1047:64::-;1030:81;;1150:27;1164:6;1172:4;;1150:13;:27::i;:::-;993:189;890:292;;;;;:::o;1675:1486:2:-;1801:17;1824:14;1844:17;1867;1890:18;1919:20;1942:10;;1953:1;1942:13;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1942:13:2;;-1:-1:-1;1962:303:2;;2057:34;2083:7;2057:25;:34::i;:::-;2045:46;;2144;2168:9;2179:10;;2144:23;:46::i;:::-;2099:91;;-1:-1:-1;2099:91:2;;-1:-1:-1;2099:91:2;-1:-1:-1;2099:91:2;-1:-1:-1;2198:60:2;;-1:-1:-1;2198:60:2;1962:303;2275:29;;;;;2271:310;;2370:34;2396:7;2370:25;:34::i;:::-;2358:46;;2457:49;2484:9;2495:10;;2457:26;:49::i;2271:310::-;2591:33;;;;;2587:319;;2690:39;2721:7;2690:30;:39::i;2587:319::-;2916:29;;;;;2912:196;;3066:35;3081:7;3090:10;;3066:14;:35::i;:::-;3059:42;;;;;;;;;;;;;2912:196;3121:35;;;;;11707:66:22;11695:79;;3121:35:2;;;11677:98:22;11650:18;;3121:35:2;11533:248:22;1675:1486:2;;;;;;;;;;:::o;938:156:6:-;1002:7;1032:56;453:66;1080:6;1032:28;:56::i;456:276:4:-;550:12;178:10:8;200:4;178:27;174:94;;222:39;;;;;235:10;222:39;;;7319:34:22;255:4:8;7369:18:22;;;7362:43;7231:18;;222:39:8;7084:327:22;174:94:8;631:5:4::1;625:12;620:2;613:5;609:14;596:11;589:49;581:57:::0;-1:-1:-1;649:18:4::1;::::0;::::1;645:50;;689:5;676:19;;;;;;;;;;;:::i;645:50::-;706:21;::::0;6753:42:22;6741:55;;6723:74;;706:21:4::1;::::0;6711:2:22;6696:18;706:21:4::1;;;;;;;456:276:::0;;;:::o;670:87:6:-;718:7;740:12;750:1;740:9;:12::i;:::-;733:19;;670:87;:::o;942:233:4:-;1028:4;1044:48;;;;;1040:80;;-1:-1:-1;1109:4:4;;942:233;-1:-1:-1;942:233:4:o;1040:80::-;1133:37;1157:12;1133:23;:37::i;3480:386:2:-;3611:12;3629:17;3657;3676:14;3692:17;3760:38;3778:7;3787:10;;3760:17;:38::i;:::-;-1:-1:-1;3715:83:2;-1:-1:-1;3715:83:2;;-1:-1:-1;3715:83:2;-1:-1:-1;3715:83:2;-1:-1:-1;3814:19:2;;;;;;:47;;-1:-1:-1;2779:4:1;3837:24:2;3804:57;;3651:215;;;3480:386;;;;;;:::o;2824:93:1:-;2898:14;;;;;;;;;;;;;;1173:224:13;1279:107;;12792:66:22;1279:107:13;;;12780:79:22;1325:13:13;12875:11:22;;;12868:27;12946:66;1356:4:13;12933:2:22;12929:15;12925:88;12911:12;;;12904:110;13030:12;;;13023:28;;;1240:7:13;;13067:12:22;;1279:107:13;;;;;;;;;;;;;1262:130;;;;;;1255:137;;1173:224;;;:::o;1710:834:1:-;1847:4;1832:12;1864:676;1888:4;1884:1;:8;1864:676;;;1907:32;1942:4;;1947:1;1942:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1907:42;-1:-1:-1;1962:24:1;;;;1907:42;1962:24;:::i;:::-;1958:62;;;1995:25;;;;;;;;2778::22;;;2751:18;;1995:25:1;2632:177:22;1958:62:1;2048:20;;;;;2080:9;:20;2076:69;;;2122:1;2125:8;2135:9;2109:36;;;;;;;;13869:25:22;;;;13910:18;;;13903:34;;;;13953:18;;;13946:34;13842:18;;2109:36:1;13667:319:22;2076:69:1;2154:12;2169:148;2192:18;;;;;;;;:::i;:::-;2220:17;;;;2247:13;;:36;;2275:8;2247:36;;;2263:9;2247:36;2293:16;;;;:11;:16;:::i;:::-;2169:13;:148::i;:::-;2154:163;;2330:7;2326:208;;;2365:7;2354:22;2374:1;2354:22;;;;2778:25:22;;2766:2;2751:18;;2632:177;2354:22:1;;;;;;;;2326:208;;;2401:124;2425:25;;;;;;;;:::i;:::-;2462:7;2481:1;2494:21;:19;:21::i;:::-;2401:12;:124::i;:::-;1899:641;;;1894:3;;;;;:::i;:::-;;;;1864:676;;;;1799:745;1710:834;;;:::o;8892:642:13:-;8996:17;;;;9131:41;9145:10;9157:14;:10;9168:1;9157:10;;:14;:::i;:::-;9131:13;:41::i;:::-;622:9:20;656:13;;;1585:25:18;;1626:3;1622:14;683:2:20;676:14;;;715:2;702:16;;;656:13;;9379:1:13;2034:23:18;;;2021:37;2074:3;2070:14;676::20;;;;702:16;;;;1622:14:18;;9109:63:13;;-1:-1:-1;702:16:20;2070:14:18;-1:-1:-1;8892:642:13;-1:-1:-1;;;;8892:642:13:o;648:262:15:-;752:17;;;;854:51;878:10;890:14;:10;901:1;890:10;;:14;:::i;:::-;854:23;:51::i;:::-;847:58;;;;;;;;648:262;;;;;;;:::o;404:213:16:-;502:104;;12792:66:22;502:104:16;;;12780:79:22;463:7:16;12875:11:22;;;12868:27;;;12946:66;576:4:16;12933:2:22;12929:15;12925:88;12911:12;;;12904:110;13030:12;;;13023:28;;;463:7:16;13067:12:22;;502:104:16;12494:591:22;2320:2059:14;2428:17;;;;;3378:14:19;2563:1:14;3290:25:19;;3277:39;3336:3;3332:14;2428:17:14;2768:16;3378:14:19;3332;2768:16:14;:::i;:::-;2750:34;-1:-1:-1;2883:72:14;2908:7;2923:26;2750:34;2934:6;2923:10;;:26;:::i;2883:72::-;2791:164;;-1:-1:-1;2791:164:14;;-1:-1:-1;2791:164:14;-1:-1:-1;2791:164:14;-1:-1:-1;2791:164:14;-1:-1:-1;2966:18:14;;;2962:118;;;3027:26;3045:7;3038:6;3027:10;;:26;:::i;:::-;3055:9;3066:6;3001:72;;;;;;;;;;;;;;:::i;2962:118::-;3095:7;3086:16;;3283:1092;3290:26;;;3283:1092;;;3390:1:19;3378:14;;;3290:25;;3277:39;3336:3;3332:14;;-1:-1:-1;3444:16:14;3378:14:19;3332;3444:16:14;:::i;:::-;3434:26;;3469:22;3687:105;3714:34;3738:9;3714:23;:34::i;:::-;3758:10;;3769:6;3758:26;3776:7;3758:26;;;;;;;:::i;3687:105::-;3500:292;;-1:-1:-1;3500:292:14;;-1:-1:-1;3500:292:14;-1:-1:-1;3500:292:14;;-1:-1:-1;;3833:18:14;;;3829:122;;;3896:26;3914:7;3907:6;3896:10;;:26;:::i;:::-;3924:9;3935:6;3870:72;;;;;;;;;;;;;;:::i;3829:122::-;4216:10;4198:14;:28;4194:115;;4245:55;;;;;;;;16193:25:22;;;16234:18;;;16227:34;;;16166:18;;4245:55:14;16019:248:22;4194:115:14;4330:14;-1:-1:-1;4361:7:14;-1:-1:-1;4361:7:14;3283:1092;;;2540:1839;;;2320:2059;;;;;;;;;:::o;490:187:9:-;568:11;587;622:4;628:7;611:25;;;;;;;;16193::22;;;16249:2;16234:18;;16227:34;16181:2;16166:18;;16019:248;611:25:9;;;;;;;;;;;;;;601:36;;611:25;601:36;;;;661:10;;490:187;-1:-1:-1;;;;490:187:9:o;4140:231:3:-;4226:4;4242:46;;;;;4238:78;;-1:-1:-1;4305:4:3;;4140:231;-1:-1:-1;4140:231:3:o;4238:78::-;4329:37;4353:12;4329:23;:37::i;1525:353:20:-;1640:6;1688:4;1682:11;1732:12;1718;1713:3;1700:45;1859:1;1848;1826:12;1813:3;1799:4;1786:3;1772:4;1758:110;1753:115;1525:353;-1:-1:-1;;;;;;;1525:353:20:o;852:271::-;897:14;948:16;982:4;976:11;971:16;;1014:2;1011:1;1007:10;1048:4;1041:5;1037:16;1031:4;1024:30;1071:4;1068:1;1061:15;1108:4;1105:1;1098:5;1083:30;;;852:271;:::o;3644:286:3:-;3781:14;3777:149;;;3849:7;3843:14;3836:4;3827:7;3823:18;3816:42;3777:149;3894:7;3885:34;3903:6;3911:7;3885:34;;;;;;;:::i;:::-;;;;;;;;3644:286;;;;:::o;3525:4708:13:-;3635:14;3655:12;3696:14;3765:4458;3772:26;;;3765:4458;;;1475:1:19;1463:14;;;1390:25;;1377:39;1432:3;1428:14;3923:20:13;;;3919:402;;2205:2:19;2193:15;;;2046:25;;2033:39;2088:3;2084:14;;;;2118:2;2114:13;2129:42;2110:62;;;1873:23:13;;:49;;4231:4;:59;;4286:4;4231:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;4252:31:13;4224:66;;4302:8;;;;;;3919:402;4335:4;4331:679;;1475:1:19;1463:14;;;1390:25;;;1377:39;1432:3;1428:14;;4560:11:13;;4396:16;4598:72;4631:10;4643:26;4560:11;1463:14:19;4643:10:13;1390:25:19;4643:26:13;:::i;:::-;4598:32;:72::i;:::-;4764:20;;;;;;;;4691:7;;-1:-1:-1;4691:7:13;;4764:20;-1:-1:-1;1893:3:13;1873:23;;;;;1899;;;1873:49;4920:4;:59;;4975:4;4920:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;4941:31:13;4913:66;;4991:8;;;;;;;4331:679;625:1;5024:4;:30;5020:932;;5104:16;;2046:25:19;;;2033:39;2088:3;2084:14;;;;2118:2;2114:13;2129:42;2110:62;2205:2;2193:15;;5146:64:13;-1:-1:-1;5146:64:13;;-1:-1:-1;5146:64:13;-1:-1:-1;5256:12:13;3290:25:19;;;3277:39;3336:3;3332:14;3390:1;3378:14;;5280:46:13;;;;;;;;;;;;;5380:15;5407:4;5398:6;:13;5380:31;;5428:81;5464:10;5476:4;5482:10;;5493:6;5482:26;5500:7;5482:26;;;;;;;:::i;:::-;5428:35;:81::i;:::-;5423:190;;5555:10;5567:4;5573:26;5591:7;5584:6;5573:10;;:26;:::i;:::-;5532:68;;;;;;;;;;;;;;:::i;5423:190::-;5706:20;;;;;;;;;-1:-1:-1;5706:20:13;1893:3;1873:23;;;;;1899;;;1873:49;5862:4;:59;;5917:4;5862:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;5883:31:13;5855:66;;5933:8;;;;;;;;5020:932;667:1;5966:4;:17;5962:243;;4550:2:19;4536:17;;;4487:27;;4474:41;6115:4:13;:59;;6170:4;6115:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;6136:31:13;6108:66;;6186:8;;;;5962:243;711:1;6219:4;:19;6215:472;;3390:1:19;3378:14;;;;3290:25;;;3277:39;3336:3;3332:14;;6409:13:13;;;;6309:12;;6494:53;6508:10;6520:26;6409:13;3378:14:19;6520:10:13;3290:25:19;6520:26:13;:::i;6494:53::-;622:9:20;656:13;;;683:2;676:14;715:2;702:16;;;6560:17:13;;;;;-1:-1:-1;6649:7:13;;-1:-1:-1;6668:8:13;;-1:-1:-1;;;6668:8:13;6215:472;802:1;6701:4;:19;6697:979;;6864:22;1390:25:19;;;1377:39;1432:3;1428:14;1475:1;1463:14;;6898:55:13;-1:-1:-1;6898:55:13;;;-1:-1:-1;6966:25:13;2699::19;;;2686:39;2745:3;2741:14;2797:1;2785:14;;7003:59:13;-1:-1:-1;7003:59:13;;;-1:-1:-1;7075:12:13;3290:25:19;;;3277:39;3336:3;3332:14;3390:1;3378:14;;7099:46:13;;;;;;;;;;;;;7157:15;7184:4;7175:6;:13;7157:31;;7201:22;7225:20;7290:53;7304:10;7316;;7327:6;7316:26;7334:7;7316:26;;;;;;;:::i;7290:53::-;7364:7;;-1:-1:-1;7364:7:13;;7257:86;;-1:-1:-1;7257:86:13;-1:-1:-1;7388:35:13;;;7384:92;;7439:24;;;;7384:92;2976:73;;;20362:66:22;2976:73:13;;;;20350:79:22;;;;20445:12;;;20438:28;;;20482:12;;;20475:28;;;20519:12;;;;20512:28;;;2976:73:13;;;;;;;;;;20556:13:22;;;;2976:73:13;;;2966:84;;;;;7585:4;:59;;7640:4;7585:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;7606:31:13;7578:66;;7657:8;;;;;;;;;;6697:979;758:1;7690:4;:22;7686:485;;4550:2:19;4536:17;;;4487:27;;4474:41;7920:23:13;;;7916:82;;7968:17;7959:26;;7916:82;8010:12;8025:37;8052:9;8025:26;:37::i;:::-;8010:52;-1:-1:-1;8081:4:13;:59;;8136:4;8081:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;8102:31:13;8074:66;;8152:8;;;;;7686:485;8188:26;;;;;;;;2778:25:22;;;2751:18;;8188:26:13;2632:177:22;3765:4458:13;3678:4551;3525:4708;;;;;;:::o;1296:160:14:-;862:44;1372:7;656:13:20;;;683:2;676:14;;;715:2;702:16;;1394:57:14;543:185:20;6015:300:2;6101:4;6124:45;;;6140:29;6124:45;;:103;;-1:-1:-1;6179:48:2;;;6195:32;6179:48;6124:103;6113:147;;;-1:-1:-1;6249:4:2;;6015:300;-1:-1:-1;6015:300:2:o;6113:147::-;725:31:5;709:47;;;;6273:37:2;613:148:5;1767:2316:21;1867:14;1914:2;1893:23;;1889:70;;1948:10;;1925:34;;;;;;;;;;;;:::i;1889:70::-;1965:21;1989:43;2010:21;2030:1;2010:10;:21;:::i;:::-;1226:23:18;;1213:37;1266:3;1262:14;;1071:215;1989:43:21;1965:67;;;-1:-1:-1;2115:2:21;1226:23:18;;1213:37;1266:3;1262:14;795:37;;2202:2:21;808:23:18;;795:37;3209:66:21;3196:79;;3192:135;;;3306:10;;3318:1;3292:28;;;;;;;;;;;;;:::i;3192:135::-;3337:1;:7;;3342:2;3337:7;;:18;;;;;3348:1;:7;;3353:2;3348:7;;3337:18;3333:74;;;3386:10;;3398:1;3372:28;;;;;;;;;;;;;:::i;3333:74::-;1253:1;3447:13;:32;3443:509;;3498:25;;;;;;;;;;;;18522::22;;;18595:4;18583:17;;18563:18;;;18556:45;;;;18617:18;;;18610:34;;;18660:18;;;18653:34;;;3498:25:21;;18494:19:22;;3498:25:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3489:34;;3443:509;;;1303:1;3608:13;:34;3604:348;;3690:59;;18940:66:22;3690:59:21;;;18928:79:22;19023:12;;;19016:28;;;3661:130:21;;19060:12:22;;3690:59:21;;;;;;;;;;;;;3680:70;;3690:59;3680:70;;;;3661:130;;;;;;;;;18522:25:22;18595:4;18583:17;;18563:18;;;18556:45;18617:18;;;18610:34;;;18660:18;;;18653:34;;;18494:19;;3661:130:21;18295:398:22;3604:348:21;3913:10;;3925:13;3940:4;3888:57;;;;;;;;;;;;;;:::i;3604:348::-;3999:22;;;3995:63;;4047:10;;4030:28;;;;;;;;;;;;:::i;3995:63::-;4065:13;;;;1767:2316;;;;;:::o;4411:951::-;4535:10;4557:22;;;4553:66;;4596:16;;;;;;;;;;;;;;4553:66;4625:21;4655:10;;4666:21;4686:1;4655:10;4666:21;:::i;:::-;4655:33;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;1253:1:21;4699:32;;;:70;;;1303:1;4735:13;:34;4699:70;4695:663;;;4873:7;4837:43;;:32;4851:5;4858:10;;4837:13;:32::i;:::-;:43;;;4829:51;;4695:663;;;1359:1;4898:13;:40;4894:464;;5060:40;;;;5101:5;5108:10;5119:1;5108:10;5121:21;5141:1;5108:10;5121:21;:::i;:::-;5108:35;;;;;;;:::i;:::-;5060:84;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5030:114;;:26;:114;;-1:-1:-1;4894:464:21;;;5318:10;;5330:13;5345:5;5293:58;;;;;;;;;;;;;;:::i;4894:464::-;4547:815;4411:951;;;;;;:::o;2227:182:13:-;2346:57;;20822:66:22;2346:57:13;;;20810:79:22;20905:12;;;20898:28;;;2314:7:13;;20942:12:22;;2346:57:13;20580:380:22;14:177;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:347::-;689:8;699:6;753:3;746:4;738:6;734:17;730:27;720:55;;771:1;768;761:12;720:55;-1:-1:-1;794:20:22;;837:18;826:30;;823:50;;;869:1;866;859:12;823:50;906:4;898:6;894:17;882:29;;958:3;951:4;942:6;934;930:19;926:30;923:39;920:59;;;975:1;972;965:12;920:59;638:347;;;;;:::o;990:477::-;1069:6;1077;1085;1138:2;1126:9;1117:7;1113:23;1109:32;1106:52;;;1154:1;1151;1144:12;1106:52;1190:9;1177:23;1167:33;;1251:2;1240:9;1236:18;1223:32;1278:18;1270:6;1267:30;1264:50;;;1310:1;1307;1300:12;1264:50;1349:58;1399:7;1390:6;1379:9;1375:22;1349:58;:::i;:::-;990:477;;1426:8;;-1:-1:-1;1323:84:22;;-1:-1:-1;;;;990:477:22:o;1725:717::-;1815:6;1823;1831;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1948:9;1935:23;1977:18;2018:2;2010:6;2007:14;2004:34;;;2034:1;2031;2024:12;2004:34;2073:58;2123:7;2114:6;2103:9;2099:22;2073:58;:::i;:::-;2150:8;;-1:-1:-1;2047:84:22;-1:-1:-1;2238:2:22;2223:18;;2210:32;;-1:-1:-1;2254:16:22;;;2251:36;;;2283:1;2280;2273:12;2251:36;;2322:60;2374:7;2363:8;2352:9;2348:24;2322:60;:::i;:::-;1725:717;;;;-1:-1:-1;2401:8:22;-1:-1:-1;;;;1725:717:22:o;2447:180::-;2506:6;2559:2;2547:9;2538:7;2534:23;2530:32;2527:52;;;2575:1;2572;2565:12;2527:52;-1:-1:-1;2598:23:22;;2447:180;-1:-1:-1;2447:180:22:o;2814:387::-;2897:8;2907:6;2961:3;2954:4;2946:6;2942:17;2938:27;2928:55;;2979:1;2976;2969:12;2928:55;-1:-1:-1;3002:20:22;;3045:18;3034:30;;3031:50;;;3077:1;3074;3067:12;3031:50;3114:4;3106:6;3102:17;3090:29;;3174:3;3167:4;3157:6;3154:1;3150:14;3142:6;3138:27;3134:38;3131:47;3128:67;;;3191:1;3188;3181:12;3206:488;3323:6;3331;3384:2;3372:9;3363:7;3359:23;3355:32;3352:52;;;3400:1;3397;3390:12;3352:52;3440:9;3427:23;3473:18;3465:6;3462:30;3459:50;;;3505:1;3502;3495:12;3459:50;3544:90;3626:7;3617:6;3606:9;3602:22;3544:90;:::i;:::-;3653:8;;3518:116;;-1:-1:-1;3206:488:22;-1:-1:-1;;;;3206:488:22:o;3699:864::-;3845:6;3853;3861;3869;3877;3930:2;3918:9;3909:7;3905:23;3901:32;3898:52;;;3946:1;3943;3936:12;3898:52;3986:9;3973:23;4015:18;4056:2;4048:6;4045:14;4042:34;;;4072:1;4069;4062:12;4042:34;4111:90;4193:7;4184:6;4173:9;4169:22;4111:90;:::i;:::-;4220:8;;-1:-1:-1;4085:116:22;-1:-1:-1;4302:2:22;4287:18;;4274:32;;-1:-1:-1;4359:2:22;4344:18;;4331:32;;-1:-1:-1;4375:16:22;;;4372:36;;;4404:1;4401;4394:12;4372:36;;4443:60;4495:7;4484:8;4473:9;4469:24;4443:60;:::i;:::-;3699:864;;;;-1:-1:-1;3699:864:22;;-1:-1:-1;4522:8:22;;4417:86;3699:864;-1:-1:-1;;;3699:864:22:o;5403:184::-;5455:77;5452:1;5445:88;5552:4;5549:1;5542:15;5576:4;5573:1;5566:15;5592:980;5660:6;5713:2;5701:9;5692:7;5688:23;5684:32;5681:52;;;5729:1;5726;5719:12;5681:52;5769:9;5756:23;5798:18;5839:2;5831:6;5828:14;5825:34;;;5855:1;5852;5845:12;5825:34;5893:6;5882:9;5878:22;5868:32;;5938:7;5931:4;5927:2;5923:13;5919:27;5909:55;;5960:1;5957;5950:12;5909:55;5996:2;5983:16;6018:2;6014;6011:10;6008:36;;;6024:18;;:::i;:::-;6158:2;6152:9;6220:4;6212:13;;6063:66;6208:22;;;6232:2;6204:31;6200:40;6188:53;;;6256:18;;;6276:22;;;6253:46;6250:72;;;6302:18;;:::i;:::-;6342:10;6338:2;6331:22;6377:2;6369:6;6362:18;6417:7;6412:2;6407;6403;6399:11;6395:20;6392:33;6389:53;;;6438:1;6435;6428:12;6389:53;6494:2;6489;6485;6481:11;6476:2;6468:6;6464:15;6451:46;6539:1;6517:15;;;6534:2;6513:24;6506:35;;;;-1:-1:-1;6521:6:22;5592:980;-1:-1:-1;;;;;5592:980:22:o;6808:271::-;6991:6;6983;6978:3;6965:33;6947:3;7017:16;;7042:13;;;7017:16;6808:271;-1:-1:-1;6808:271:22:o;7416:160::-;7481:20;;7537:13;;7530:21;7520:32;;7510:60;;7566:1;7563;7556:12;7510:60;7416:160;;;:::o;7581:196::-;7649:20;;7709:42;7698:54;;7688:65;;7678:93;;7767:1;7764;7757:12;7782:325;7870:6;7865:3;7858:19;7922:6;7915:5;7908:4;7903:3;7899:14;7886:43;;7974:1;7967:4;7958:6;7953:3;7949:16;7945:27;7938:38;7840:3;8096:4;8026:66;8021:2;8013:6;8009:15;8005:88;8000:3;7996:98;7992:109;7985:116;;7782:325;;;;:::o;8112:2028::-;8232:6;8227:3;8220:19;8202:3;8258:4;8299:2;8294:3;8290:12;8324:11;8351;8344:18;;8401:6;8398:1;8394:14;8387:5;8383:26;8371:38;;8432:5;8455:1;8465:1649;8479:6;8476:1;8473:13;8465:1649;;;8550:5;8544:4;8540:16;8535:3;8528:29;8609:6;8596:20;8695:66;8687:5;8671:14;8667:26;8663:99;8643:18;8639:124;8629:152;;8777:1;8774;8767:12;8629:152;8809:30;;8862:4;8906:24;8809:30;8906:24;:::i;:::-;8899:32;8892:40;8886:4;8879:54;8982:33;9011:2;9002:7;8998:16;8982:33;:::i;:::-;8975:41;8968:49;8953:13;;;8946:72;9041:4;9093:16;;;9080:30;9065:13;;;9058:53;9134:4;9215:42;9177:36;9196:16;;;9177:36;:::i;:::-;9173:85;9158:13;;;9151:108;9282:4;9334:16;;;9321:30;9306:13;;;9299:53;9375:4;9433:16;;;9420:30;9507:14;9503:28;;;9533:66;9499:101;9473:128;;9463:156;;9615:1;9612;9605:12;9463:156;9647:34;;;9759:16;;;;-1:-1:-1;9710:21:22;9804:18;9791:32;;9788:52;;;9836:1;9833;9826:12;9788:52;9889:8;9873:14;9869:29;9860:7;9856:43;9853:63;;;9912:1;9909;9902:12;9853:63;9951:2;9946;9940:4;9936:13;9929:25;9975:59;10030:2;10024:4;10020:13;10010:8;10001:7;9975:59;:::i;:::-;10092:12;;;;9967:67;-1:-1:-1;;;10057:15:22;;;;-1:-1:-1;;8501:1:22;8494:9;8465:1649;;;-1:-1:-1;10130:4:22;;8112:2028;-1:-1:-1;;;;;;;8112:2028:22:o;10145:594::-;10495:2;10484:9;10477:21;10534:1;10529:2;10518:9;10514:18;10507:29;10572:7;10567:2;10556:9;10552:18;10545:35;10618:3;10611:4;10600:9;10596:20;10589:33;10458:4;10639:94;10728:3;10717:9;10713:19;10705:6;10697;10639:94;:::i;10744:595::-;11094:2;11083:9;11076:21;11133:1;11128:2;11117:9;11113:18;11106:29;11171:8;11166:2;11155:9;11151:18;11144:36;11218:3;11211:4;11200:9;11196:20;11189:33;11057:4;11239:94;11328:3;11317:9;11313:19;11305:6;11297;11239:94;:::i;11344:184::-;11396:77;11393:1;11386:88;11493:4;11490:1;11483:15;11517:4;11514:1;11507:15;11786:481;11827:3;11865:5;11859:12;11892:6;11887:3;11880:19;11917:1;11927:162;11941:6;11938:1;11935:13;11927:162;;;12003:4;12059:13;;;12055:22;;12049:29;12031:11;;;12027:20;;12020:59;11956:12;11927:162;;;11931:3;12134:1;12127:4;12118:6;12113:3;12109:16;12105:27;12098:38;12256:4;12186:66;12181:2;12173:6;12169:15;12165:88;12160:3;12156:98;12152:109;12145:116;;;11786:481;;;;:::o;12272:217::-;12419:2;12408:9;12401:21;12382:4;12439:44;12479:2;12468:9;12464:18;12456:6;12439:44;:::i;13090:387::-;13187:4;13245:11;13232:25;13335:66;13324:8;13308:14;13304:29;13300:102;13280:18;13276:127;13266:155;;13417:1;13414;13407:12;13266:155;13438:33;;;;;13090:387;-1:-1:-1;;13090:387:22:o;13482:180::-;13538:6;13591:2;13579:9;13570:7;13566:23;13562:32;13559:52;;;13607:1;13604;13597:12;13559:52;13630:26;13646:9;13630:26;:::i;13991:186::-;14050:6;14103:2;14091:9;14082:7;14078:23;14074:32;14071:52;;;14119:1;14116;14109:12;14071:52;14142:29;14161:9;14142:29;:::i;14182:580::-;14259:4;14265:6;14325:11;14312:25;14415:66;14404:8;14388:14;14384:29;14380:102;14360:18;14356:127;14346:155;;14497:1;14494;14487:12;14346:155;14524:33;;14576:20;;;-1:-1:-1;14619:18:22;14608:30;;14605:50;;;14651:1;14648;14641:12;14605:50;14684:4;14672:17;;-1:-1:-1;14715:14:22;14711:27;;;14701:38;;14698:58;;;14752:1;14749;14742:12;14767:184;14819:77;14816:1;14809:88;14916:4;14913:1;14906:15;14940:4;14937:1;14930:15;14956:195;14995:3;15026:66;15019:5;15016:77;15013:103;;15096:18;;:::i;:::-;-1:-1:-1;15143:1:22;15132:13;;14956:195::o;15156:331::-;15261:9;15272;15314:8;15302:10;15299:24;15296:44;;;15336:1;15333;15326:12;15296:44;15365:6;15355:8;15352:20;15349:40;;;15385:1;15382;15375:12;15349:40;-1:-1:-1;;15411:23:22;;;15456:25;;;;;-1:-1:-1;15156:331:22:o;15492:125::-;15557:9;;;15578:10;;;15575:36;;;15591:18;;:::i;15622:392::-;15841:2;15830:9;15823:21;15804:4;15861:61;15918:2;15907:9;15903:18;15895:6;15887;15861:61;:::i;:::-;15953:2;15938:18;;15931:34;;;;-1:-1:-1;15996:2:22;15981:18;15974:34;15853:69;15622:392;-1:-1:-1;;15622:392:22:o;16525:288::-;16700:6;16689:9;16682:25;16743:2;16738;16727:9;16723:18;16716:30;16663:4;16763:44;16803:2;16792:9;16788:18;16780:6;16763:44;:::i;16818:441::-;17037:6;17026:9;17019:25;17092:42;17084:6;17080:55;17075:2;17064:9;17060:18;17053:83;17172:2;17167;17156:9;17152:18;17145:30;17000:4;17192:61;17249:2;17238:9;17234:18;17226:6;17218;17192:61;:::i;:::-;17184:69;16818:441;-1:-1:-1;;;;;;16818:441:22:o;17264:244::-;17421:2;17410:9;17403:21;17384:4;17441:61;17498:2;17487:9;17483:18;17475:6;17467;17441:61;:::i;17513:128::-;17580:9;;;17601:11;;;17598:37;;;17615:18;;:::i;17646:315::-;17831:2;17820:9;17813:21;17794:4;17851:61;17908:2;17897:9;17893:18;17885:6;17877;17851:61;:::i;:::-;17843:69;;17948:6;17943:2;17932:9;17928:18;17921:34;17646:315;;;;;;:::o;17966:324::-;18149:2;18138:9;18131:21;18112:4;18169:61;18226:2;18215:9;18211:18;18203:6;18195;18169:61;:::i;:::-;18161:69;;18278:4;18270:6;18266:17;18261:2;18250:9;18246:18;18239:45;17966:324;;;;;;:::o;19083:396::-;19290:2;19279:9;19272:21;19253:4;19310:61;19367:2;19356:9;19352:18;19344:6;19336;19310:61;:::i;:::-;19402:2;19387:18;;19380:34;;;;-1:-1:-1;19457:14:22;;19450:22;19445:2;19430:18;;;19423:50;19302:69;19083:396;-1:-1:-1;;19083:396:22:o;19484:321::-;19675:6;19664:9;19657:25;19718:2;19713;19702:9;19698:18;19691:30;19638:4;19738:61;19795:2;19784:9;19780:18;19772:6;19764;19738:61;:::i;:::-;19730:69;19484:321;-1:-1:-1;;;;;19484:321:22:o;19810:249::-;19879:6;19932:2;19920:9;19911:7;19907:23;19903:32;19900:52;;;19948:1;19945;19938:12;19900:52;19980:9;19974:16;19999:30;20023:5;19999:30;:::i" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "1734000", - "executionCost": "infinite", - "totalCost": "infinite" - }, - "external": { - "SET_IMAGE_HASH_TYPE_HASH()": "262", - "createContract(bytes)": "infinite", - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": "infinite", - "isValidSignature(bytes,bytes)": "infinite", - "isValidSignature(bytes32,bytes)": "infinite", - "nonce()": "2645", - "readNonce(uint256)": "2640", - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": "infinite", - "signatureRecovery(bytes32,bytes)": "infinite", - "supportsInterface(bytes4)": "infinite", - "updateImageHash(bytes32)": "357" - }, - "internal": { - "_executeGuest(bytes32,struct IModuleCalls.Transaction calldata[] calldata)": "infinite", - "_isValidImage(bytes32)": "infinite", - "_updateImageHash(bytes32)": "infinite" - } - }, - "methodIdentifiers": { - "SET_IMAGE_HASH_TYPE_HASH()": "57c56d6b", - "createContract(bytes)": "90042baf", - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": "7a9a1628", - "isValidSignature(bytes,bytes)": "20c13b0b", - "isValidSignature(bytes32,bytes)": "1626ba7e", - "nonce()": "affed0e0", - "readNonce(uint256)": "8c3f5563", - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": "61c2926c", - "signatureRecovery(bytes32,bytes)": "853c5068", - "supportsInterface(bytes4)": "01ffc9a7", - "updateImageHash(bytes32)": "29561426" - } - }, - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_provided", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - } - ], - "name": "BadNonce", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "CreateFailed", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "DelegateCallNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "EmptySignature", - "type": "error" - }, - { - "inputs": [], - "name": "ImageHashIsZero", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_addr", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidNestedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "_s", - "type": "bytes32" - } - ], - "name": "InvalidSValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_flag", - "type": "uint256" - } - ], - "name": "InvalidSignatureFlag", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignatureLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes1", - "name": "_type", - "type": "bytes1" - } - ], - "name": "InvalidSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_v", - "type": "uint256" - } - ], - "name": "InvalidVValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_weight", - "type": "uint256" - } - ], - "name": "LowWeightChainedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_requested", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_available", - "type": "uint256" - } - ], - "name": "NotEnoughGas", - "type": "error" - }, - { - "inputs": [], - "name": "NotSupported", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyDelegatecall", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_sender", - "type": "address" - }, - { - "internalType": "address", - "name": "_self", - "type": "address" - } - ], - "name": "OnlySelfAuth", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "SignerIsAddress0", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_type", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "_recoverMode", - "type": "bool" - } - ], - "name": "UnsupportedSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_prev", - "type": "uint256" - } - ], - "name": "WrongChainedCheckpointOrder", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_contract", - "type": "address" - } - ], - "name": "CreatedContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "newImageHash", - "type": "bytes32" - } - ], - "name": "ImageHashUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_newNonce", - "type": "uint256" - } - ], - "name": "NonceChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "TxExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_reason", - "type": "bytes" - } - ], - "name": "TxFailed", - "type": "event" - }, - { - "inputs": [], - "name": "SET_IMAGE_HASH_TYPE_HASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "createContract", - "outputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "execute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signatures", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signatures", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - } - ], - "name": "readNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - } - ], - "name": "selfExecute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_digest", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "signatureRecovery", - "outputs": [ - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "weight", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "imageHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "subdigest", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "checkpoint", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_imageHash", - "type": "bytes32" - } - ], - "name": "updateImageHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] -} \ No newline at end of file diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/GuestModule_metadata.json b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/GuestModule_metadata.json deleted file mode 100644 index 4298c56c90..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/GuestModule_metadata.json +++ /dev/null @@ -1,985 +0,0 @@ -{ - "compiler": { - "version": "0.8.18+commit.87f61d96" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_provided", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - } - ], - "name": "BadNonce", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "CreateFailed", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "DelegateCallNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "EmptySignature", - "type": "error" - }, - { - "inputs": [], - "name": "ImageHashIsZero", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_addr", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidNestedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "_s", - "type": "bytes32" - } - ], - "name": "InvalidSValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_flag", - "type": "uint256" - } - ], - "name": "InvalidSignatureFlag", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignatureLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes1", - "name": "_type", - "type": "bytes1" - } - ], - "name": "InvalidSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_v", - "type": "uint256" - } - ], - "name": "InvalidVValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_weight", - "type": "uint256" - } - ], - "name": "LowWeightChainedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_requested", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_available", - "type": "uint256" - } - ], - "name": "NotEnoughGas", - "type": "error" - }, - { - "inputs": [], - "name": "NotSupported", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyDelegatecall", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_sender", - "type": "address" - }, - { - "internalType": "address", - "name": "_self", - "type": "address" - } - ], - "name": "OnlySelfAuth", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "SignerIsAddress0", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_type", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "_recoverMode", - "type": "bool" - } - ], - "name": "UnsupportedSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_prev", - "type": "uint256" - } - ], - "name": "WrongChainedCheckpointOrder", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_contract", - "type": "address" - } - ], - "name": "CreatedContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "newImageHash", - "type": "bytes32" - } - ], - "name": "ImageHashUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_newNonce", - "type": "uint256" - } - ], - "name": "NonceChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "TxExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_reason", - "type": "bytes" - } - ], - "name": "TxFailed", - "type": "event" - }, - { - "inputs": [], - "name": "SET_IMAGE_HASH_TYPE_HASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "createContract", - "outputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "execute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signatures", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signatures", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - } - ], - "name": "readNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - } - ], - "name": "selfExecute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_digest", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "signatureRecovery", - "outputs": [ - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "weight", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "imageHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "subdigest", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "checkpoint", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_imageHash", - "type": "bytes32" - } - ], - "name": "updateImageHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "createContract(bytes)": { - "params": { - "_code": "Creation code of the contract" - }, - "returns": { - "addr": "The address of the created contract" - } - }, - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": { - "params": { - "_txs": "Transactions to process" - } - }, - "isValidSignature(bytes,bytes)": { - "details": "MUST return the correct magic value if the signature provided is valid for the provided data > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\"))", - "params": { - "_data": "Arbitrary length data signed on the behalf of address(this)", - "_signatures": "Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)" - }, - "returns": { - "_0": "magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise" - } - }, - "isValidSignature(bytes32,bytes)": { - "details": "MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))", - "params": { - "_hash": "keccak256 hash that was signed", - "_signatures": "Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)" - }, - "returns": { - "_0": "magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise" - } - }, - "nonce()": { - "details": "The default nonce space is 0x00", - "returns": { - "_0": "The next nonce" - } - }, - "readNonce(uint256)": { - "params": { - "_space": "Nonce space, each space keeps an independent nonce count" - }, - "returns": { - "_0": "The next nonce" - } - }, - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": { - "params": { - "_txs": "Transactions to process" - } - }, - "signatureRecovery(bytes32,bytes)": { - "details": "The signature must be prefixed with a type byte, which is used to determine the recovery method.", - "params": { - "_digest": "Digest of the signed data.", - "_signature": "A Sequence signature." - }, - "returns": { - "checkpoint": "A nonce that is incremented every time a new configuration is set.", - "imageHash": "The imageHash of the configuration that signed the message.", - "subdigest": "A modified version of the original digest, unique for each wallet/network.", - "threshold": "The required number of signatures needed to consider the signature valid.", - "weight": "The actual number of signatures collected in the signature." - } - }, - "supportsInterface(bytes4)": { - "params": { - "_interfaceID": "The interface identifier, as specified in ERC-165" - }, - "returns": { - "_0": "`true` if the contract implements `_interfaceID`" - } - }, - "updateImageHash(bytes32)": { - "params": { - "_imageHash": "New required image hash of the signature" - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "createContract(bytes)": { - "notice": "Creates a contract forwarding eth value" - }, - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": { - "notice": "Allow any caller to execute an action" - }, - "isValidSignature(bytes,bytes)": { - "notice": "Verifies whether the provided signature is valid with respect to the provided data" - }, - "isValidSignature(bytes32,bytes)": { - "notice": "Verifies whether the provided signature is valid with respect to the provided hash" - }, - "nonce()": { - "notice": "Returns the next nonce of the default nonce space" - }, - "readNonce(uint256)": { - "notice": "Returns the next nonce of the given nonce space" - }, - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": { - "notice": "Allow any caller to execute an action" - }, - "signatureRecovery(bytes32,bytes)": { - "notice": "Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature." - }, - "supportsInterface(bytes4)": { - "notice": "Query if a contract implements an interface" - }, - "updateImageHash(bytes32)": { - "notice": "Updates the signers configuration of the wallet" - } - }, - "notice": "GuestModule implements a Sequence wallet without signatures, nonce or replay protection. executing transactions using this wallet is not an authenticated process, and can be done by any address.This contract is completely public with no security, designed to execute pre-signed transactions and use Sequence tools without using the wallets.", - "version": 1 - } - }, - "settings": { - "compilationTarget": { - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol": "GuestModule" - }, - "evmVersion": "paris", - "libraries": {}, - "metadata": { - "bytecodeHash": "ipfs" - }, - "optimizer": { - "enabled": true, - "runs": 500000 - }, - "remappings": [ - ":@0xsequence/contracts-library/=src/", - ":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/", - ":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/", - ":@openzeppelin/=lib/openzeppelin/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/", - ":erc721a/=lib/chiru-labs/erc721a/", - ":forge-std/=lib/forge-std/src/", - ":murky/=lib/murky/src/", - ":solady/=lib/solady/src/" - ] - }, - "sources": { - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol": { - "keccak256": "0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1", - "dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol": { - "keccak256": "0x14c92b44eac100edbfea10d0d02728752a6be277c267c3776dc563ff963271b1", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://e440eb91039118ce26bb66fd549d5e6b59863983efbe6c2617b92e2c4f0aab66", - "dweb:/ipfs/QmeTd2xBKEv4S4Rp9S4TSY4WwUUDjtA7xiJYiJqkVUio7d" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol": { - "keccak256": "0x58c028f02e3517de6c39584bcf1cedd4e7b23f575c24b363cbad4960a74f8a0b", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://f9652fead22c9fe8510de8427e2db354ed145ff30f49f85d1c717e293e5df665", - "dweb:/ipfs/QmSJPFQxRE5n17DNB5Bu2jwRo17yLS7igMQGt3bvKkdLAP" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol": { - "keccak256": "0x80c0151dbd444f96c2f935e70a6d3cc57e307588fa21d7eace67e568dd3d35c1", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://39a856555a5eb900e67d351e667135f245ccebd304d692b35fc8bdc83aec1b53", - "dweb:/ipfs/QmUdWfa7GcTGM5gk7qYbNCHtsxF4o8dXHzr6HbdFng5sQm" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol": { - "keccak256": "0x16b1400988f6b7bd4d32bdcb36ee2fbd644fb2c8ca571becc0c32e03602bd303", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://8bd4681fb4cff10f4e98e45618fbc52ed0a4c7d4fcf614f34a587ad20cd16855", - "dweb:/ipfs/QmbA2LYBH1x8WX8CaeiFYMU5rjyLGgNCF32r9fQbXuoqwJ" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol": { - "keccak256": "0xd4ae13a3d20fd7ab52ad16af6a06e7244daea450b796251e911091cac104d05f", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://8de37ec20a6b649e9fe3fb42276e4660ff546bca8b467f72beb35396ab5e62d6", - "dweb:/ipfs/QmXT2SxBZKitkbKLbGbbNLhUbw2ataRpQ2DHafvhG953RE" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol": { - "keccak256": "0x3b5388842f763a5347d632a0e0e8499a54b6f0b0a6eb7f7d3d848319defa042d", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://b36fa5a88a4e174967f850bf2bb78c787d8016ef7b5eee3e2f883fbfe9b87a7d", - "dweb:/ipfs/QmTDZiPiQGe1fmTKKzdwzBE1xjkh8apTotW1SQRUCFXf4q" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol": { - "keccak256": "0x32bdb1d343eee2e32fd9d0f1d6dc0e265411d0821bd908881822f0f26f0887f8", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://1537c4f60a609751013bdc69eb1c6e6218982d91013115bc4e28cb84f816cd91", - "dweb:/ipfs/QmSjkSTrrB4vuxECcm5cRG7YmraF53QWRgftxS827KcQLW" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol": { - "keccak256": "0x91545de5c77cfac86c5686c4e1f338a18ee7adb689ac0234848d7a7fc8a560db", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://dc89d05d8099ba4c3c2cf85737796d439899b5a04e6b87b1ea43f687ae08848a", - "dweb:/ipfs/QmatU8gRvFkK3Yn1MYAekzi48Waw3cDLtXJpduvju9HFUu" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol": { - "keccak256": "0x876c6a40cba975df4f7dfe24e02d153b2ee758975b6d1eda494ecd4b7244aa8e", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://b9be3f7930476d528ce10a121701421f0fb251b7d6b7cd579917375e6b283bb4", - "dweb:/ipfs/QmSbvbYQvTk8KYJZ7QqSKB9Y4M1X3UDhS6k765Zr1BAwK8" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol": { - "keccak256": "0x24c6b05c32cb344b3b0aebd01fbd8bfc69f8c8e29fca340b262d9612c34d51e2", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://5f6c004946f0cbc4b3e52d45248337146bc82569da894ecff3cbdc5a0dca95c3", - "dweb:/ipfs/QmNSgDMQ7SHL6AJuzTSRbY2kgciHF1SKWfH6MaPH1N3TpR" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol": { - "keccak256": "0xde065c15e38eb009c3dc8f99dfefdd1d6d244dd12a889a8b57edd90d32fb4395", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://23608955786060457f79267795a61eb89b3910b683fc136c749548369425088f", - "dweb:/ipfs/QmXNorcQBF1Qk21y3aEJRiiHVtwm61zP4ttA1ZzmRjyHnz" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol": { - "keccak256": "0xa206dd3d424b8cd1c4f1400aa344cbc974480fea02f0fb371b872558e5ff4e6d", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://ea14c75f43a0008c582dcbae3ba3c900e446e28039dfdbb059d326ec5cc6a2d2", - "dweb:/ipfs/QmRfF6BmUWiFkCgzVFbLcHsUCNz5q2XkkcwXPX57ViTK4D" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol": { - "keccak256": "0xe0565e24e94204d4b254ace42d124d3279256090921a4818cbbf9747cbb14e04", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://4293a4762b0816738511f697efd04a0e881d4c409bd15ac1c4e7261fe5e482a2", - "dweb:/ipfs/QmcHbEBne4fvpcD7RTJHCL6q9czoLa7KHneaCeYfXuWiGu" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol": { - "keccak256": "0x755fbf6c106fe1c3c375c41c95c38269873717d8e683678b5fdbf6c8d3426306", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://7c7c92e72dd94f16b5c004d38c2d92eb2b760fd29a939945ed275633b0f93fa5", - "dweb:/ipfs/QmVdCG7Aw7aVV67z5mUKZa4VqhXHdLqy3SKxPfxaxq54p2" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol": { - "keccak256": "0x6de353f8c7f44c4294914a4917458ce90ae2f7ecd2d84074fe12d4a4f1485ee5", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://369f979b79a3d3fd0336ab14b3accadb63e4784324afc34f8db11d1988526afd", - "dweb:/ipfs/QmavmBZ354wTaXQ6ixBd8GrC9HwtRqn4MoNhCVJcx11off" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol": { - "keccak256": "0xa3ac8b8d31f20a8732bb4ebad53b42b334ec29041de0224bd494913ef0b2ad07", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://5a81d4eb3f47b09a8835b2fd53e0baa2e23cb604db3b10dae82543a5bcc52fa4", - "dweb:/ipfs/QmQ9XSSgbaagWArmZJJ366bdJ7HfxUxn9jdnWwN6SxUSeY" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol": { - "keccak256": "0x98520e740b0822ec053d21f376b8be8a58e93228f3758f9228a7d00e1f60950f", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://31226706c004f1a4315d6b8d37621b46f4d5807c16e1ce72675c1431ed9006a2", - "dweb:/ipfs/QmdSSyCuPex2E2VTd6UMYy9WAq9eJNZ6vHSUomntNknzXE" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol": { - "keccak256": "0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98", - "dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol": { - "keccak256": "0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25", - "dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol": { - "keccak256": "0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335", - "dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM" - ] - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol": { - "keccak256": "0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353", - "dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv" - ] - } - }, - "version": 1 -} \ No newline at end of file diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/build-info/c563de663c25f57de739af959840b24e.json b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/build-info/c563de663c25f57de739af959840b24e.json deleted file mode 100644 index 2dc39dd261..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/artifacts/build-info/c563de663c25f57de739af959840b24e.json +++ /dev/null @@ -1,96556 +0,0 @@ -{ - "id": "c563de663c25f57de739af959840b24e", - "_format": "hh-sol-build-info-1", - "solcVersion": "0.8.18", - "solcLongVersion": "0.8.18+commit.87f61d96", - "input": { - "language": "Solidity", - "sources": { - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"../utils/LibOptim.sol\";\n\nimport \"./commons/submodules/auth/SequenceBaseSig.sol\";\n\nimport \"./commons/ModuleAuth.sol\";\nimport \"./commons/ModuleCalls.sol\";\nimport \"./commons/ModuleCreator.sol\";\n\n\n/**\n * GuestModule implements a Sequence wallet without signatures, nonce or replay protection.\n * executing transactions using this wallet is not an authenticated process, and can be done by any address.\n *\n * @notice This contract is completely public with no security, designed to execute pre-signed transactions\n * and use Sequence tools without using the wallets.\n */\ncontract GuestModule is\n ModuleAuth,\n ModuleCalls,\n ModuleCreator\n{\n error DelegateCallNotAllowed(uint256 _index);\n error NotSupported();\n\n /**\n * @notice Allow any caller to execute an action\n * @param _txs Transactions to process\n */\n function execute(\n Transaction[] calldata _txs,\n uint256,\n bytes calldata\n ) public override {\n // Hash transaction bundle\n bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode('guest:', _txs)));\n\n // Execute the transactions\n _executeGuest(txHash, _txs);\n }\n\n /**\n * @notice Allow any caller to execute an action\n * @param _txs Transactions to process\n */\n function selfExecute(\n Transaction[] calldata _txs\n ) public override {\n // Hash transaction bundle\n bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode('self:', _txs)));\n\n // Execute the transactions\n _executeGuest(txHash, _txs);\n }\n\n /**\n * @notice Executes a list of transactions\n * @param _txHash Hash of the batch of transactions\n * @param _txs Transactions to execute\n */\n function _executeGuest(\n bytes32 _txHash,\n Transaction[] calldata _txs\n ) private {\n // Execute transaction\n uint256 size = _txs.length;\n for (uint256 i = 0; i < size; i++) {\n Transaction calldata transaction = _txs[i];\n\n if (transaction.delegateCall) revert DelegateCallNotAllowed(i);\n\n uint256 gasLimit = transaction.gasLimit;\n if (gasleft() < gasLimit) revert NotEnoughGas(i, gasLimit, gasleft());\n\n bool success = LibOptim.call(\n transaction.target,\n transaction.value,\n gasLimit == 0 ? gasleft() : gasLimit,\n transaction.data\n );\n\n if (success) {\n emit TxExecuted(_txHash, i);\n } else {\n _revertBytes(\n transaction.revertOnError,\n _txHash,\n i,\n LibOptim.returnData()\n );\n }\n }\n }\n\n /**\n * @notice Validates any signature image, because the wallet is public and has no owner.\n * @return true, all signatures are valid.\n */\n function _isValidImage(bytes32) internal override pure returns (bool) {\n return true;\n }\n\n /**\n * Not supported.\n */\n function _updateImageHash(bytes32) internal override virtual {\n revert NotSupported();\n }\n\n /**\n * @notice Query if a contract implements an interface\n * @param _interfaceID The interface identifier, as specified in ERC-165\n * @return `true` if the contract implements `_interfaceID`\n */\n function supportsInterface(\n bytes4 _interfaceID\n ) public override (\n ModuleAuth,\n ModuleCalls,\n ModuleCreator\n ) pure returns (bool) {\n return super.supportsInterface(_interfaceID);\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"./interfaces/IModuleCreator.sol\";\n\nimport \"./ModuleSelfAuth.sol\";\nimport \"./ModuleERC165.sol\";\n\n\ncontract ModuleCreator is IModuleCreator, ModuleERC165, ModuleSelfAuth {\n event CreatedContract(address _contract);\n\n /**\n * @notice Creates a contract forwarding eth value\n * @param _code Creation code of the contract\n * @return addr The address of the created contract\n */\n function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {\n assembly { addr := create(callvalue(), add(_code, 32), mload(_code)) }\n if (addr == address(0)) revert CreateFailed(_code);\n emit CreatedContract(addr);\n }\n\n /**\n * @notice Query if a contract implements an interface\n * @param _interfaceID The interface identifier, as specified in ERC-165\n * @return `true` if the contract implements `_interfaceID`\n */\n function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {\n if (_interfaceID == type(IModuleCreator).interfaceId) {\n return true;\n }\n\n return super.supportsInterface(_interfaceID);\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"./ModuleSelfAuth.sol\";\nimport \"./ModuleStorage.sol\";\nimport \"./ModuleERC165.sol\";\nimport \"./ModuleNonce.sol\";\nimport \"./ModuleOnlyDelegatecall.sol\";\n\nimport \"./interfaces/IModuleCalls.sol\";\nimport \"./interfaces/IModuleAuth.sol\";\n\nimport \"./submodules/nonce/SubModuleNonce.sol\";\nimport \"./submodules/auth/SequenceBaseSig.sol\";\n\nimport \"../../utils/LibOptim.sol\";\n\n\nabstract contract ModuleCalls is IModuleCalls, IModuleAuth, ModuleERC165, ModuleOnlyDelegatecall, ModuleSelfAuth, ModuleNonce {\n /**\n * @notice Allow wallet owner to execute an action\n * @dev Relayers must ensure that the gasLimit specified for each transaction\n * is acceptable to them. A user could specify large enough that it could\n * consume all the gas available.\n * @param _txs Transactions to process\n * @param _nonce Signature nonce (may contain an encoded space)\n * @param _signature Encoded signature\n */\n function execute(\n Transaction[] calldata _txs,\n uint256 _nonce,\n bytes calldata _signature\n ) external override virtual onlyDelegatecall {\n // Validate and update nonce\n _validateNonce(_nonce);\n\n // Hash and verify transaction bundle\n (bool isValid, bytes32 txHash) = _signatureValidation(\n keccak256(\n abi.encode(\n _nonce,\n _txs\n )\n ),\n _signature\n );\n\n if (!isValid) {\n revert InvalidSignature(txHash, _signature);\n }\n\n // Execute the transactions\n _execute(txHash, _txs);\n }\n\n /**\n * @notice Allow wallet to execute an action\n * without signing the message\n * @param _txs Transactions to execute\n */\n function selfExecute(\n Transaction[] calldata _txs\n ) external override virtual onlySelf {\n // Hash transaction bundle\n bytes32 txHash = SequenceBaseSig.subdigest(\n keccak256(\n abi.encode('self:', _txs)\n )\n );\n\n // Execute the transactions\n _execute(txHash, _txs);\n }\n\n /**\n * @notice Executes a list of transactions\n * @param _txHash Hash of the batch of transactions\n * @param _txs Transactions to execute\n */\n function _execute(\n bytes32 _txHash,\n Transaction[] calldata _txs\n ) private {\n unchecked {\n // Execute transaction\n uint256 size = _txs.length;\n for (uint256 i = 0; i < size; i++) {\n Transaction calldata transaction = _txs[i];\n uint256 gasLimit = transaction.gasLimit;\n\n if (gasleft() < gasLimit) revert NotEnoughGas(i, gasLimit, gasleft());\n\n bool success;\n if (transaction.delegateCall) {\n success = LibOptim.delegatecall(\n transaction.target,\n gasLimit == 0 ? gasleft() : gasLimit,\n transaction.data\n );\n } else {\n success = LibOptim.call(\n transaction.target,\n transaction.value,\n gasLimit == 0 ? gasleft() : gasLimit,\n transaction.data\n );\n }\n\n if (success) {\n emit TxExecuted(_txHash, i);\n } else {\n // Avoid copy of return data until neccesary\n _revertBytes(\n transaction.revertOnError,\n _txHash,\n i,\n LibOptim.returnData()\n );\n }\n }\n }\n }\n\n /**\n * @notice Logs a failed transaction, reverts if the transaction is not optional\n * @param _revertOnError Signals if it should revert or just log\n * @param _txHash Hash of the transaction\n * @param _index Index of the transaction in the batch\n * @param _reason Encoded revert message\n */\n function _revertBytes(\n bool _revertOnError,\n bytes32 _txHash,\n uint256 _index,\n bytes memory _reason\n ) internal {\n if (_revertOnError) {\n assembly { revert(add(_reason, 0x20), mload(_reason)) }\n } else {\n emit TxFailed(_txHash, _index, _reason);\n }\n }\n\n /**\n * @notice Query if a contract implements an interface\n * @param _interfaceID The interface identifier, as specified in ERC-165\n * @return `true` if the contract implements `_interfaceID`\n */\n function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {\n if (_interfaceID == type(IModuleCalls).interfaceId) {\n return true;\n }\n\n return super.supportsInterface(_interfaceID);\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"../../utils/LibBytes.sol\";\nimport \"../../interfaces/IERC1271Wallet.sol\";\n\nimport \"./interfaces/IModuleAuth.sol\";\n\nimport \"./ModuleERC165.sol\";\n\nimport \"./submodules/auth/SequenceBaseSig.sol\";\nimport \"./submodules/auth/SequenceDynamicSig.sol\";\nimport \"./submodules/auth/SequenceNoChainIdSig.sol\";\nimport \"./submodules/auth/SequenceChainedSig.sol\";\n\n\nabstract contract ModuleAuth is\n IModuleAuth,\n ModuleERC165,\n IERC1271Wallet,\n SequenceChainedSig\n{\n using LibBytes for bytes;\n\n bytes1 internal constant LEGACY_TYPE = hex\"00\";\n bytes1 internal constant DYNAMIC_TYPE = hex\"01\";\n bytes1 internal constant NO_CHAIN_ID_TYPE = hex\"02\";\n bytes1 internal constant CHAINED_TYPE = hex\"03\";\n\n bytes4 internal constant SELECTOR_ERC1271_BYTES_BYTES = 0x20c13b0b;\n bytes4 internal constant SELECTOR_ERC1271_BYTES32_BYTES = 0x1626ba7e;\n\n /**\n * @notice Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature.\n * @dev The signature must be prefixed with a type byte, which is used to determine the recovery method.\n *\n * @param _digest Digest of the signed data.\n * @param _signature A Sequence signature.\n *\n * @return threshold The required number of signatures needed to consider the signature valid.\n * @return weight The actual number of signatures collected in the signature.\n * @return imageHash The imageHash of the configuration that signed the message.\n * @return subdigest A modified version of the original digest, unique for each wallet/network.\n * @return checkpoint A nonce that is incremented every time a new configuration is set.\n */\n function signatureRecovery(\n bytes32 _digest,\n bytes calldata _signature\n ) public override virtual view returns (\n uint256 threshold,\n uint256 weight,\n bytes32 imageHash,\n bytes32 subdigest,\n uint256 checkpoint\n ) {\n bytes1 signatureType = _signature[0];\n\n if (signatureType == LEGACY_TYPE) {\n // networkId digest + base recover\n subdigest = SequenceBaseSig.subdigest(_digest);\n (threshold, weight, imageHash, checkpoint) = SequenceBaseSig.recover(subdigest, _signature);\n return (threshold, weight, imageHash, subdigest, checkpoint);\n }\n\n if (signatureType == DYNAMIC_TYPE) {\n // networkId digest + dynamic recover\n subdigest = SequenceBaseSig.subdigest(_digest);\n (threshold, weight, imageHash, checkpoint) = SequenceDynamicSig.recover(subdigest, _signature);\n return (threshold, weight, imageHash, subdigest, checkpoint);\n }\n\n if (signatureType == NO_CHAIN_ID_TYPE) {\n // noChainId digest + dynamic recover\n subdigest = SequenceNoChainIdSig.subdigest(_digest);\n (threshold, weight, imageHash, checkpoint) = SequenceDynamicSig.recover(subdigest, _signature);\n return (threshold, weight, imageHash, subdigest, checkpoint);\n }\n\n if (signatureType == CHAINED_TYPE) {\n // original digest + chained recover\n // (subdigest will be computed in the chained recover)\n return chainedRecover(_digest, _signature);\n }\n\n revert InvalidSignatureType(signatureType);\n }\n\n /**\n * @dev Validates a signature.\n *\n * @param _digest Digest of the signed data.\n * @param _signature A Sequence signature.\n *\n * @return isValid Indicates whether the signature is valid or not.\n * @return subdigest A modified version of the original digest, unique for each wallet/network.\n */\n function _signatureValidation(\n bytes32 _digest,\n bytes calldata _signature\n ) internal override virtual view returns (\n bool isValid,\n bytes32 subdigest\n ) {\n uint256 threshold; uint256 weight; bytes32 imageHash;\n (threshold, weight, imageHash, subdigest,) = signatureRecovery(_digest, _signature);\n isValid = weight >= threshold && _isValidImage(imageHash);\n }\n\n /**\n * @notice Verifies whether the provided signature is valid with respect to the provided data\n * @dev MUST return the correct magic value if the signature provided is valid for the provided data\n * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\"))\n * @param _data Arbitrary length data signed on the behalf of address(this)\n * @param _signatures Signature byte array associated with _data.\n * Encoded as abi.encode(Signature[], Configs)\n * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\n */\n function isValidSignature(\n bytes calldata _data,\n bytes calldata _signatures\n ) public override virtual view returns (bytes4) {\n // Validate signatures\n (bool isValid,) = _signatureValidation(keccak256(_data), _signatures);\n if (isValid) {\n return SELECTOR_ERC1271_BYTES_BYTES;\n }\n\n return bytes4(0);\n }\n\n /**\n * @notice Verifies whether the provided signature is valid with respect to the provided hash\n * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n * > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))\n * @param _hash keccak256 hash that was signed\n * @param _signatures Signature byte array associated with _data.\n * Encoded as abi.encode(Signature[], Configs)\n * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n */\n function isValidSignature(\n bytes32 _hash,\n bytes calldata _signatures\n ) public override virtual view returns (bytes4) {\n // Validate signatures\n (bool isValid,) = _signatureValidation(_hash, _signatures);\n if (isValid) {\n return SELECTOR_ERC1271_BYTES32_BYTES;\n }\n\n return bytes4(0);\n }\n\n /**\n * @notice Query if a contract implements an interface\n * @param _interfaceID The interface identifier, as specified in ERC-165\n * @return `true` if the contract implements `_interfaceID`\n */\n function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {\n if (\n _interfaceID == type(IModuleAuth).interfaceId ||\n _interfaceID == type(IERC1271Wallet).interfaceId\n ) {\n return true;\n }\n\n return super.supportsInterface(_interfaceID);\n }\n\n /**\n * @notice Updates the signers configuration of the wallet\n * @param _imageHash New required image hash of the signature\n */\n function updateImageHash(bytes32 _imageHash) external override virtual onlySelf {\n _updateImageHash(_imageHash);\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"../../../../utils/SignatureValidator.sol\";\nimport \"../../../../utils/LibBytesPointer.sol\";\nimport \"../../../../utils/LibBytes.sol\";\nimport \"../../../../utils/LibOptim.sol\";\n\n\n/**\n * @title SequenceBaseSig Library\n * @author Agustin Aguilar (aa@horizon.io)\n * @notice A Solidity implementation for handling signatures in the Sequence protocol.\n */\nlibrary SequenceBaseSig {\n using LibBytesPointer for bytes;\n\n uint256 private constant FLAG_SIGNATURE = 0;\n uint256 private constant FLAG_ADDRESS = 1;\n uint256 private constant FLAG_DYNAMIC_SIGNATURE = 2;\n uint256 private constant FLAG_NODE = 3;\n uint256 private constant FLAG_BRANCH = 4;\n uint256 private constant FLAG_SUBDIGEST = 5;\n uint256 private constant FLAG_NESTED = 6;\n\n error InvalidNestedSignature(bytes32 _hash, address _addr, bytes _signature);\n error InvalidSignatureFlag(uint256 _flag);\n\n /**\n * @notice Generates a subdigest for the input digest (unique for this wallet and network).\n * @param _digest The input digest to generate the subdigest from.\n * @return bytes32 The subdigest generated from the input digest.\n */\n function subdigest(\n bytes32 _digest\n ) internal view returns (bytes32) {\n return keccak256(\n abi.encodePacked(\n \"\\x19\\x01\",\n block.chainid,\n address(this),\n _digest\n )\n );\n }\n\n /**\n * @notice Generates the leaf for an address and weight.\n * @dev The leaf is generated by concatenating the address and weight.\n *\n * @param _addr The address to generate the leaf for.\n * @param _weight The weight to generate the leaf for.\n * @return bytes32 The leaf generated from the address and weight.\n */\n function _leafForAddressAndWeight(\n address _addr,\n uint96 _weight\n ) internal pure returns (bytes32) {\n unchecked {\n return bytes32(uint256(_weight) << 160 | uint256(uint160(_addr)));\n }\n }\n\n /**\n * @notice Generates the leaf for a hardcoded subdigest.\n * @dev The leaf is generated by hashing 'Sequence static digest:\\n' and the subdigest.\n * @param _subdigest The subdigest to generate the leaf for.\n * @return bytes32 The leaf generated from the hardcoded subdigest.\n */\n function _leafForHardcodedSubdigest(\n bytes32 _subdigest\n ) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked('Sequence static digest:\\n', _subdigest));\n }\n\n /**\n * @notice Generates the leaf for a nested tree node.\n * @dev The leaf is generated by hashing 'Sequence nested config:\\n', the node, the threshold and the weight.\n *\n * @param _node The root of the node to generate the leaf for.\n * @param _threshold The internal threshold of the tree.\n * @param _weight The external weight of the tree.\n * @return bytes32 The leaf generated from the nested tree.\n */\n function _leafForNested(\n bytes32 _node,\n uint256 _threshold,\n uint256 _weight\n ) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked('Sequence nested config:\\n', _node, _threshold, _weight));\n }\n\n /**\n * @notice Returns the weight and root of a signature branch.\n * @dev If the signature contains a hardcoded subdigest, and it matches the input digest, then the weight is set to 2 ** 256 - 1.\n *\n * @param _subdigest The digest to verify the signature against.\n * @param _signature The signature branch to recover.\n * @return weight The total weight of the recovered signatures.\n * @return root The root hash of the recovered configuration.\n */\n function recoverBranch(\n bytes32 _subdigest,\n bytes calldata _signature\n ) internal view returns (\n uint256 weight,\n bytes32 root\n ) {\n unchecked {\n uint256 rindex;\n\n // Iterate until the image is completed\n while (rindex < _signature.length) {\n // Read next item type\n uint256 flag;\n (flag, rindex) = _signature.readUint8(rindex);\n\n if (flag == FLAG_ADDRESS) {\n // Read plain address\n uint8 addrWeight; address addr;\n (addrWeight, addr, rindex) = _signature.readUint8Address(rindex);\n\n // Write weight and address to image\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n if (flag == FLAG_SIGNATURE) {\n // Read weight\n uint8 addrWeight;\n (addrWeight, rindex) = _signature.readUint8(rindex);\n\n // Read single signature and recover signer\n uint256 nrindex = rindex + 66;\n address addr = SignatureValidator.recoverSigner(_subdigest, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n // Acumulate total weight of the signature\n weight += addrWeight;\n\n // Write weight and address to image\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n if (flag == FLAG_DYNAMIC_SIGNATURE) {\n // Read signer and weight\n uint8 addrWeight; address addr;\n (addrWeight, addr, rindex) = _signature.readUint8Address(rindex);\n\n // Read signature size\n uint256 size;\n (size, rindex) = _signature.readUint24(rindex);\n\n // Read dynamic size signature\n uint256 nrindex = rindex + size;\n if (!SignatureValidator.isValidSignature(_subdigest, addr, _signature[rindex:nrindex])) {\n revert InvalidNestedSignature(_subdigest, addr, _signature[rindex:nrindex]);\n }\n rindex = nrindex;\n\n // Acumulate total weight of the signature\n weight += addrWeight;\n\n // Write weight and address to image\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n if (flag == FLAG_NODE) {\n // Read node hash\n bytes32 node;\n (node, rindex) = _signature.readBytes32(rindex);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n if (flag == FLAG_BRANCH) {\n // Enter a branch of the signature merkle tree\n uint256 size;\n (size, rindex) = _signature.readUint24(rindex);\n uint256 nrindex = rindex + size;\n\n uint256 nweight; bytes32 node;\n (nweight, node) = recoverBranch(_subdigest, _signature[rindex:nrindex]);\n\n weight += nweight;\n root = LibOptim.fkeccak256(root, node);\n\n rindex = nrindex;\n continue;\n }\n\n if (flag == FLAG_NESTED) {\n // Enter a branch of the signature merkle tree\n // but with an internal threshold and an external fixed weight\n uint256 externalWeight;\n (externalWeight, rindex) = _signature.readUint8(rindex);\n\n uint256 internalThreshold;\n (internalThreshold, rindex) = _signature.readUint16(rindex);\n\n uint256 size;\n (size, rindex) = _signature.readUint24(rindex);\n uint256 nrindex = rindex + size;\n\n uint256 internalWeight; bytes32 internalRoot;\n (internalWeight, internalRoot) = recoverBranch(_subdigest, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n if (internalWeight >= internalThreshold) {\n weight += externalWeight;\n }\n\n bytes32 node = _leafForNested(internalRoot, internalThreshold, externalWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n\n continue;\n }\n\n if (flag == FLAG_SUBDIGEST) {\n // A hardcoded always accepted digest\n // it pushes the weight to the maximum\n bytes32 hardcoded;\n (hardcoded, rindex) = _signature.readBytes32(rindex);\n if (hardcoded == _subdigest) {\n weight = type(uint256).max;\n }\n\n bytes32 node = _leafForHardcodedSubdigest(hardcoded);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n revert InvalidSignatureFlag(flag);\n }\n }\n }\n\n /**\n * @notice Returns the threshold, weight, root, and checkpoint of a signature.\n * @dev To verify the signature, the weight must be greater than or equal to the threshold, and the root\n * must match the expected `imageHash` of the wallet.\n *\n * @param _subdigest The digest to verify the signature against.\n * @param _signature The signature to recover.\n * @return threshold The minimum weight required for the signature to be valid.\n * @return weight The total weight of the recovered signatures.\n * @return imageHash The root hash of the recovered configuration\n * @return checkpoint The checkpoint of the signature.\n */\n function recover(\n bytes32 _subdigest,\n bytes calldata _signature\n ) internal view returns (\n uint256 threshold,\n uint256 weight,\n bytes32 imageHash,\n uint256 checkpoint\n ) {\n unchecked {\n (weight, imageHash) = recoverBranch(_subdigest, _signature[6:]);\n\n // Threshold & checkpoint are the top nodes\n // (but they are first on the signature)\n threshold = LibBytes.readFirstUint16(_signature);\n checkpoint = LibBytes.readUint32(_signature, 2);\n\n imageHash = LibOptim.fkeccak256(imageHash, bytes32(threshold));\n imageHash = LibOptim.fkeccak256(imageHash, bytes32(checkpoint));\n }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n/**\n * @title Library for optimized EVM operations\n * @author Agustin Aguilar (aa@horizon.io)\n * @notice This library contains functions for optimizing certain EVM operations.\n */\nlibrary LibOptim {\n\n /**\n * @notice Computes the keccak256 hash of two 32-byte inputs.\n * @dev It uses only scratch memory space.\n * @param _a The first 32 bytes of the hash.\n * @param _b The second 32 bytes of the hash.\n * @return c The keccak256 hash of the two 32-byte inputs.\n */\n function fkeccak256(\n bytes32 _a,\n bytes32 _b\n ) internal pure returns (bytes32 c) {\n assembly {\n mstore(0, _a)\n mstore(32, _b)\n c := keccak256(0, 64)\n }\n }\n\n /**\n * @notice Returns the return data from the last call.\n * @return r The return data from the last call.\n */\n function returnData() internal pure returns (bytes memory r) {\n assembly {\n let size := returndatasize()\n r := mload(0x40)\n let start := add(r, 32)\n mstore(0x40, add(start, size))\n mstore(r, size)\n returndatacopy(start, 0, size)\n }\n }\n\n /**\n * @notice Calls another contract with the given parameters.\n * @dev This method doesn't increase the memory pointer.\n * @param _to The address of the contract to call.\n * @param _val The value to send to the contract.\n * @param _gas The amount of gas to provide for the call.\n * @param _data The data to send to the contract.\n * @return r The success status of the call.\n */\n function call(\n address _to,\n uint256 _val,\n uint256 _gas,\n bytes calldata _data\n ) internal returns (bool r) {\n assembly {\n let tmp := mload(0x40)\n calldatacopy(tmp, _data.offset, _data.length)\n\n r := call(\n _gas,\n _to,\n _val,\n tmp,\n _data.length,\n 0,\n 0\n )\n }\n }\n\n /**\n * @notice Calls another contract with the given parameters, using delegatecall.\n * @dev This method doesn't increase the memory pointer.\n * @param _to The address of the contract to call.\n * @param _gas The amount of gas to provide for the call.\n * @param _data The data to send to the contract.\n * @return r The success status of the call.\n */\n function delegatecall(\n address _to,\n uint256 _gas,\n bytes calldata _data\n ) internal returns (bool r) {\n assembly {\n let tmp := mload(0x40)\n calldatacopy(tmp, _data.offset, _data.length)\n\n r := delegatecall(\n _gas,\n _to,\n tmp,\n _data.length,\n 0,\n 0\n )\n }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\n/**\n * @title Library for reading data from bytes arrays\n * @author Agustin Aguilar (aa@horizon.io)\n * @notice This library contains functions for reading data from bytes arrays.\n *\n * @dev These functions do not check if the input index is within the bounds of the data array.\n * Reading out of bounds may return dirty values.\n */\nlibrary LibBytes {\n\n /**\n * @notice Returns the bytes32 value at the given index in the input data.\n * @param data The input data.\n * @param index The index of the value to retrieve.\n * @return a The bytes32 value at the given index.\n */\n function readBytes32(\n bytes calldata data,\n uint256 index\n ) internal pure returns (\n bytes32 a\n ) {\n assembly {\n a := calldataload(add(data.offset, index))\n }\n }\n\n /**\n * @notice Returns the uint8 value at the given index in the input data.\n * @param data The input data.\n * @param index The index of the value to retrieve.\n * @return a The uint8 value at the given index.\n */\n function readUint8(\n bytes calldata data,\n uint256 index\n ) internal pure returns (\n uint8 a\n ) {\n assembly {\n let word := calldataload(add(index, data.offset))\n a := shr(248, word)\n }\n }\n\n /**\n * @notice Returns the first uint16 value in the input data.\n * @param data The input data.\n * @return a The first uint16 value in the input data.\n */\n function readFirstUint16(\n bytes calldata data\n ) internal pure returns (\n uint16 a\n ) {\n assembly {\n let word := calldataload(data.offset)\n a := shr(240, word)\n }\n }\n\n /**\n * @notice Returns the uint32 value at the given index in the input data.\n * @param data The input data.\n * @param index The index of the value to retrieve.\n * @return a The uint32 value at the given index.\n */\n function readUint32(\n bytes calldata data,\n uint256 index\n ) internal pure returns (\n uint32 a\n ) {\n assembly {\n let word := calldataload(add(index, data.offset))\n a := shr(224, word)\n }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\n/**\n * @title Library for reading data from bytes arrays with a pointer\n * @author Agustin Aguilar (aa@horizon.io)\n * @notice This library contains functions for reading data from bytes arrays with a pointer.\n *\n * @dev These functions do not check if the input index is within the bounds of the data array.\n * Reading out of bounds may return dirty values.\n */\nlibrary LibBytesPointer {\n\n /**\n * @dev Returns the first uint16 value in the input data and updates the pointer.\n * @param _data The input data.\n * @return a The first uint16 value.\n * @return newPointer The new pointer.\n */\n function readFirstUint16(\n bytes calldata _data\n ) internal pure returns (\n uint16 a,\n uint256 newPointer\n ) {\n assembly {\n let word := calldataload(_data.offset)\n a := shr(240, word)\n newPointer := 2\n }\n }\n\n /**\n * @notice Returns the uint8 value at the given index in the input data and updates the pointer.\n * @param _data The input data.\n * @param _index The index of the value to retrieve.\n * @return a The uint8 value at the given index.\n * @return newPointer The new pointer.\n */\n function readUint8(\n bytes calldata _data,\n uint256 _index\n ) internal pure returns (\n uint8 a,\n uint256 newPointer\n ) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(248, word)\n newPointer := add(_index, 1)\n }\n }\n\n /**\n * @notice Returns the uint8 value and the address at the given index in the input data and updates the pointer.\n * @param _data The input data.\n * @param _index The index of the value to retrieve.\n * @return a The uint8 value at the given index.\n * @return b The following address value.\n * @return newPointer The new pointer.\n */\n function readUint8Address(\n bytes calldata _data,\n uint256 _index\n ) internal pure returns (\n uint8 a,\n address b,\n uint256 newPointer\n ) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(248, word)\n b := and(shr(88, word), 0xffffffffffffffffffffffffffffffffffffffff)\n newPointer := add(_index, 21)\n }\n }\n\n /**\n * @notice Returns the uint16 value at the given index in the input data and updates the pointer.\n * @param _data The input data.\n * @param _index The index of the value to retrieve.\n * @return a The uint16 value at the given index.\n * @return newPointer The new pointer.\n */\n function readUint16(\n bytes calldata _data,\n uint256 _index\n ) internal pure returns (\n uint16 a,\n uint256 newPointer\n ) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := and(shr(240, word), 0xffff)\n newPointer := add(_index, 2)\n }\n }\n\n /**\n * @notice Returns the uint24 value at the given index in the input data and updates the pointer.\n * @param _data The input data.\n * @param _index The index of the value to retrieve.\n * @return a The uint24 value at the given index.\n * @return newPointer The new pointer.\n */\n function readUint24(\n bytes calldata _data,\n uint256 _index\n ) internal pure returns (\n uint24 a,\n uint256 newPointer\n ) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := and(shr(232, word), 0xffffff)\n newPointer := add(_index, 3)\n }\n }\n\n /**\n * @notice Returns the uint64 value at the given index in the input data and updates the pointer.\n * @param _data The input data.\n * @param _index The index of the value to retrieve.\n * @return a The uint64 value at the given index.\n * @return newPointer The new pointer.\n */\n function readUint64(\n bytes calldata _data,\n uint256 _index\n ) internal pure returns (\n uint64 a,\n uint256 newPointer\n ) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := and(shr(192, word), 0xffffffffffffffff)\n newPointer := add(_index, 8)\n }\n }\n\n /**\n * @notice Returns the bytes32 value at the given index in the input data and updates the pointer.\n * @param _data The input data.\n * @param _pointer The index of the value to retrieve.\n * @return a The bytes32 value at the given index.\n * @return newPointer The new pointer.\n */\n function readBytes32(\n bytes calldata _data,\n uint256 _pointer\n ) internal pure returns (\n bytes32 a,\n uint256 newPointer\n ) {\n assembly {\n a := calldataload(add(_pointer, _data.offset))\n newPointer := add(_pointer, 32)\n }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"../interfaces/IERC1271Wallet.sol\";\n\nimport \"./LibBytes.sol\";\n\n/**\n * @dev Contains logic for signature validation.\n * Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md)\n * Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/\n */\nlibrary SignatureValidator {\n // Errors\n error InvalidSignatureLength(bytes _signature);\n error EmptySignature();\n error InvalidSValue(bytes _signature, bytes32 _s);\n error InvalidVValue(bytes _signature, uint256 _v);\n error UnsupportedSignatureType(bytes _signature, uint256 _type, bool _recoverMode);\n error SignerIsAddress0(bytes _signature);\n\n using LibBytes for bytes;\n\n /***********************************|\n | Variables |\n |__________________________________*/\n\n // bytes4(keccak256(\"isValidSignature(bytes,bytes)\"))\n bytes4 constant internal ERC1271_MAGICVALUE = 0x20c13b0b;\n\n // bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))\n bytes4 constant internal ERC1271_MAGICVALUE_BYTES32 = 0x1626ba7e;\n\n // Allowed signature types.\n uint256 private constant SIG_TYPE_EIP712 = 1;\n uint256 private constant SIG_TYPE_ETH_SIGN = 2;\n uint256 private constant SIG_TYPE_WALLET_BYTES32 = 3;\n\n /***********************************|\n | Signature Functions |\n |__________________________________*/\n\n /**\n * @notice Recover the signer of hash, assuming it's an EOA account\n * @dev Only for SignatureType.EIP712 and SignatureType.EthSign signatures\n * @param _hash Hash that was signed\n * encoded as (bytes32 r, bytes32 s, uint8 v, ... , SignatureType sigType)\n */\n function recoverSigner(\n bytes32 _hash,\n bytes calldata _signature\n ) internal pure returns (address signer) {\n if (_signature.length != 66) revert InvalidSignatureLength(_signature);\n uint256 signatureType = _signature.readUint8(_signature.length - 1);\n\n // Variables are not scoped in Solidity.\n uint8 v = _signature.readUint8(64);\n bytes32 r = _signature.readBytes32(0);\n bytes32 s = _signature.readBytes32(32);\n\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n //\n // Source OpenZeppelin\n // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/cryptography/ECDSA.sol\n\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n revert InvalidSValue(_signature, s);\n }\n\n if (v != 27 && v != 28) {\n revert InvalidVValue(_signature, v);\n }\n\n // Signature using EIP712\n if (signatureType == SIG_TYPE_EIP712) {\n signer = ecrecover(_hash, v, r, s);\n\n // Signed using web3.eth_sign() or Ethers wallet.signMessage()\n } else if (signatureType == SIG_TYPE_ETH_SIGN) {\n signer = ecrecover(\n keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash)),\n v,\n r,\n s\n );\n\n } else {\n // We cannot recover the signer for any other signature type.\n revert UnsupportedSignatureType(_signature, signatureType, true);\n }\n\n // Prevent signer from being 0x0\n if (signer == address(0x0)) revert SignerIsAddress0(_signature);\n\n return signer;\n }\n\n /**\n * @notice Returns true if the provided signature is valid for the given signer.\n * @dev Supports SignatureType.EIP712, SignatureType.EthSign, and ERC1271 signatures\n * @param _hash Hash that was signed\n * @param _signer Address of the signer candidate\n * @param _signature Signature byte array\n */\n function isValidSignature(\n bytes32 _hash,\n address _signer,\n bytes calldata _signature\n ) internal view returns (bool valid) {\n if (_signature.length == 0) {\n revert EmptySignature();\n }\n\n uint256 signatureType = uint8(_signature[_signature.length - 1]);\n if (signatureType == SIG_TYPE_EIP712 || signatureType == SIG_TYPE_ETH_SIGN) {\n // Recover signer and compare with provided\n valid = recoverSigner(_hash, _signature) == _signer;\n\n } else if (signatureType == SIG_TYPE_WALLET_BYTES32) {\n // Remove signature type before calling ERC1271, restore after call\n valid = ERC1271_MAGICVALUE_BYTES32 == IERC1271Wallet(_signer).isValidSignature(_hash, _signature[0:_signature.length - 1]);\n\n } else {\n // We cannot validate any other signature type.\n // We revert because we can say nothing about its validity.\n revert UnsupportedSignatureType(_signature, signatureType, false);\n }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\nabstract contract ModuleERC165 {\n /**\n * @notice Query if a contract implements an interface\n * @param _interfaceID The interface identifier, as specified in ERC-165\n * @dev Adding new hooks will not lead to them being reported by this function\n * without upgrading the wallet. In addition, developers must ensure that\n * all inherited contracts by the main module don't conflict and are accounted\n * to be supported by the supportsInterface method.\n * @return `true` if the contract implements `_interfaceID`\n */\n function supportsInterface(bytes4 _interfaceID) virtual public pure returns (bool) {\n return _interfaceID == this.supportsInterface.selector;\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\ncontract ModuleSelfAuth {\n error OnlySelfAuth(address _sender, address _self);\n\n modifier onlySelf() {\n if (msg.sender != address(this)) {\n revert OnlySelfAuth(msg.sender, address(this));\n }\n _;\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\ninterface IModuleCreator {\n error CreateFailed(bytes _code);\n\n /**\n * @notice Creates a contract forwarding eth value\n * @param _code Creation code of the contract\n * @return addr The address of the created contract\n */\n function createContract(bytes calldata _code) external payable returns (address addr);\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\nlibrary SubModuleNonce {\n // Nonce schema\n //\n // - space[160]:nonce[96]\n //\n uint256 internal constant NONCE_BITS = 96;\n bytes32 internal constant NONCE_MASK = bytes32(uint256(type(uint96).max));\n\n /**\n * @notice Decodes a raw nonce\n * @dev Schema: space[160]:type[96]\n * @param _rawNonce Nonce to be decoded\n * @return _space The nonce space of the raw nonce\n * @return _nonce The nonce of the raw nonce\n */\n function decodeNonce(uint256 _rawNonce) internal pure returns (\n uint256 _space,\n uint256 _nonce\n ) {\n unchecked {\n // Decode nonce\n _space = _rawNonce >> NONCE_BITS;\n _nonce = uint256(bytes32(_rawNonce) & NONCE_MASK);\n }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\nabstract contract IModuleAuth {\n // IMAGE_HASH_KEY = keccak256(\"org.arcadeum.module.auth.upgradable.image.hash\");\n bytes32 internal constant IMAGE_HASH_KEY = bytes32(0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8);\n\n event ImageHashUpdated(bytes32 newImageHash);\n\n // Errors\n error ImageHashIsZero();\n error InvalidSignatureType(bytes1 _type);\n\n function _signatureValidation(\n bytes32 _digest,\n bytes calldata _signature\n ) internal virtual view returns (\n bool isValid,\n bytes32 subdigest\n );\n\n function signatureRecovery(\n bytes32 _digest,\n bytes calldata _signature\n ) public virtual view returns (\n uint256 threshold,\n uint256 weight,\n bytes32 imageHash,\n bytes32 subdigest,\n uint256 checkpoint\n );\n\n /**\n * @notice Validates the signature image\n * @return true if the signature image is valid\n */\n function _isValidImage(bytes32) internal virtual view returns (bool) {\n return false;\n }\n\n /**\n * @notice Updates the signers configuration of the wallet\n * @param _imageHash New required image hash of the signature\n */\n function updateImageHash(bytes32 _imageHash) external virtual;\n\n /**\n * @notice Updates the signers configuration of the wallet\n * @param _imageHash New required image hash of the signature\n */\n function _updateImageHash(bytes32 _imageHash) internal virtual;\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\ninterface IModuleCalls {\n // Events\n event TxFailed(bytes32 indexed _tx, uint256 _index, bytes _reason);\n event TxExecuted(bytes32 indexed _tx, uint256 _index);\n\n // Errors\n error NotEnoughGas(uint256 _index, uint256 _requested, uint256 _available);\n error InvalidSignature(bytes32 _hash, bytes _signature);\n\n // Transaction structure\n struct Transaction {\n bool delegateCall; // Performs delegatecall\n bool revertOnError; // Reverts transaction bundle if tx fails\n uint256 gasLimit; // Maximum gas to be forwarded\n address target; // Address of the contract to call\n uint256 value; // Amount of ETH to pass with the call\n bytes data; // calldata to pass\n }\n\n /**\n * @notice Allow wallet owner to execute an action\n * @param _txs Transactions to process\n * @param _nonce Signature nonce (may contain an encoded space)\n * @param _signature Encoded signature\n */\n function execute(\n Transaction[] calldata _txs,\n uint256 _nonce,\n bytes calldata _signature\n ) external;\n\n /**\n * @notice Allow wallet to execute an action\n * without signing the message\n * @param _txs Transactions to execute\n */\n function selfExecute(\n Transaction[] calldata _txs\n ) external;\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\ncontract ModuleOnlyDelegatecall {\n address private immutable self;\n\n error OnlyDelegatecall();\n\n constructor() {\n self = address(this);\n }\n\n /**\n * @notice Modifier that only allows functions to be called via delegatecall.\n */\n modifier onlyDelegatecall() {\n if (address(this) == self) {\n revert OnlyDelegatecall();\n }\n _;\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"./ModuleStorage.sol\";\n\nimport \"./submodules/nonce/SubModuleNonce.sol\";\n\n\ncontract ModuleNonce {\n // Events\n event NonceChange(uint256 _space, uint256 _newNonce);\n\n // Errors\n error BadNonce(uint256 _space, uint256 _provided, uint256 _current);\n\n // NONCE_KEY = keccak256(\"org.arcadeum.module.calls.nonce\");\n bytes32 private constant NONCE_KEY = bytes32(0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e);\n\n /**\n * @notice Returns the next nonce of the default nonce space\n * @dev The default nonce space is 0x00\n * @return The next nonce\n */\n function nonce() external virtual view returns (uint256) {\n return readNonce(0);\n }\n\n /**\n * @notice Returns the next nonce of the given nonce space\n * @param _space Nonce space, each space keeps an independent nonce count\n * @return The next nonce\n */\n function readNonce(uint256 _space) public virtual view returns (uint256) {\n return uint256(ModuleStorage.readBytes32Map(NONCE_KEY, bytes32(_space)));\n }\n\n /**\n * @notice Changes the next nonce of the given nonce space\n * @param _space Nonce space, each space keeps an independent nonce count\n * @param _nonce Nonce to write on the space\n */\n function _writeNonce(uint256 _space, uint256 _nonce) internal {\n ModuleStorage.writeBytes32Map(NONCE_KEY, bytes32(_space), bytes32(_nonce));\n }\n\n /**\n * @notice Verify if a nonce is valid\n * @param _rawNonce Nonce to validate (may contain an encoded space)\n */\n function _validateNonce(uint256 _rawNonce) internal virtual {\n // Retrieve current nonce for this wallet\n (uint256 space, uint256 providedNonce) = SubModuleNonce.decodeNonce(_rawNonce);\n\n uint256 currentNonce = readNonce(space);\n if (currentNonce != providedNonce) {\n revert BadNonce(space, providedNonce, currentNonce);\n }\n\n unchecked {\n uint256 newNonce = providedNonce + 1;\n\n _writeNonce(space, newNonce);\n emit NonceChange(space, newNonce);\n return;\n }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\nlibrary ModuleStorage {\n function writeBytes32(bytes32 _key, bytes32 _val) internal {\n assembly { sstore(_key, _val) }\n }\n\n function readBytes32(bytes32 _key) internal view returns (bytes32 val) {\n assembly { val := sload(_key) }\n }\n\n function writeBytes32Map(bytes32 _key, bytes32 _subKey, bytes32 _val) internal {\n bytes32 key = keccak256(abi.encode(_key, _subKey));\n assembly { sstore(key, _val) }\n }\n\n function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) {\n bytes32 key = keccak256(abi.encode(_key, _subKey));\n assembly { val := sload(key) }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"./SequenceBaseSig.sol\";\n\nimport \"../../interfaces/IModuleAuth.sol\";\n\nimport \"../../ModuleSelfAuth.sol\";\nimport \"../../ModuleStorage.sol\";\n\nimport \"../../../../utils/LibBytesPointer.sol\";\nimport \"../../../../utils/LibOptim.sol\";\n\n/**\n * @title Sequence chained auth recovery submodule\n * @author Agustin Aguilar (aa@horizon.io)\n * @notice Defines Sequence signatures that work by delegating control to new configurations.\n * @dev The delegations can be chained together, the first signature is the one that is used to validate\n * the message, the last signature must match the current on-chain configuration of the wallet.\n */\nabstract contract SequenceChainedSig is IModuleAuth, ModuleSelfAuth {\n using LibBytesPointer for bytes;\n\n bytes32 public constant SET_IMAGE_HASH_TYPE_HASH = keccak256(\"SetImageHash(bytes32 imageHash)\");\n\n error LowWeightChainedSignature(bytes _signature, uint256 threshold, uint256 _weight);\n error WrongChainedCheckpointOrder(uint256 _current, uint256 _prev);\n\n /**\n * @notice Defined the special token that must be signed to delegate control to a new configuration.\n * @param _imageHash The hash of the new configuration.\n * @return bytes32 The message hash to be signed.\n */\n function _hashSetImageHashStruct(bytes32 _imageHash) internal pure returns (bytes32) {\n return LibOptim.fkeccak256(SET_IMAGE_HASH_TYPE_HASH, _imageHash);\n }\n\n /**\n * @notice Returns the threshold, weight, root, and checkpoint of a (chained) signature.\n * \n * @dev This method return the `threshold`, `weight` and `imageHash` of the last signature in the chain.\n * Intermediate signatures are validated directly in this method. The `subdigest` is the one of the\n * first signature in the chain (since that's the one that is used to validate the message).\n *\n * @param _digest The digest to recover the signature from.\n * @param _signature The signature to recover.\n * @return threshold The threshold of the (last) signature.\n * @return weight The weight of the (last) signature.\n * @return imageHash The image hash of the (last) signature.\n * @return subdigest The subdigest of the (first) signature in the chain.\n * @return checkpoint The checkpoint of the (last) signature.\n */\n function chainedRecover(\n bytes32 _digest,\n bytes calldata _signature\n ) internal view returns (\n uint256 threshold,\n uint256 weight,\n bytes32 imageHash,\n bytes32 subdigest,\n uint256 checkpoint\n ) {\n uint256 rindex = 1;\n uint256 sigSize;\n\n //\n // First signature out of the loop\n //\n\n // First uint24 is the size of the signature\n (sigSize, rindex) = _signature.readUint24(rindex);\n uint256 nrindex = sigSize + rindex;\n\n (\n threshold,\n weight,\n imageHash,\n subdigest,\n checkpoint\n ) = signatureRecovery(\n _digest,\n _signature[rindex:nrindex]\n );\n\n if (weight < threshold) {\n revert LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight);\n }\n\n rindex = nrindex;\n\n // The following signatures are handled by this loop.\n // This is done this way because the first signature does not have a\n // checkpoint to be validated against.\n while (rindex < _signature.length) {\n // First uint24 is the size of the signature\n (sigSize, rindex) = _signature.readUint24(rindex);\n nrindex = sigSize + rindex;\n\n uint256 nextCheckpoint;\n\n (\n threshold,\n weight,\n imageHash,,\n // Do not change the subdigest;\n // it should remain that of the first signature.\n nextCheckpoint\n ) = signatureRecovery(\n _hashSetImageHashStruct(imageHash),\n _signature[rindex:nrindex]\n );\n\n // Validate signature\n if (weight < threshold) {\n revert LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight);\n }\n\n // Checkpoints must be provided in descending order\n // since the first signature is the one that is used to validate the message\n // and the last signature is the one that is used to validate the current configuration\n if (nextCheckpoint >= checkpoint) {\n revert WrongChainedCheckpointOrder(nextCheckpoint, checkpoint);\n }\n\n checkpoint = nextCheckpoint;\n rindex = nrindex;\n }\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\nlibrary SequenceNoChainIdSig {\n\n /**\n * @notice Computes a subdigest for a Sequence signature that works on all chains.\n * @dev The subdigest is computed by removing the chain ID from the digest (using 0 instead).\n * @param _digest The digest of the chain of signatures.\n * @return bytes32 The subdigest with no chain ID.\n */\n function subdigest(bytes32 _digest) internal view returns (bytes32) {\n return keccak256(\n abi.encodePacked(\n \"\\x19\\x01\",\n uint256(0),\n address(this),\n _digest\n )\n );\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\nimport \"./SequenceBaseSig.sol\";\n\n\nlibrary SequenceDynamicSig {\n\n /**\n * @notice Recover a \"dynamically encoded\" Sequence signature.\n * @dev The Signature is stripped of the first byte, which is the encoding flag.\n *\n * @param _subdigest The digest of the signature.\n * @param _signature The Sequence signature.\n * @return threshold The threshold weight required to validate the signature.\n * @return weight The weight of the signature.\n * @return imageHash The hash of the recovered configuration.\n * @return checkpoint The checkpoint of the configuration.\n */\n function recover(\n bytes32 _subdigest,\n bytes calldata _signature\n ) internal view returns (\n uint256 threshold,\n uint256 weight,\n bytes32 imageHash,\n uint256 checkpoint\n ) {\n return SequenceBaseSig.recover(_subdigest, _signature[1:]);\n }\n}\n" - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol": { - "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.18;\n\n\ninterface IERC1271Wallet {\n\n /**\n * @notice Verifies whether the provided signature is valid with respect to the provided data\n * @dev MUST return the correct magic value if the signature provided is valid for the provided data\n * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n * > This function MAY modify Ethereum's state\n * @param _data Arbitrary length data signed on the behalf of address(this)\n * @param _signature Signature byte array associated with _data\n * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\n */\n function isValidSignature(\n bytes calldata _data,\n bytes calldata _signature)\n external\n view\n returns (bytes4 magicValue);\n\n /**\n * @notice Verifies whether the provided signature is valid with respect to the provided hash\n * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n * > This function MAY modify Ethereum's state\n * @param _hash keccak256 hash that was signed\n * @param _signature Signature byte array associated with _data\n * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\n */\n function isValidSignature(\n bytes32 _hash,\n bytes calldata _signature)\n external\n view\n returns (bytes4 magicValue);\n}" - } - }, - "settings": { - "optimizer": { - "enabled": true, - "runs": 500000 - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.legacyAssembly", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "evm.gasEstimates", - "evm.assembly" - ] - } - }, - "remappings": [ - "@0xsequence/contracts-library/=src/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "forge-std/=lib/forge-std/src/", - "murky/=lib/murky/src/", - "@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/", - "@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/", - "erc721a/=lib/chiru-labs/erc721a/", - "erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/", - "@openzeppelin/=lib/openzeppelin/", - "solady/=lib/solady/src/" - ] - } - }, - "output": { - "contracts": { - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol": { - "IERC1271Wallet": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "magicValue", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "magicValue", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "isValidSignature(bytes,bytes)": { - "details": "MUST return the correct magic value if the signature provided is valid for the provided data > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\") > This function MAY modify Ethereum's state", - "params": { - "_data": "Arbitrary length data signed on the behalf of address(this)", - "_signature": "Signature byte array associated with _data" - }, - "returns": { - "magicValue": "Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise" - } - }, - "isValidSignature(bytes32,bytes)": { - "details": "MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\") > This function MAY modify Ethereum's state", - "params": { - "_hash": "keccak256 hash that was signed", - "_signature": "Signature byte array associated with _data" - }, - "returns": { - "magicValue": "Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": "", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "gasEstimates": null, - "legacyAssembly": null, - "methodIdentifiers": { - "isValidSignature(bytes,bytes)": "20c13b0b", - "isValidSignature(bytes32,bytes)": "1626ba7e" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided data > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\\\"isValidSignature(bytes,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_data\":\"Arbitrary length data signed on the behalf of address(this)\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\\\"isValidSignature(bytes,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided data\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":\"IERC1271Wallet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":{\"keccak256\":\"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1\",\"dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "isValidSignature(bytes,bytes)": { - "notice": "Verifies whether the provided signature is valid with respect to the provided data" - }, - "isValidSignature(bytes32,bytes)": { - "notice": "Verifies whether the provided signature is valid with respect to the provided hash" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol": { - "GuestModule": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_provided", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - } - ], - "name": "BadNonce", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "CreateFailed", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "DelegateCallNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "EmptySignature", - "type": "error" - }, - { - "inputs": [], - "name": "ImageHashIsZero", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_addr", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidNestedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "_s", - "type": "bytes32" - } - ], - "name": "InvalidSValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_flag", - "type": "uint256" - } - ], - "name": "InvalidSignatureFlag", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignatureLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes1", - "name": "_type", - "type": "bytes1" - } - ], - "name": "InvalidSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_v", - "type": "uint256" - } - ], - "name": "InvalidVValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_weight", - "type": "uint256" - } - ], - "name": "LowWeightChainedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_requested", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_available", - "type": "uint256" - } - ], - "name": "NotEnoughGas", - "type": "error" - }, - { - "inputs": [], - "name": "NotSupported", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyDelegatecall", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_sender", - "type": "address" - }, - { - "internalType": "address", - "name": "_self", - "type": "address" - } - ], - "name": "OnlySelfAuth", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "SignerIsAddress0", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_type", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "_recoverMode", - "type": "bool" - } - ], - "name": "UnsupportedSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_prev", - "type": "uint256" - } - ], - "name": "WrongChainedCheckpointOrder", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_contract", - "type": "address" - } - ], - "name": "CreatedContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "newImageHash", - "type": "bytes32" - } - ], - "name": "ImageHashUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_newNonce", - "type": "uint256" - } - ], - "name": "NonceChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "TxExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_reason", - "type": "bytes" - } - ], - "name": "TxFailed", - "type": "event" - }, - { - "inputs": [], - "name": "SET_IMAGE_HASH_TYPE_HASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "createContract", - "outputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "execute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signatures", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signatures", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - } - ], - "name": "readNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - } - ], - "name": "selfExecute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_digest", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "signatureRecovery", - "outputs": [ - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "weight", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "imageHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "subdigest", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "checkpoint", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_imageHash", - "type": "bytes32" - } - ], - "name": "updateImageHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "createContract(bytes)": { - "params": { - "_code": "Creation code of the contract" - }, - "returns": { - "addr": "The address of the created contract" - } - }, - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": { - "params": { - "_txs": "Transactions to process" - } - }, - "isValidSignature(bytes,bytes)": { - "details": "MUST return the correct magic value if the signature provided is valid for the provided data > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\"))", - "params": { - "_data": "Arbitrary length data signed on the behalf of address(this)", - "_signatures": "Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)" - }, - "returns": { - "_0": "magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise" - } - }, - "isValidSignature(bytes32,bytes)": { - "details": "MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))", - "params": { - "_hash": "keccak256 hash that was signed", - "_signatures": "Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)" - }, - "returns": { - "_0": "magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise" - } - }, - "nonce()": { - "details": "The default nonce space is 0x00", - "returns": { - "_0": "The next nonce" - } - }, - "readNonce(uint256)": { - "params": { - "_space": "Nonce space, each space keeps an independent nonce count" - }, - "returns": { - "_0": "The next nonce" - } - }, - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": { - "params": { - "_txs": "Transactions to process" - } - }, - "signatureRecovery(bytes32,bytes)": { - "details": "The signature must be prefixed with a type byte, which is used to determine the recovery method.", - "params": { - "_digest": "Digest of the signed data.", - "_signature": "A Sequence signature." - }, - "returns": { - "checkpoint": "A nonce that is incremented every time a new configuration is set.", - "imageHash": "The imageHash of the configuration that signed the message.", - "subdigest": "A modified version of the original digest, unique for each wallet/network.", - "threshold": "The required number of signatures needed to consider the signature valid.", - "weight": "The actual number of signatures collected in the signature." - } - }, - "supportsInterface(bytes4)": { - "params": { - "_interfaceID": "The interface identifier, as specified in ERC-165" - }, - "returns": { - "_0": "`true` if the contract implements `_interfaceID`" - } - }, - "updateImageHash(bytes32)": { - "params": { - "_imageHash": "New required image hash of the signature" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":640:3333 contract GuestModule is... */\n mstore(0x40, 0xa0)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":200:204 this */\n address\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":185:205 self = address(this) */\n 0x80\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":640:3333 contract GuestModule is... */\n mload(0x80)\n codecopy(0x00, dataOffset(sub_0), dataSize(sub_0))\n 0x00\n assignImmutable(\"0x4ffc9d227228e624d76834105f24ceb5cb9c5a8675150ad2031c88a10259e303\")\n return(0x00, dataSize(sub_0))\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":640:3333 contract GuestModule is... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x61c2926c\n gt\n tag_13\n jumpi\n dup1\n 0x8c3f5563\n gt\n tag_14\n jumpi\n dup1\n 0x8c3f5563\n eq\n tag_10\n jumpi\n dup1\n 0x90042baf\n eq\n tag_11\n jumpi\n dup1\n 0xaffed0e0\n eq\n tag_12\n jumpi\n 0x00\n dup1\n revert\n tag_14:\n dup1\n 0x61c2926c\n eq\n tag_7\n jumpi\n dup1\n 0x7a9a1628\n eq\n tag_8\n jumpi\n dup1\n 0x853c5068\n eq\n tag_9\n jumpi\n 0x00\n dup1\n revert\n tag_13:\n dup1\n 0x20c13b0b\n gt\n tag_15\n jumpi\n dup1\n 0x20c13b0b\n eq\n tag_4\n jumpi\n dup1\n 0x29561426\n eq\n tag_5\n jumpi\n dup1\n 0x57c56d6b\n eq\n tag_6\n jumpi\n 0x00\n dup1\n revert\n tag_15:\n dup1\n 0x01ffc9a7\n eq\n tag_2\n jumpi\n dup1\n 0x1626ba7e\n eq\n tag_3\n jumpi\n tag_1:\n 0x00\n dup1\n revert\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3127:3331 function supportsInterface(... */\n tag_2:\n callvalue\n dup1\n iszero\n tag_16\n jumpi\n 0x00\n dup1\n revert\n tag_16:\n pop\n tag_17\n tag_18\n calldatasize\n 0x04\n tag_19\n jump\t// in\n tag_18:\n tag_20\n jump\t// in\n tag_17:\n mload(0x40)\n /* \"#utility.yul\":611:625 */\n swap1\n iszero\n /* \"#utility.yul\":604:626 */\n iszero\n /* \"#utility.yul\":586:627 */\n dup2\n mstore\n /* \"#utility.yul\":574:576 */\n 0x20\n /* \"#utility.yul\":559:577 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3127:3331 function supportsInterface(... */\n tag_21:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5489:5805 function isValidSignature(... */\n tag_3:\n callvalue\n dup1\n iszero\n tag_23\n jumpi\n 0x00\n dup1\n revert\n tag_23:\n pop\n tag_24\n tag_25\n calldatasize\n 0x04\n tag_26\n jump\t// in\n tag_25:\n tag_27\n jump\t// in\n tag_24:\n mload(0x40)\n /* \"#utility.yul\":1646:1712 */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1634:1713 */\n swap1\n swap2\n and\n /* \"#utility.yul\":1616:1714 */\n dup2\n mstore\n /* \"#utility.yul\":1604:1606 */\n 0x20\n /* \"#utility.yul\":1589:1607 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5489:5805 function isValidSignature(... */\n tag_21\n /* \"#utility.yul\":1472:1720 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4525:4857 function isValidSignature(... */\n tag_4:\n callvalue\n dup1\n iszero\n tag_30\n jumpi\n 0x00\n dup1\n revert\n tag_30:\n pop\n tag_24\n tag_32\n calldatasize\n 0x04\n tag_33\n jump\t// in\n tag_32:\n tag_34\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6456:6575 function updateImageHash(bytes32 _imageHash) external override virtual onlySelf {... */\n tag_5:\n callvalue\n dup1\n iszero\n tag_36\n jumpi\n 0x00\n dup1\n revert\n tag_36:\n pop\n tag_37\n tag_38\n calldatasize\n 0x04\n tag_39\n jump\t// in\n tag_38:\n tag_40\n jump\t// in\n tag_37:\n stop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":811:906 bytes32 public constant SET_IMAGE_HASH_TYPE_HASH = keccak256(\"SetImageHash(bytes32 imageHash)\") */\n tag_6:\n callvalue\n dup1\n iszero\n tag_41\n jumpi\n 0x00\n dup1\n revert\n tag_41:\n pop\n tag_42\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":862:906 keccak256(\"SetImageHash(bytes32 imageHash)\") */\n 0x8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":811:906 bytes32 public constant SET_IMAGE_HASH_TYPE_HASH = keccak256(\"SetImageHash(bytes32 imageHash)\") */\n dup2\n jump\n tag_42:\n mload(0x40)\n /* \"#utility.yul\":2778:2803 */\n swap1\n dup2\n mstore\n /* \"#utility.yul\":2766:2768 */\n 0x20\n /* \"#utility.yul\":2751:2769 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":811:906 bytes32 public constant SET_IMAGE_HASH_TYPE_HASH = keccak256(\"SetImageHash(bytes32 imageHash)\") */\n tag_21\n /* \"#utility.yul\":2632:2809 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1290:1552 function selfExecute(... */\n tag_7:\n callvalue\n dup1\n iszero\n tag_46\n jumpi\n 0x00\n dup1\n revert\n tag_46:\n pop\n tag_37\n tag_48\n calldatasize\n 0x04\n tag_49\n jump\t// in\n tag_48:\n tag_50\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":890:1182 function execute(... */\n tag_8:\n callvalue\n dup1\n iszero\n tag_51\n jumpi\n 0x00\n dup1\n revert\n tag_51:\n pop\n tag_37\n tag_53\n calldatasize\n 0x04\n tag_54\n jump\t// in\n tag_53:\n tag_55\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1675:3161 function signatureRecovery(... */\n tag_9:\n callvalue\n dup1\n iszero\n tag_56\n jumpi\n 0x00\n dup1\n revert\n tag_56:\n pop\n tag_57\n tag_58\n calldatasize\n 0x04\n tag_26\n jump\t// in\n tag_58:\n tag_59\n jump\t// in\n tag_57:\n 0x40\n dup1\n mload\n /* \"#utility.yul\":4827:4852 */\n swap6\n dup7\n mstore\n /* \"#utility.yul\":4883:4885 */\n 0x20\n /* \"#utility.yul\":4868:4886 */\n dup7\n add\n /* \"#utility.yul\":4861:4895 */\n swap5\n swap1\n swap5\n mstore\n /* \"#utility.yul\":4911:4929 */\n swap3\n dup5\n add\n /* \"#utility.yul\":4904:4938 */\n swap2\n swap1\n swap2\n mstore\n /* \"#utility.yul\":4969:4971 */\n 0x60\n /* \"#utility.yul\":4954:4972 */\n dup4\n add\n /* \"#utility.yul\":4947:4981 */\n mstore\n /* \"#utility.yul\":5012:5015 */\n 0x80\n /* \"#utility.yul\":4997:5016 */\n dup3\n add\n /* \"#utility.yul\":4990:5025 */\n mstore\n /* \"#utility.yul\":4814:4817 */\n 0xa0\n /* \"#utility.yul\":4799:4818 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1675:3161 function signatureRecovery(... */\n tag_21\n /* \"#utility.yul\":4568:5031 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":938:1094 function readNonce(uint256 _space) public virtual view returns (uint256) {... */\n tag_10:\n callvalue\n dup1\n iszero\n tag_62\n jumpi\n 0x00\n dup1\n revert\n tag_62:\n pop\n tag_42\n tag_64\n calldatasize\n 0x04\n tag_39\n jump\t// in\n tag_64:\n tag_66\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":456:732 function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {... */\n tag_11:\n tag_69\n tag_70\n calldatasize\n 0x04\n tag_71\n jump\t// in\n tag_70:\n tag_72\n jump\t// in\n tag_69:\n mload(0x40)\n /* \"#utility.yul\":6753:6795 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":6741:6796 */\n swap1\n swap2\n and\n /* \"#utility.yul\":6723:6797 */\n dup2\n mstore\n /* \"#utility.yul\":6711:6713 */\n 0x20\n /* \"#utility.yul\":6696:6714 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":456:732 function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {... */\n tag_21\n /* \"#utility.yul\":6577:6803 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":670:757 function nonce() external virtual view returns (uint256) {... */\n tag_12:\n callvalue\n dup1\n iszero\n tag_75\n jumpi\n 0x00\n dup1\n revert\n tag_75:\n pop\n tag_42\n tag_77\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3127:3331 function supportsInterface(... */\n tag_20:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3270:3274 bool */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3289:3326 super.supportsInterface(_interfaceID) */\n tag_80\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3313:3325 _interfaceID */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3289:3312 super.supportsInterface */\n tag_81\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3289:3326 super.supportsInterface(_interfaceID) */\n jump\t// in\n tag_80:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3282:3326 return super.supportsInterface(_interfaceID) */\n swap3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":3127:3331 function supportsInterface(... */\n swap2\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5489:5805 function isValidSignature(... */\n tag_27:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5608:5614 bytes4 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5650:5662 bool isValid */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5667:5707 _signatureValidation(_hash, _signatures) */\n tag_83\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5688:5693 _hash */\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5695:5706 _signatures */\n dup6\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5667:5687 _signatureValidation */\n tag_84\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5667:5707 _signatureValidation(_hash, _signatures) */\n jump\t// in\n tag_83:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5649:5707 (bool isValid,) = _signatureValidation(_hash, _signatures) */\n pop\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5717:5724 isValid */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5713:5778 if (isValid) {... */\n iszero\n tag_85\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5741:5771 SELECTOR_ERC1271_BYTES32_BYTES */\n 0x1626ba7e00000000000000000000000000000000000000000000000000000000\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5734:5771 return SELECTOR_ERC1271_BYTES32_BYTES */\n jump(tag_82)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5713:5778 if (isValid) {... */\n tag_85:\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5798:5799 0 */\n 0x00\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":5489:5805 function isValidSignature(... */\n tag_82:\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4525:4857 function isValidSignature(... */\n tag_34:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4651:4657 bytes4 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4693:4705 bool isValid */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4710:4761 _signatureValidation(keccak256(_data), _signatures) */\n tag_87\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4741:4746 _data */\n dup7\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4731:4747 keccak256(_data) */\n mload(0x40)\n tag_88\n swap3\n swap2\n swap1\n tag_89\n jump\t// in\n tag_88:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4749:4760 _signatures */\n dup6\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4710:4730 _signatureValidation */\n tag_84\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4710:4761 _signatureValidation(keccak256(_data), _signatures) */\n jump\t// in\n tag_87:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4692:4761 (bool isValid,) = _signatureValidation(keccak256(_data), _signatures) */\n pop\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4771:4778 isValid */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4767:4830 if (isValid) {... */\n iszero\n tag_90\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4795:4823 SELECTOR_ERC1271_BYTES_BYTES */\n 0x20c13b0b00000000000000000000000000000000000000000000000000000000\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4788:4823 return SELECTOR_ERC1271_BYTES_BYTES */\n jump(tag_86)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4767:4830 if (isValid) {... */\n tag_90:\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4850:4851 0 */\n 0x00\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":4525:4857 function isValidSignature(... */\n tag_86:\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6456:6575 function updateImageHash(bytes32 _imageHash) external override virtual onlySelf {... */\n tag_40:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":178:188 msg.sender */\n caller\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":200:204 this */\n address\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":178:205 msg.sender != address(this) */\n eq\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":174:268 if (msg.sender != address(this)) {... */\n tag_92\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n mload(0x40)\n 0xe125889400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":235:245 msg.sender */\n caller\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n 0x04\n dup3\n add\n /* \"#utility.yul\":7319:7353 */\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":255:259 this */\n address\n /* \"#utility.yul\":7369:7387 */\n 0x24\n dup3\n add\n /* \"#utility.yul\":7362:7405 */\n mstore\n /* \"#utility.yul\":7231:7249 */\n 0x44\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n tag_93:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":174:268 if (msg.sender != address(this)) {... */\n tag_92:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6542:6570 _updateImageHash(_imageHash) */\n tag_96\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6559:6569 _imageHash */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6542:6558 _updateImageHash */\n tag_97\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6542:6570 _updateImageHash(_imageHash) */\n jump\t// in\n tag_96:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6456:6575 function updateImageHash(bytes32 _imageHash) external override virtual onlySelf {... */\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1290:1552 function selfExecute(... */\n tag_50:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1401:1415 bytes32 txHash */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1418:1481 SequenceBaseSig.subdigest(keccak256(abi.encode('self:', _txs))) */\n tag_99\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1474:1478 _txs */\n dup4\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1454:1479 abi.encode('self:', _txs) */\n add(0x20, mload(0x40))\n tag_100\n swap3\n swap2\n swap1\n tag_101\n jump\t// in\n tag_100:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1444:1480 keccak256(abi.encode('self:', _txs)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1418:1443 SequenceBaseSig.subdigest */\n tag_102\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1418:1481 SequenceBaseSig.subdigest(keccak256(abi.encode('self:', _txs))) */\n jump\t// in\n tag_99:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1401:1481 bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode('self:', _txs))) */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1520:1547 _executeGuest(txHash, _txs) */\n tag_103\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1534:1540 txHash */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1542:1546 _txs */\n dup5\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1520:1533 _executeGuest */\n tag_104\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1520:1547 _executeGuest(txHash, _txs) */\n jump\t// in\n tag_103:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1364:1552 {... */\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1290:1552 function selfExecute(... */\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":890:1182 function execute(... */\n tag_55:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1030:1044 bytes32 txHash */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1047:1111 SequenceBaseSig.subdigest(keccak256(abi.encode('guest:', _txs))) */\n tag_106\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1104:1108 _txs */\n dup7\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1083:1109 abi.encode('guest:', _txs) */\n add(0x20, mload(0x40))\n tag_100\n swap3\n swap2\n swap1\n tag_108\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1047:1111 SequenceBaseSig.subdigest(keccak256(abi.encode('guest:', _txs))) */\n tag_106:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1030:1111 bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode('guest:', _txs))) */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1150:1177 _executeGuest(txHash, _txs) */\n tag_109\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1164:1170 txHash */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1172:1176 _txs */\n dup8\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1150:1163 _executeGuest */\n tag_104\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1150:1177 _executeGuest(txHash, _txs) */\n jump\t// in\n tag_109:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":993:1182 {... */\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":890:1182 function execute(... */\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1675:3161 function signatureRecovery(... */\n tag_59:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1801:1818 uint256 threshold */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1824:1838 uint256 weight */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1844:1861 bytes32 imageHash */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1867:1884 bytes32 subdigest */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1890:1908 uint256 checkpoint */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1919:1939 bytes1 signatureType */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1942:1952 _signature */\n dup8\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1953:1954 0 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1942:1955 _signature[0] */\n dup2\n dup2\n lt\n tag_112\n jumpi\n tag_112\n tag_113\n jump\t// in\n tag_112:\n swap1\n swap2\n add\n calldataload\n 0xff00000000000000000000000000000000000000000000000000000000000000\n and\n swap2\n pop\n dup2\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1962:2265 if (signatureType == LEGACY_TYPE) {... */\n tag_114\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2057:2091 SequenceBaseSig.subdigest(_digest) */\n tag_115\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2083:2090 _digest */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2057:2082 SequenceBaseSig.subdigest */\n tag_102\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2057:2091 SequenceBaseSig.subdigest(_digest) */\n jump\t// in\n tag_115:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2045:2091 subdigest = SequenceBaseSig.subdigest(_digest) */\n swap3\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2144:2190 SequenceBaseSig.recover(subdigest, _signature) */\n tag_116\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2168:2177 subdigest */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2179:2189 _signature */\n dup10\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2144:2167 SequenceBaseSig.recover */\n tag_117\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2144:2190 SequenceBaseSig.recover(subdigest, _signature) */\n jump\t// in\n tag_116:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2099:2190 (threshold, weight, imageHash, checkpoint) = SequenceBaseSig.recover(subdigest, _signature) */\n swap3\n swap9\n pop\n swap1\n swap7\n pop\n swap5\n pop\n swap2\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2198:2258 return (threshold, weight, imageHash, subdigest, checkpoint) */\n tag_110\n swap1\n pop\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1962:2265 if (signatureType == LEGACY_TYPE) {... */\n tag_114:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2275:2304 signatureType == DYNAMIC_TYPE */\n 0xff00000000000000000000000000000000000000000000000000000000000000\n dup2\n dup2\n and\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2271:2581 if (signatureType == DYNAMIC_TYPE) {... */\n tag_118\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2370:2404 SequenceBaseSig.subdigest(_digest) */\n tag_119\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2396:2403 _digest */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2370:2395 SequenceBaseSig.subdigest */\n tag_102\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2370:2404 SequenceBaseSig.subdigest(_digest) */\n jump\t// in\n tag_119:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2358:2404 subdigest = SequenceBaseSig.subdigest(_digest) */\n swap3\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2457:2506 SequenceDynamicSig.recover(subdigest, _signature) */\n tag_116\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2484:2493 subdigest */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2495:2505 _signature */\n dup10\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2457:2483 SequenceDynamicSig.recover */\n tag_121\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2457:2506 SequenceDynamicSig.recover(subdigest, _signature) */\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2271:2581 if (signatureType == DYNAMIC_TYPE) {... */\n tag_118:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2591:2624 signatureType == NO_CHAIN_ID_TYPE */\n 0xfe00000000000000000000000000000000000000000000000000000000000000\n 0xff00000000000000000000000000000000000000000000000000000000000000\n dup3\n and\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2587:2906 if (signatureType == NO_CHAIN_ID_TYPE) {... */\n tag_122\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2690:2729 SequenceNoChainIdSig.subdigest(_digest) */\n tag_119\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2721:2728 _digest */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2690:2720 SequenceNoChainIdSig.subdigest */\n tag_124\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2690:2729 SequenceNoChainIdSig.subdigest(_digest) */\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2587:2906 if (signatureType == NO_CHAIN_ID_TYPE) {... */\n tag_122:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2916:2945 signatureType == CHAINED_TYPE */\n 0xfd00000000000000000000000000000000000000000000000000000000000000\n 0xff00000000000000000000000000000000000000000000000000000000000000\n dup3\n and\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2912:3108 if (signatureType == CHAINED_TYPE) {... */\n tag_126\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3066:3101 chainedRecover(_digest, _signature) */\n tag_127\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3081:3088 _digest */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3090:3100 _signature */\n dup10\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3066:3080 chainedRecover */\n tag_128\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3066:3101 chainedRecover(_digest, _signature) */\n jump\t// in\n tag_127:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3059:3101 return chainedRecover(_digest, _signature) */\n swap6\n pop\n swap6\n pop\n swap6\n pop\n swap6\n pop\n swap6\n pop\n pop\n jump(tag_110)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":2912:3108 if (signatureType == CHAINED_TYPE) {... */\n tag_126:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3121:3156 InvalidSignatureType(signatureType) */\n mload(0x40)\n 0x6085cd8200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n /* \"#utility.yul\":11707:11773 */\n 0xff00000000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":11695:11774 */\n dup3\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3121:3156 InvalidSignatureType(signatureType) */\n 0x04\n dup3\n add\n /* \"#utility.yul\":11677:11775 */\n mstore\n /* \"#utility.yul\":11650:11668 */\n 0x24\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3121:3156 InvalidSignatureType(signatureType) */\n tag_93\n /* \"#utility.yul\":11533:11781 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":1675:3161 function signatureRecovery(... */\n tag_110:\n swap4\n swap8\n swap3\n swap7\n pop\n swap4\n pop\n swap4\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":938:1094 function readNonce(uint256 _space) public virtual view returns (uint256) {... */\n tag_66:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1002:1009 uint256 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1032:1088 ModuleStorage.readBytes32Map(NONCE_KEY, bytes32(_space)) */\n tag_80\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":453:519 0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e */\n 0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1080:1086 _space */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1032:1060 ModuleStorage.readBytes32Map */\n tag_133\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1032:1088 ModuleStorage.readBytes32Map(NONCE_KEY, bytes32(_space)) */\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":456:732 function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {... */\n tag_72:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":550:562 address addr */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":178:188 msg.sender */\n caller\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":200:204 this */\n address\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":178:205 msg.sender != address(this) */\n eq\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":174:268 if (msg.sender != address(this)) {... */\n tag_135\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n mload(0x40)\n 0xe125889400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":235:245 msg.sender */\n caller\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n 0x04\n dup3\n add\n /* \"#utility.yul\":7319:7353 */\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":255:259 this */\n address\n /* \"#utility.yul\":7369:7387 */\n 0x24\n dup3\n add\n /* \"#utility.yul\":7362:7405 */\n mstore\n /* \"#utility.yul\":7231:7249 */\n 0x44\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n tag_93\n /* \"#utility.yul\":7084:7411 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":174:268 if (msg.sender != address(this)) {... */\n tag_135:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":631:636 _code */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":625:637 mload(_code) */\n mload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":620:622 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":613:618 _code */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":609:623 add(_code, 32) */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":596:607 callvalue() */\n callvalue\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":589:638 create(callvalue(), add(_code, 32), mload(_code)) */\n create\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":581:638 addr := create(callvalue(), add(_code, 32), mload(_code)) */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":649:667 addr == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup2\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":645:695 if (addr == address(0)) revert CreateFailed(_code) */\n tag_138\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":689:694 _code */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":676:695 CreateFailed(_code) */\n mload(0x40)\n 0x0d25719100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap2\n swap1\n tag_140\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":645:695 if (addr == address(0)) revert CreateFailed(_code) */\n tag_138:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":706:727 CreatedContract(addr) */\n mload(0x40)\n /* \"#utility.yul\":6753:6795 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":6741:6796 */\n dup3\n and\n /* \"#utility.yul\":6723:6797 */\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":706:727 CreatedContract(addr) */\n 0xa506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c\n swap1\n /* \"#utility.yul\":6711:6713 */\n 0x20\n /* \"#utility.yul\":6696:6714 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":706:727 CreatedContract(addr) */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":456:732 function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":670:757 function nonce() external virtual view returns (uint256) {... */\n tag_77:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":718:725 uint256 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":740:752 readNonce(0) */\n tag_143\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":750:751 0 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":740:749 readNonce */\n tag_66\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":740:752 readNonce(0) */\n jump\t// in\n tag_143:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":733:752 return readNonce(0) */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":670:757 function nonce() external virtual view returns (uint256) {... */\n swap1\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":942:1175 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n tag_81:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1028:1032 bool */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1044:1092 _interfaceID == type(IModuleCreator).interfaceId */\n 0x6ffbd45100000000000000000000000000000000000000000000000000000000\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n dup4\n and\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1040:1120 if (_interfaceID == type(IModuleCreator).interfaceId) {... */\n tag_145\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1109:1113 true */\n 0x01\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":942:1175 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n swap1\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1040:1120 if (_interfaceID == type(IModuleCreator).interfaceId) {... */\n tag_145:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1133:1170 super.supportsInterface(_interfaceID) */\n tag_80\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1157:1169 _interfaceID */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1133:1156 super.supportsInterface */\n tag_147\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1133:1170 super.supportsInterface(_interfaceID) */\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3480:3866 function _signatureValidation(... */\n tag_84:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3611:3623 bool isValid */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3629:3646 bytes32 subdigest */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3657:3674 uint256 threshold */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3676:3690 uint256 weight */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3692:3709 bytes32 imageHash */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3760:3798 signatureRecovery(_digest, _signature) */\n tag_149\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3778:3785 _digest */\n dup9\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3787:3797 _signature */\n dup9\n dup9\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3760:3777 signatureRecovery */\n tag_59\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3760:3798 signatureRecovery(_digest, _signature) */\n jump\t// in\n tag_149:\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3715:3798 (threshold, weight, imageHash, subdigest,) = signatureRecovery(_digest, _signature) */\n swap7\n pop\n swap2\n swap5\n pop\n swap3\n pop\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3814:3833 weight >= threshold */\n dup3\n dup3\n lt\n dup1\n iszero\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3814:3861 weight >= threshold && _isValidImage(imageHash) */\n tag_151\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2779:2783 true */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3837:3861 _isValidImage(imageHash) */\n tag_151:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3804:3861 isValid = weight >= threshold && _isValidImage(imageHash) */\n swap5\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3651:3866 {... */\n pop\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":3480:3866 function _signatureValidation(... */\n swap4\n pop\n swap4\n swap2\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2824:2917 function _updateImageHash(bytes32) internal override virtual {... */\n tag_97:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2898:2912 NotSupported() */\n mload(0x40)\n 0xa038794000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1173:1397 function subdigest(... */\n tag_102:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1279:1386 abi.encodePacked(... */\n mload(0x40)\n /* \"#utility.yul\":12792:12858 */\n 0x1901000000000000000000000000000000000000000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1279:1386 abi.encodePacked(... */\n 0x20\n dup3\n add\n /* \"#utility.yul\":12780:12859 */\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1325:1338 block.chainid */\n chainid\n /* \"#utility.yul\":12875:12886 */\n 0x22\n dup3\n add\n /* \"#utility.yul\":12868:12895 */\n mstore\n /* \"#utility.yul\":12946:13012 */\n 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1356:1360 this */\n address\n /* \"#utility.yul\":12933:12935 */\n 0x60\n /* \"#utility.yul\":12929:12944 */\n shl\n /* \"#utility.yul\":12925:13013 */\n and\n /* \"#utility.yul\":12911:12923 */\n 0x42\n dup3\n add\n /* \"#utility.yul\":12904:13014 */\n mstore\n /* \"#utility.yul\":13030:13042 */\n 0x56\n dup2\n add\n /* \"#utility.yul\":13023:13051 */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1240:1247 bytes32 */\n 0x00\n swap1\n /* \"#utility.yul\":13067:13079 */\n 0x76\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1279:1386 abi.encodePacked(... */\n tag_155:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1262:1392 keccak256(... */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1255:1392 return keccak256(... */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1173:1397 function subdigest(... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1710:2544 function _executeGuest(... */\n tag_104:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1847:1851 _txs */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1832:1844 uint256 size */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1864:2540 for (uint256 i = 0; i < size; i++) {... */\n tag_158:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1888:1892 size */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1884:1885 i */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1884:1892 i < size */\n lt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1864:2540 for (uint256 i = 0; i < size; i++) {... */\n iszero\n tag_159\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1907:1939 Transaction calldata transaction */\n calldatasize\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1942:1946 _txs */\n dup5\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1947:1948 i */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1942:1949 _txs[i] */\n dup2\n dup2\n lt\n tag_162\n jumpi\n tag_162\n tag_113\n jump\t// in\n tag_162:\n swap1\n pop\n 0x20\n mul\n dup2\n add\n swap1\n tag_163\n swap2\n swap1\n tag_164\n jump\t// in\n tag_163:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1907:1949 Transaction calldata transaction = _txs[i] */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1962:1986 transaction.delegateCall */\n tag_165\n 0x20\n dup3\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1907:1949 Transaction calldata transaction = _txs[i] */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1962:1986 transaction.delegateCall */\n tag_166\n jump\t// in\n tag_165:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1958:2020 if (transaction.delegateCall) revert DelegateCallNotAllowed(i) */\n iszero\n tag_167\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1995:2020 DelegateCallNotAllowed(i) */\n mload(0x40)\n 0x230d1ccc00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n dup2\n add\n /* \"#utility.yul\":2778:2803 */\n dup4\n swap1\n mstore\n /* \"#utility.yul\":2751:2769 */\n 0x24\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1995:2020 DelegateCallNotAllowed(i) */\n tag_93\n /* \"#utility.yul\":2632:2809 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1958:2020 if (transaction.delegateCall) revert DelegateCallNotAllowed(i) */\n tag_167:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2048:2068 transaction.gasLimit */\n 0x40\n dup2\n add\n calldataload\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2080:2089 gasleft() */\n gas\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2080:2100 gasleft() < gasLimit */\n lt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2076:2145 if (gasleft() < gasLimit) revert NotEnoughGas(i, gasLimit, gasleft()) */\n iszero\n tag_169\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2122:2123 i */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2125:2133 gasLimit */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2135:2144 gasleft() */\n gas\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2109:2145 NotEnoughGas(i, gasLimit, gasleft()) */\n mload(0x40)\n 0x2bb3e3ba00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n dup2\n add\n /* \"#utility.yul\":13869:13894 */\n swap4\n swap1\n swap4\n mstore\n /* \"#utility.yul\":13910:13928 */\n 0x24\n dup4\n add\n /* \"#utility.yul\":13903:13937 */\n swap2\n swap1\n swap2\n mstore\n /* \"#utility.yul\":13953:13971 */\n 0x44\n dup3\n add\n /* \"#utility.yul\":13946:13980 */\n mstore\n /* \"#utility.yul\":13842:13860 */\n 0x64\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2109:2145 NotEnoughGas(i, gasLimit, gasleft()) */\n tag_93\n /* \"#utility.yul\":13667:13986 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2076:2145 if (gasleft() < gasLimit) revert NotEnoughGas(i, gasLimit, gasleft()) */\n tag_169:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2154:2166 bool success */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2169:2317 LibOptim.call(... */\n tag_172\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2192:2210 transaction.target */\n tag_173\n 0x80\n dup6\n add\n 0x60\n dup7\n add\n tag_174\n jump\t// in\n tag_173:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2220:2237 transaction.value */\n 0x80\n dup6\n add\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2247:2260 gasLimit == 0 */\n dup5\n iszero\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2247:2283 gasLimit == 0 ? gasleft() : gasLimit */\n tag_175\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2275:2283 gasLimit */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2247:2283 gasLimit == 0 ? gasleft() : gasLimit */\n jump(tag_176)\n tag_175:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2263:2272 gasleft() */\n gas\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2247:2283 gasLimit == 0 ? gasleft() : gasLimit */\n tag_176:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2293:2309 transaction.data */\n tag_177\n 0xa0\n dup9\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2293:2304 transaction */\n dup9\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2293:2309 transaction.data */\n tag_178\n jump\t// in\n tag_177:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2169:2182 LibOptim.call */\n tag_179\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2169:2317 LibOptim.call(... */\n jump\t// in\n tag_172:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2154:2317 bool success = LibOptim.call(... */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2330:2337 success */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2326:2534 if (success) {... */\n iszero\n tag_180\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2365:2372 _txHash */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2354:2376 TxExecuted(_txHash, i) */\n 0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2374:2375 i */\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2354:2376 TxExecuted(_txHash, i) */\n mload(0x40)\n tag_181\n swap2\n /* \"#utility.yul\":2778:2803 */\n dup2\n mstore\n /* \"#utility.yul\":2766:2768 */\n 0x20\n /* \"#utility.yul\":2751:2769 */\n add\n swap1\n /* \"#utility.yul\":2632:2809 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2354:2376 TxExecuted(_txHash, i) */\n tag_181:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2326:2534 if (success) {... */\n jump(tag_183)\n tag_180:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2401:2525 _revertBytes(... */\n tag_183\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2425:2450 transaction.revertOnError */\n tag_184\n 0x40\n dup6\n add\n 0x20\n dup7\n add\n tag_166\n jump\t// in\n tag_184:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2462:2469 _txHash */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2481:2482 i */\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2494:2515 LibOptim.returnData() */\n tag_185\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2494:2513 LibOptim.returnData */\n tag_186\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2494:2515 LibOptim.returnData() */\n jump\t// in\n tag_185:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2401:2413 _revertBytes */\n tag_187\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":2401:2525 _revertBytes(... */\n jump\t// in\n tag_183:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1899:2540 {... */\n pop\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1894:1897 i++ */\n dup1\n dup1\n tag_188\n swap1\n tag_189\n jump\t// in\n tag_188:\n swap2\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1864:2540 for (uint256 i = 0; i < size; i++) {... */\n jump(tag_158)\n tag_159:\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1799:2544 {... */\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":1710:2544 function _executeGuest(... */\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8892:9534 function recover(... */\n tag_117:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8996:9013 uint256 threshold */\n 0x00\n dup1\n dup1\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9131:9172 recoverBranch(_subdigest, _signature[6:]) */\n tag_191\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9145:9155 _subdigest */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9157:9171 _signature[6:] */\n tag_192\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9157:9167 _signature */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9168:9169 6 */\n 0x06\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9157:9167 _signature */\n dup2\n dup12\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9157:9171 _signature[6:] */\n tag_193\n jump\t// in\n tag_192:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9131:9144 recoverBranch */\n tag_194\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9131:9172 recoverBranch(_subdigest, _signature[6:]) */\n jump\t// in\n tag_191:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":622:631 bytes32 c */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n swap1\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1585:1610 calldataload(data.offset) */\n dup8\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1626:1629 240 */\n 0xf0\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1622:1636 shr(240, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n dup2\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n dup1\n dup5\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n dup5\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9379:9380 2 */\n 0x02\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":2034:2057 add(index, data.offset) */\n swap1\n swap11\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":2021:2058 calldataload(add(index, data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":2074:2077 224 */\n 0xe0\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":2070:2084 shr(224, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n swap1\n dup2\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap9\n swap1\n swap2\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1622:1636 shr(240, word) */\n swap1\n swap10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":9109:9172 (weight, imageHash) = recoverBranch(_subdigest, _signature[6:]) */\n swap2\n swap9\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":2070:2084 shr(224, word) */\n swap6\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8892:9534 function recover(... */\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":648:910 function recover(... */\n tag_121:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":752:769 uint256 threshold */\n 0x00\n dup1\n dup1\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":854:905 SequenceBaseSig.recover(_subdigest, _signature[1:]) */\n tag_203\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":878:888 _subdigest */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":890:904 _signature[1:] */\n tag_204\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":890:900 _signature */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":901:902 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":890:900 _signature */\n dup2\n dup12\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":890:904 _signature[1:] */\n tag_193\n jump\t// in\n tag_204:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":854:877 SequenceBaseSig.recover */\n tag_117\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":854:905 SequenceBaseSig.recover(_subdigest, _signature[1:]) */\n jump\t// in\n tag_203:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":847:905 return SequenceBaseSig.recover(_subdigest, _signature[1:]) */\n swap4\n pop\n swap4\n pop\n swap4\n pop\n swap4\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":648:910 function recover(... */\n swap4\n pop\n swap4\n pop\n swap4\n pop\n swap4\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":404:617 function subdigest(bytes32 _digest) internal view returns (bytes32) {... */\n tag_124:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":502:606 abi.encodePacked(... */\n mload(0x40)\n /* \"#utility.yul\":12792:12858 */\n 0x1901000000000000000000000000000000000000000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":502:606 abi.encodePacked(... */\n 0x20\n dup3\n add\n /* \"#utility.yul\":12780:12859 */\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":463:470 bytes32 */\n 0x00\n /* \"#utility.yul\":12875:12886 */\n 0x22\n dup3\n add\n /* \"#utility.yul\":12868:12895 */\n dup2\n swap1\n mstore\n /* \"#utility.yul\":12946:13012 */\n 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":576:580 this */\n address\n /* \"#utility.yul\":12933:12935 */\n 0x60\n /* \"#utility.yul\":12929:12944 */\n shl\n /* \"#utility.yul\":12925:13013 */\n and\n /* \"#utility.yul\":12911:12923 */\n 0x42\n dup4\n add\n /* \"#utility.yul\":12904:13014 */\n mstore\n /* \"#utility.yul\":13030:13042 */\n 0x56\n dup3\n add\n /* \"#utility.yul\":13023:13051 */\n dup4\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":463:470 bytes32 */\n swap1\n /* \"#utility.yul\":13067:13079 */\n 0x76\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":502:606 abi.encodePacked(... */\n tag_155\n /* \"#utility.yul\":12494:13085 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2320:4379 function chainedRecover(... */\n tag_128:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2428:2445 uint256 threshold */\n 0x00\n dup1\n dup1\n dup1\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3378:3392 add(_index, 3) */\n 0x04\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2563:2564 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3290:3315 add(_index, _data.offset) */\n dup9\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3277:3316 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3336:3339 232 */\n 0xe8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3332:3346 shr(232, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2428:2445 uint256 threshold */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2768:2784 sigSize + rindex */\n tag_210\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3378:3392 add(_index, 3) */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3332:3346 shr(232, word) */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2768:2784 sigSize + rindex */\n tag_211\n jump\t// in\n tag_210:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2750:2784 uint256 nrindex = sigSize + rindex */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2883:2955 signatureRecovery(... */\n tag_212\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2908:2915 _digest */\n dup12\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2923:2949 _signature[rindex:nrindex] */\n tag_58\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2750:2784 uint256 nrindex = sigSize + rindex */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2934:2940 rindex */\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2923:2933 _signature */\n dup14\n dup16\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2923:2949 _signature[rindex:nrindex] */\n tag_193\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2883:2955 signatureRecovery(... */\n tag_212:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2791:2955 (... */\n swap4\n swap12\n pop\n swap2\n swap10\n pop\n swap8\n pop\n swap6\n pop\n swap4\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2966:2984 weight < threshold */\n dup8\n dup8\n lt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2962:3080 if (weight < threshold) {... */\n iszero\n tag_214\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3027:3053 _signature[rindex:nrindex] */\n tag_215\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3045:3052 nrindex */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3038:3044 rindex */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3027:3037 _signature */\n dup12\n dup14\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3027:3053 _signature[rindex:nrindex] */\n tag_193\n jump\t// in\n tag_215:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3055:3064 threshold */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3066:3072 weight */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3001:3073 LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight) */\n mload(0x40)\n 0xb006aba000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_217\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2962:3080 if (weight < threshold) {... */\n tag_214:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3095:3102 nrindex */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3086:3102 rindex = nrindex */\n swap3\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3283:4375 while (rindex < _signature.length) {... */\n tag_218:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3290:3316 rindex < _signature.length */\n dup9\n dup4\n lt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3283:4375 while (rindex < _signature.length) {... */\n iszero\n tag_219\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3390:3391 3 */\n 0x03\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3378:3392 add(_index, 3) */\n dup4\n add\n swap3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3290:3315 add(_index, _data.offset) */\n dup11\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3277:3316 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3336:3339 232 */\n 0xe8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3332:3346 shr(232, word) */\n shr\n swap2\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3444:3460 sigSize + rindex */\n tag_221\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3378:3392 add(_index, 3) */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3332:3346 shr(232, word) */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3444:3460 sigSize + rindex */\n tag_211\n jump\t// in\n tag_221:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3434:3460 nrindex = sigSize + rindex */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3469:3491 uint256 nextCheckpoint */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3687:3792 signatureRecovery(... */\n tag_222\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3714:3748 _hashSetImageHashStruct(imageHash) */\n tag_223\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3738:3747 imageHash */\n dup9\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3714:3737 _hashSetImageHashStruct */\n tag_224\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3714:3748 _hashSetImageHashStruct(imageHash) */\n jump\t// in\n tag_223:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3758:3768 _signature */\n dup13\n dup13\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3769:3775 rindex */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3758:3784 _signature[rindex:nrindex] */\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3776:3783 nrindex */\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3758:3784 _signature[rindex:nrindex] */\n swap3\n tag_58\n swap4\n swap3\n swap2\n swap1\n tag_193\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3687:3792 signatureRecovery(... */\n tag_222:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3500:3792 (... */\n swap4\n swap13\n pop\n swap2\n swap11\n pop\n swap9\n pop\n swap1\n swap2\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3833:3851 weight < threshold */\n dup9\n dup9\n lt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3829:3951 if (weight < threshold) {... */\n iszero\n tag_226\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3896:3922 _signature[rindex:nrindex] */\n tag_227\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3914:3921 nrindex */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3907:3913 rindex */\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3896:3906 _signature */\n dup13\n dup15\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3896:3922 _signature[rindex:nrindex] */\n tag_193\n jump\t// in\n tag_227:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3924:3933 threshold */\n dup11\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3935:3941 weight */\n dup11\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3870:3942 LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight) */\n mload(0x40)\n 0xb006aba000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_217\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3829:3951 if (weight < threshold) {... */\n tag_226:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4216:4226 checkpoint */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4198:4212 nextCheckpoint */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4198:4226 nextCheckpoint >= checkpoint */\n lt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4194:4309 if (nextCheckpoint >= checkpoint) {... */\n tag_229\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4245:4300 WrongChainedCheckpointOrder(nextCheckpoint, checkpoint) */\n mload(0x40)\n 0x37daf62b00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n dup2\n add\n /* \"#utility.yul\":16193:16218 */\n dup3\n swap1\n mstore\n /* \"#utility.yul\":16234:16252 */\n 0x24\n dup2\n add\n /* \"#utility.yul\":16227:16261 */\n dup7\n swap1\n mstore\n /* \"#utility.yul\":16166:16184 */\n 0x44\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4245:4300 WrongChainedCheckpointOrder(nextCheckpoint, checkpoint) */\n tag_93\n /* \"#utility.yul\":16019:16267 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4194:4309 if (nextCheckpoint >= checkpoint) {... */\n tag_229:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4330:4344 nextCheckpoint */\n swap4\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":4361:4368 nrindex */\n swap2\n pop\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":3283:4375 while (rindex < _signature.length) {... */\n jump(tag_218)\n tag_219:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2540:4379 {... */\n pop\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":2320:4379 function chainedRecover(... */\n swap4\n swap8\n swap3\n swap7\n pop\n swap4\n pop\n swap4\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":490:677 function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) {... */\n tag_133:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":568:579 bytes32 val */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":587:598 bytes32 key */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":622:626 _key */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":628:635 _subKey */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":611:636 abi.encode(_key, _subKey) */\n add(0x20, mload(0x40))\n tag_233\n swap3\n swap2\n swap1\n /* \"#utility.yul\":16193:16218 */\n swap2\n dup3\n mstore\n /* \"#utility.yul\":16249:16251 */\n 0x20\n /* \"#utility.yul\":16234:16252 */\n dup3\n add\n /* \"#utility.yul\":16227:16261 */\n mstore\n /* \"#utility.yul\":16181:16183 */\n 0x40\n /* \"#utility.yul\":16166:16184 */\n add\n swap1\n /* \"#utility.yul\":16019:16267 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":611:636 abi.encode(_key, _subKey) */\n tag_233:\n 0x40\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n dup2\n dup5\n sub\n add\n dup2\n mstore\n swap2\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":601:637 keccak256(abi.encode(_key, _subKey)) */\n dup1\n mload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":611:636 abi.encode(_key, _subKey) */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":601:637 keccak256(abi.encode(_key, _subKey)) */\n swap1\n swap2\n add\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":661:671 sload(key) */\n sload\n swap5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":490:677 function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) {... */\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4140:4371 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n tag_147:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4226:4230 bool */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4242:4288 _interfaceID == type(IModuleCalls).interfaceId */\n 0xe4a77bbc00000000000000000000000000000000000000000000000000000000\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n dup4\n and\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4238:4316 if (_interfaceID == type(IModuleCalls).interfaceId) {... */\n tag_236\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4305:4309 true */\n 0x01\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4140:4371 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n swap1\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4238:4316 if (_interfaceID == type(IModuleCalls).interfaceId) {... */\n tag_236:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4329:4366 super.supportsInterface(_interfaceID) */\n tag_80\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4353:4365 _interfaceID */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4329:4352 super.supportsInterface */\n tag_238\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":4329:4366 super.supportsInterface(_interfaceID) */\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1525:1878 function call(... */\n tag_179:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1640:1646 bool r */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1688:1692 0x40 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1682:1693 mload(0x40) */\n mload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1732:1744 _data.length */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1718:1730 _data.offset */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1713:1716 tmp */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1700:1745 calldatacopy(tmp, _data.offset, _data.length) */\n calldatacopy\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1859:1860 0 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1848:1849 0 */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1826:1838 _data.length */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1813:1816 tmp */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1799:1803 _val */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1786:1789 _to */\n dup12\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1772:1776 _gas */\n dup11\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1758:1868 call(... */\n call\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1753:1868 r := call(... */\n swap8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1525:1878 function call(... */\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":852:1123 function returnData() internal pure returns (bytes memory r) {... */\n tag_186:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":897:911 bytes memory r */\n 0x60\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":948:964 returndatasize() */\n returndatasize\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":982:986 0x40 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":976:987 mload(0x40) */\n mload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":971:987 r := mload(0x40) */\n swap2\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1014:1016 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1011:1012 r */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1007:1017 add(r, 32) */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1048:1052 size */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1041:1046 start */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1037:1053 add(start, size) */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1031:1035 0x40 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1024:1054 mstore(0x40, add(start, size)) */\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1071:1075 size */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1068:1069 r */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1061:1076 mstore(r, size) */\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1108:1112 size */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1105:1106 0 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1098:1103 start */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":1083:1113 returndatacopy(start, 0, size) */\n returndatacopy\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":852:1123 function returnData() internal pure returns (bytes memory r) {... */\n swap1\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3644:3930 function _revertBytes(... */\n tag_187:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3781:3795 _revertOnError */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3777:3926 if (_revertOnError) {... */\n iszero\n tag_243\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3849:3856 _reason */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3843:3857 mload(_reason) */\n mload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3836:3840 0x20 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3827:3834 _reason */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3823:3841 add(_reason, 0x20) */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3816:3858 revert(add(_reason, 0x20), mload(_reason)) */\n revert\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3777:3926 if (_revertOnError) {... */\n tag_243:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3894:3901 _txHash */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3885:3919 TxFailed(_txHash, _index, _reason) */\n 0xab46c69f7f32e1bf09b0725853da82a211e5402a0600296ab499a2fb5ea3b419\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3903:3909 _index */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3911:3918 _reason */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3885:3919 TxFailed(_txHash, _index, _reason) */\n mload(0x40)\n tag_245\n swap3\n swap2\n swap1\n tag_246\n jump\t// in\n tag_245:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":3644:3930 function _revertBytes(... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3525:8233 function recoverBranch(... */\n tag_194:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3635:3649 uint256 weight */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3655:3667 bytes32 root */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3696:3710 uint256 rindex */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3765:8223 while (rindex < _signature.length) {... */\n tag_248:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3772:3798 rindex < _signature.length */\n dup4\n dup2\n lt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3765:8223 while (rindex < _signature.length) {... */\n iszero\n tag_249\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1475:1476 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1463:1477 add(_index, 1) */\n dup2\n add\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1390:1415 add(_index, _data.offset) */\n dup6\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1377:1416 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1432:1435 248 */\n 0xf8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1428:1442 shr(248, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3923:3943 flag == FLAG_ADDRESS */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n dup2\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3919:4321 if (flag == FLAG_ADDRESS) {... */\n tag_252\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2205:2207 21 */\n 0x15\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2193:2208 add(_index, 21) */\n dup3\n add\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2046:2071 add(_index, _data.offset) */\n dup7\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2033:2072 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2088:2091 248 */\n 0xf8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2084:2098 shr(248, word) */\n dup2\n swap1\n shr\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2118:2120 88 */\n 0x58\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2114:2127 shr(88, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2129:2171 0xffffffffffffffffffffffffffffffffffffffff */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2110:2172 and(shr(88, word), 0xffffffffffffffffffffffffffffffffffffffff) */\n dup2\n and\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1873:1896 uint256(_weight) << 160 */\n 0xff0000000000000000000000000000000000000000\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1873:1922 uint256(_weight) << 160 | uint256(uint160(_addr)) */\n dup2\n or\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4231:4235 root */\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4231:4290 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n tag_257\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4286:4290 node */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4231:4290 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n jump(tag_259)\n tag_257:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":622:631 bytes32 c */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n dup7\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap1\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4252:4283 LibOptim.fkeccak256(root, node) */\n tag_259:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4224:4290 root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n swap6\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4302:4310 continue */\n pop\n pop\n pop\n pop\n jump(tag_248)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3919:4321 if (flag == FLAG_ADDRESS) {... */\n tag_252:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4335:4339 flag */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4331:5010 if (flag == FLAG_SIGNATURE) {... */\n tag_260\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1475:1476 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1463:1477 add(_index, 1) */\n dup3\n add\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1390:1415 add(_index, _data.offset) */\n dup7\n dup2\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1377:1416 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1432:1435 248 */\n 0xf8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1428:1442 shr(248, word) */\n shr\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4560:4571 rindex + 66 */\n 0x43\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4396:4412 uint8 addrWeight */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4598:4670 SignatureValidator.recoverSigner(_subdigest, _signature[rindex:nrindex]) */\n tag_262\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4631:4641 _subdigest */\n dup11\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4643:4669 _signature[rindex:nrindex] */\n tag_263\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4560:4571 rindex + 66 */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1463:1477 add(_index, 1) */\n dup9\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4643:4653 _signature */\n dup13\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1390:1415 add(_index, _data.offset) */\n dup15\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4643:4669 _signature[rindex:nrindex] */\n tag_193\n jump\t// in\n tag_263:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4598:4630 SignatureValidator.recoverSigner */\n tag_264\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4598:4670 SignatureValidator.recoverSigner(_subdigest, _signature[rindex:nrindex]) */\n jump\t// in\n tag_262:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4764:4784 weight += addrWeight */\n 0xff\n dup5\n and\n swap8\n swap1\n swap8\n add\n swap7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4691:4698 nrindex */\n swap2\n swap5\n pop\n dup5\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4764:4784 weight += addrWeight */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1893:1896 160 */\n 0xa0\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1873:1896 uint256(_weight) << 160 */\n dup4\n swap1\n shl\n 0xff0000000000000000000000000000000000000000\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1899:1922 uint256(uint160(_addr)) */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup3\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1873:1922 uint256(_weight) << 160 | uint256(uint160(_addr)) */\n or\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4920:4924 root */\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4920:4979 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n tag_266\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4975:4979 node */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4920:4979 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n jump(tag_268)\n tag_266:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":622:631 bytes32 c */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n dup8\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap1\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4941:4972 LibOptim.fkeccak256(root, node) */\n tag_268:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4913:4979 root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n swap7\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4991:4999 continue */\n pop\n pop\n pop\n pop\n pop\n jump(tag_248)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":4331:5010 if (flag == FLAG_SIGNATURE) {... */\n tag_260:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":625:626 2 */\n 0x02\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5024:5028 flag */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5024:5054 flag == FLAG_DYNAMIC_SIGNATURE */\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5020:5952 if (flag == FLAG_DYNAMIC_SIGNATURE) {... */\n tag_269\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5104:5120 uint8 addrWeight */\n 0x00\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2046:2071 add(_index, _data.offset) */\n dup8\n dup5\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2033:2072 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2088:2091 248 */\n 0xf8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2084:2098 shr(248, word) */\n dup2\n swap1\n shr\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2118:2120 88 */\n 0x58\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2114:2127 shr(88, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2129:2171 0xffffffffffffffffffffffffffffffffffffffff */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2110:2172 and(shr(88, word), 0xffffffffffffffffffffffffffffffffffffffff) */\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2205:2207 21 */\n 0x15\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2193:2208 add(_index, 21) */\n dup7\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5146:5210 (addrWeight, addr, rindex) = _signature.readUint8Address(rindex) */\n swap6\n pop\n swap1\n swap3\n pop\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5256:5268 uint256 size */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3290:3315 add(_index, _data.offset) */\n dup9\n dup6\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3277:3316 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3336:3339 232 */\n 0xe8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3332:3346 shr(232, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3390:3391 3 */\n 0x03\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3378:3392 add(_index, 3) */\n dup7\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5280:5326 (size, rindex) = _signature.readUint24(rindex) */\n dup2\n 0xffffff\n and\n swap2\n pop\n dup1\n swap7\n pop\n dup2\n swap3\n pop\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5380:5395 uint256 nrindex */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5407:5411 size */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5398:5404 rindex */\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5398:5411 rindex + size */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5380:5411 uint256 nrindex = rindex + size */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5428:5509 SignatureValidator.isValidSignature(_subdigest, addr, _signature[rindex:nrindex]) */\n tag_272\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5464:5474 _subdigest */\n dup12\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5476:5480 addr */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5482:5492 _signature */\n dup13\n dup13\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5493:5499 rindex */\n dup11\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5482:5508 _signature[rindex:nrindex] */\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5500:5507 nrindex */\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5482:5508 _signature[rindex:nrindex] */\n swap3\n tag_273\n swap4\n swap3\n swap2\n swap1\n tag_193\n jump\t// in\n tag_273:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5428:5463 SignatureValidator.isValidSignature */\n tag_274\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5428:5509 SignatureValidator.isValidSignature(_subdigest, addr, _signature[rindex:nrindex]) */\n jump\t// in\n tag_272:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5423:5613 if (!SignatureValidator.isValidSignature(_subdigest, addr, _signature[rindex:nrindex])) {... */\n tag_275\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5555:5565 _subdigest */\n dup11\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5567:5571 addr */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5573:5599 _signature[rindex:nrindex] */\n tag_276\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5591:5598 nrindex */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5584:5590 rindex */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5573:5583 _signature */\n dup14\n dup16\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5573:5599 _signature[rindex:nrindex] */\n tag_193\n jump\t// in\n tag_276:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5532:5600 InvalidNestedSignature(_subdigest, addr, _signature[rindex:nrindex]) */\n mload(0x40)\n 0x9a94623200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_278\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5423:5613 if (!SignatureValidator.isValidSignature(_subdigest, addr, _signature[rindex:nrindex])) {... */\n tag_275:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5706:5726 weight += addrWeight */\n 0xff\n dup5\n and\n swap8\n swap1\n swap8\n add\n swap7\n swap5\n pop\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1893:1896 160 */\n 0xa0\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1873:1896 uint256(_weight) << 160 */\n dup5\n swap1\n shl\n 0xff0000000000000000000000000000000000000000\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1899:1922 uint256(uint160(_addr)) */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup5\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":1873:1922 uint256(_weight) << 160 | uint256(uint160(_addr)) */\n or\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5862:5866 root */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5862:5921 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n tag_280\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5917:5921 node */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5862:5921 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n jump(tag_282)\n tag_280:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":622:631 bytes32 c */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n dup9\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap1\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5883:5914 LibOptim.fkeccak256(root, node) */\n tag_282:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5855:5921 root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n swap8\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5933:5941 continue */\n pop\n pop\n pop\n pop\n pop\n pop\n jump(tag_248)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5020:5952 if (flag == FLAG_DYNAMIC_SIGNATURE) {... */\n tag_269:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":667:668 3 */\n 0x03\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5966:5970 flag */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5966:5983 flag == FLAG_NODE */\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5962:6205 if (flag == FLAG_NODE) {... */\n tag_283\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":4550:4552 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":4536:4553 add(_pointer, 32) */\n dup3\n add\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":4487:4514 add(_pointer, _data.offset) */\n dup7\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":4474:4515 calldataload(add(_pointer, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6115:6119 root */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6115:6174 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n tag_286\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6170:6174 node */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6115:6174 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n jump(tag_288)\n tag_286:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":622:631 bytes32 c */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n dup5\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap1\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6136:6167 LibOptim.fkeccak256(root, node) */\n tag_288:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6108:6174 root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n swap4\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6186:6194 continue */\n pop\n pop\n jump(tag_248)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":5962:6205 if (flag == FLAG_NODE) {... */\n tag_283:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":711:712 4 */\n 0x04\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6219:6223 flag */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6219:6238 flag == FLAG_BRANCH */\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6215:6687 if (flag == FLAG_BRANCH) {... */\n tag_289\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3390:3391 3 */\n 0x03\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3378:3392 add(_index, 3) */\n dup1\n dup4\n add\n swap3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3290:3315 add(_index, _data.offset) */\n dup8\n dup2\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3277:3316 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3336:3339 232 */\n 0xe8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3332:3346 shr(232, word) */\n shr\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6409:6422 rindex + size */\n swap1\n dup3\n add\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6309:6321 uint256 size */\n 0x00\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6494:6547 recoverBranch(_subdigest, _signature[rindex:nrindex]) */\n tag_291\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6508:6518 _subdigest */\n dup12\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6520:6546 _signature[rindex:nrindex] */\n tag_192\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6409:6422 rindex + size */\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3378:3392 add(_index, 3) */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6520:6530 _signature */\n dup14\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3290:3315 add(_index, _data.offset) */\n dup16\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6520:6546 _signature[rindex:nrindex] */\n tag_193\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6494:6547 recoverBranch(_subdigest, _signature[rindex:nrindex]) */\n tag_291:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":622:631 bytes32 c */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n swap9\n dup10\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap1\n swap8\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6560:6577 weight += nweight */\n swap7\n swap1\n swap8\n add\n swap7\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6649:6656 nrindex */\n swap1\n swap4\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6668:6676 continue */\n tag_248\n swap3\n pop\n pop\n pop\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6215:6687 if (flag == FLAG_BRANCH) {... */\n tag_289:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":802:803 6 */\n 0x06\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6701:6705 flag */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6701:6720 flag == FLAG_NESTED */\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6697:7676 if (flag == FLAG_NESTED) {... */\n tag_294\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6864:6886 uint256 externalWeight */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1390:1415 add(_index, _data.offset) */\n dup3\n dup8\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1377:1416 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1432:1435 248 */\n 0xf8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1428:1442 shr(248, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1475:1476 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":1463:1477 add(_index, 1) */\n dup5\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6898:6953 (externalWeight, rindex) = _signature.readUint8(rindex) */\n swap4\n pop\n 0xff\n and\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6966:6991 uint256 internalThreshold */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2699:2724 add(_index, _data.offset) */\n dup8\n dup5\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2686:2725 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2745:2748 240 */\n 0xf0\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2741:2755 shr(240, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2797:2798 2 */\n 0x02\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":2785:2799 add(_index, 2) */\n dup6\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7003:7062 (internalThreshold, rindex) = _signature.readUint16(rindex) */\n swap5\n pop\n 0xffff\n and\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7075:7087 uint256 size */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3290:3315 add(_index, _data.offset) */\n dup9\n dup6\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3277:3316 calldataload(add(_index, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3336:3339 232 */\n 0xe8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3332:3346 shr(232, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3390:3391 3 */\n 0x03\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":3378:3392 add(_index, 3) */\n dup7\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7099:7145 (size, rindex) = _signature.readUint24(rindex) */\n dup2\n 0xffffff\n and\n swap2\n pop\n dup1\n swap7\n pop\n dup2\n swap3\n pop\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7157:7172 uint256 nrindex */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7184:7188 size */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7175:7181 rindex */\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7175:7188 rindex + size */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7157:7188 uint256 nrindex = rindex + size */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7201:7223 uint256 internalWeight */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7225:7245 bytes32 internalRoot */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7290:7343 recoverBranch(_subdigest, _signature[rindex:nrindex]) */\n tag_299\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7304:7314 _subdigest */\n dup14\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7316:7326 _signature */\n dup14\n dup14\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7327:7333 rindex */\n dup12\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7316:7342 _signature[rindex:nrindex] */\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7334:7341 nrindex */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7316:7342 _signature[rindex:nrindex] */\n swap3\n tag_192\n swap4\n swap3\n swap2\n swap1\n tag_193\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7290:7343 recoverBranch(_subdigest, _signature[rindex:nrindex]) */\n tag_299:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7364:7371 nrindex */\n swap4\n swap9\n pop\n dup9\n swap4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7257:7343 (internalWeight, internalRoot) = recoverBranch(_subdigest, _signature[rindex:nrindex]) */\n swap1\n swap3\n pop\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7388:7423 internalWeight >= internalThreshold */\n dup5\n dup3\n lt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7384:7476 if (internalWeight >= internalThreshold) {... */\n tag_301\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7439:7463 weight += externalWeight */\n swap9\n dup6\n add\n swap9\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7384:7476 if (internalWeight >= internalThreshold) {... */\n tag_301:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2976:3049 abi.encodePacked('Sequence nested config:\\n', _node, _threshold, _weight) */\n 0x40\n dup1\n mload\n /* \"#utility.yul\":20362:20428 */\n 0x53657175656e6365206e657374656420636f6e6669673a0a0000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2976:3049 abi.encodePacked('Sequence nested config:\\n', _node, _threshold, _weight) */\n 0x20\n dup1\n dup4\n add\n /* \"#utility.yul\":20350:20429 */\n swap2\n swap1\n swap2\n mstore\n /* \"#utility.yul\":20445:20457 */\n 0x38\n dup3\n add\n /* \"#utility.yul\":20438:20466 */\n dup5\n swap1\n mstore\n /* \"#utility.yul\":20482:20494 */\n 0x58\n dup3\n add\n /* \"#utility.yul\":20475:20503 */\n dup9\n swap1\n mstore\n /* \"#utility.yul\":20519:20531 */\n 0x78\n dup1\n dup4\n add\n /* \"#utility.yul\":20512:20540 */\n dup11\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2976:3049 abi.encodePacked('Sequence nested config:\\n', _node, _threshold, _weight) */\n dup4\n mload\n dup1\n dup5\n sub\n swap1\n swap2\n add\n dup2\n mstore\n /* \"#utility.yul\":20556:20569 */\n 0x98\n swap1\n swap3\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2976:3049 abi.encodePacked('Sequence nested config:\\n', _node, _threshold, _weight) */\n swap1\n swap3\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2966:3050 keccak256(abi.encodePacked('Sequence nested config:\\n', _node, _threshold, _weight)) */\n dup1\n mload\n swap2\n add\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7585:7589 root */\n dup10\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7585:7644 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n tag_304\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7640:7644 node */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7585:7644 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n jump(tag_306)\n tag_304:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":622:631 bytes32 c */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n dup11\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap1\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7606:7637 LibOptim.fkeccak256(root, node) */\n tag_306:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7578:7644 root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n swap10\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7657:7665 continue */\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump(tag_248)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":6697:7676 if (flag == FLAG_NESTED) {... */\n tag_294:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":758:759 5 */\n 0x05\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7690:7694 flag */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7690:7712 flag == FLAG_SUBDIGEST */\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7686:8171 if (flag == FLAG_SUBDIGEST) {... */\n tag_307\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":4550:4552 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":4536:4553 add(_pointer, 32) */\n dup3\n add\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":4487:4514 add(_pointer, _data.offset) */\n dup7\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":4474:4515 calldataload(add(_pointer, _data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7920:7943 hardcoded == _subdigest */\n dup8\n dup2\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7916:7998 if (hardcoded == _subdigest) {... */\n tag_309\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7968:7985 type(uint256).max */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7959:7985 weight = type(uint256).max */\n swap5\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7916:7998 if (hardcoded == _subdigest) {... */\n tag_309:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8010:8022 bytes32 node */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8025:8062 _leafForHardcodedSubdigest(hardcoded) */\n tag_310\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8052:8061 hardcoded */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8025:8051 _leafForHardcodedSubdigest */\n tag_311\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8025:8062 _leafForHardcodedSubdigest(hardcoded) */\n jump\t// in\n tag_310:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8010:8062 bytes32 node = _leafForHardcodedSubdigest(hardcoded) */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8081:8085 root */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8081:8140 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n tag_312\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8136:8140 node */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8081:8140 root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n jump(tag_314)\n tag_312:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":622:631 bytes32 c */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n dup6\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n swap1\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8102:8133 LibOptim.fkeccak256(root, node) */\n tag_314:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8074:8140 root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node */\n swap5\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8152:8160 continue */\n pop\n pop\n pop\n jump(tag_248)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":7686:8171 if (flag == FLAG_SUBDIGEST) {... */\n tag_307:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8188:8214 InvalidSignatureFlag(flag) */\n mload(0x40)\n 0xb2505f7c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n dup2\n add\n /* \"#utility.yul\":2778:2803 */\n dup3\n swap1\n mstore\n /* \"#utility.yul\":2751:2769 */\n 0x24\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":8188:8214 InvalidSignatureFlag(flag) */\n tag_93\n /* \"#utility.yul\":2632:2809 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3765:8223 while (rindex < _signature.length) {... */\n tag_249:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3678:8229 unchecked {... */\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":3525:8233 function recoverBranch(... */\n swap4\n pop\n swap4\n swap2\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":1296:1456 function _hashSetImageHashStruct(bytes32 _imageHash) internal pure returns (bytes32) {... */\n tag_224:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":862:906 keccak256(\"SetImageHash(bytes32 imageHash)\") */\n 0x8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":1372:1379 bytes32 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":656:669 mstore(0, _a) */\n swap1\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":683:685 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":676:690 mstore(32, _b) */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":715:717 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":702:718 keccak256(0, 64) */\n dup2\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":1394:1451 LibOptim.fkeccak256(SET_IMAGE_HASH_TYPE_HASH, _imageHash) */\n tag_80\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":543:728 function fkeccak256(... */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6015:6315 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n tag_238:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6101:6105 bool */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6124:6169 _interfaceID == type(IModuleAuth).interfaceId */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n dup3\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6140:6169 type(IModuleAuth).interfaceId */\n 0xac6a444e00000000000000000000000000000000000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6124:6169 _interfaceID == type(IModuleAuth).interfaceId */\n eq\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6124:6227 _interfaceID == type(IModuleAuth).interfaceId ||... */\n tag_323\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6179:6227 _interfaceID == type(IERC1271Wallet).interfaceId */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n dup3\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6195:6227 type(IERC1271Wallet).interfaceId */\n 0x36e7817500000000000000000000000000000000000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6179:6227 _interfaceID == type(IERC1271Wallet).interfaceId */\n eq\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6124:6227 _interfaceID == type(IModuleAuth).interfaceId ||... */\n tag_323:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6113:6260 if (... */\n iszero\n tag_324\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6249:6253 true */\n 0x01\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6015:6315 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n swap1\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6113:6260 if (... */\n tag_324:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":725:756 this.supportsInterface.selector */\n 0x01ffc9a700000000000000000000000000000000000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":709:756 _interfaceID == this.supportsInterface.selector */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n dup4\n and\n eq\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":6273:6310 super.supportsInterface(_interfaceID) */\n tag_80\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":613:761 function supportsInterface(bytes4 _interfaceID) virtual public pure returns (bool) {... */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1767:4083 function recoverSigner(... */\n tag_264:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1867:1881 address signer */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1914:1916 66 */\n 0x42\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1893:1916 _signature.length != 66 */\n dup3\n eq\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1889:1959 if (_signature.length != 66) revert InvalidSignatureLength(_signature) */\n tag_331\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1948:1958 _signature */\n dup3\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1925:1959 InvalidSignatureLength(_signature) */\n mload(0x40)\n 0x2ee17a3d00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap3\n swap2\n swap1\n tag_333\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1889:1959 if (_signature.length != 66) revert InvalidSignatureLength(_signature) */\n tag_331:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1965:1986 uint256 signatureType */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1989:2032 _signature.readUint8(_signature.length - 1) */\n tag_334\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":2010:2031 _signature.length - 1 */\n tag_335\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":2030:2031 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":2010:2020 _signature */\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":2010:2031 _signature.length - 1 */\n tag_336\n jump\t// in\n tag_335:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1226:1249 add(index, data.offset) */\n dup6\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1213:1250 calldataload(add(index, data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1266:1269 248 */\n 0xf8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1262:1276 shr(248, word) */\n shr\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1071:1286 function readUint8(... */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1989:2032 _signature.readUint8(_signature.length - 1) */\n tag_334:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1965:2032 uint256 signatureType = _signature.readUint8(_signature.length - 1) */\n 0xff\n and\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":2115:2117 64 */\n 0x40\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1226:1249 add(index, data.offset) */\n dup5\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1213:1250 calldataload(add(index, data.offset)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1266:1269 248 */\n 0xf8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":1262:1276 shr(248, word) */\n shr\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":795:832 calldataload(add(data.offset, index)) */\n dup5\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":2202:2204 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":808:831 add(data.offset, index) */\n dup7\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":795:832 calldataload(add(data.offset, index)) */\n calldataload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3209:3275 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 */\n 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3196:3275 uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 */\n dup2\n gt\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3192:3327 if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {... */\n iszero\n tag_342\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3306:3316 _signature */\n dup7\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3318:3319 s */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3292:3320 InvalidSValue(_signature, s) */\n mload(0x40)\n 0xad4aac7600000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap4\n swap3\n swap2\n swap1\n tag_344\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3192:3327 if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {... */\n tag_342:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3337:3338 v */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3337:3344 v != 27 */\n 0xff\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3342:3344 27 */\n 0x1b\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3337:3344 v != 27 */\n eq\n iszero\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3337:3355 v != 27 && v != 28 */\n dup1\n iszero\n tag_345\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3348:3349 v */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3348:3355 v != 28 */\n 0xff\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3353:3355 28 */\n 0x1c\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3348:3355 v != 28 */\n eq\n iszero\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3337:3355 v != 27 && v != 28 */\n tag_345:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3333:3407 if (v != 27 && v != 28) {... */\n iszero\n tag_346\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3386:3396 _signature */\n dup7\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3398:3399 v */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3372:3400 InvalidVValue(_signature, v) */\n mload(0x40)\n 0xe578897e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap4\n swap3\n swap2\n swap1\n tag_348\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3333:3407 if (v != 27 && v != 28) {... */\n tag_346:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1253:1254 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3447:3460 signatureType */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3447:3479 signatureType == SIG_TYPE_EIP712 */\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3443:3952 if (signatureType == SIG_TYPE_EIP712) {... */\n tag_349\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3498:3523 ecrecover(_hash, v, r, s) */\n 0x40\n dup1\n mload\n 0x00\n dup2\n mstore\n 0x20\n dup2\n add\n dup1\n dup4\n mstore\n /* \"#utility.yul\":18522:18547 */\n dup11\n swap1\n mstore\n /* \"#utility.yul\":18595:18599 */\n 0xff\n /* \"#utility.yul\":18583:18600 */\n dup6\n and\n /* \"#utility.yul\":18563:18581 */\n swap2\n dup2\n add\n /* \"#utility.yul\":18556:18601 */\n swap2\n swap1\n swap2\n mstore\n /* \"#utility.yul\":18617:18635 */\n 0x60\n dup2\n add\n /* \"#utility.yul\":18610:18644 */\n dup4\n swap1\n mstore\n /* \"#utility.yul\":18660:18678 */\n 0x80\n dup2\n add\n /* \"#utility.yul\":18653:18687 */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3498:3523 ecrecover(_hash, v, r, s) */\n 0x01\n swap1\n /* \"#utility.yul\":18494:18513 */\n 0xa0\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3498:3523 ecrecover(_hash, v, r, s) */\n tag_350:\n 0x20\n mload(0x40)\n 0x20\n dup2\n sub\n swap1\n dup1\n dup5\n sub\n swap1\n dup6\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_353\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_353:\n pop\n pop\n pop\n mload(sub(mload(0x40), 0x20))\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3489:3523 signer = ecrecover(_hash, v, r, s) */\n swap5\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3443:3952 if (signatureType == SIG_TYPE_EIP712) {... */\n jump(tag_361)\n tag_349:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1303:1304 2 */\n 0x02\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3608:3621 signatureType */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3608:3642 signatureType == SIG_TYPE_ETH_SIGN */\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3604:3952 if (signatureType == SIG_TYPE_ETH_SIGN) {... */\n tag_355\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3690:3749 abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash) */\n mload(0x40)\n /* \"#utility.yul\":18940:19006 */\n 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3690:3749 abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash) */\n 0x20\n dup3\n add\n /* \"#utility.yul\":18928:19007 */\n mstore\n /* \"#utility.yul\":19023:19035 */\n 0x3c\n dup2\n add\n /* \"#utility.yul\":19016:19044 */\n dup10\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3661:3791 ecrecover(... */\n 0x01\n swap1\n /* \"#utility.yul\":19060:19072 */\n 0x5c\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3690:3749 abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash) */\n 0x40\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n dup2\n dup5\n sub\n add\n dup2\n mstore\n dup3\n dup3\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3680:3750 keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash)) */\n dup1\n mload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3690:3749 abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash) */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3680:3750 keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash)) */\n swap2\n dup3\n add\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3661:3791 ecrecover(... */\n 0x00\n dup5\n mstore\n swap1\n dup4\n add\n dup1\n dup4\n mstore\n /* \"#utility.yul\":18522:18547 */\n mstore\n /* \"#utility.yul\":18595:18599 */\n 0xff\n /* \"#utility.yul\":18583:18600 */\n dup7\n and\n /* \"#utility.yul\":18563:18581 */\n swap1\n dup3\n add\n /* \"#utility.yul\":18556:18601 */\n mstore\n /* \"#utility.yul\":18617:18635 */\n 0x60\n dup2\n add\n /* \"#utility.yul\":18610:18644 */\n dup5\n swap1\n mstore\n /* \"#utility.yul\":18660:18678 */\n 0x80\n dup2\n add\n /* \"#utility.yul\":18653:18687 */\n dup4\n swap1\n mstore\n /* \"#utility.yul\":18494:18513 */\n 0xa0\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3661:3791 ecrecover(... */\n tag_350\n /* \"#utility.yul\":18295:18693 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3604:3952 if (signatureType == SIG_TYPE_ETH_SIGN) {... */\n tag_355:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3913:3923 _signature */\n dup7\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3925:3938 signatureType */\n dup6\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3940:3944 true */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3888:3945 UnsupportedSignatureType(_signature, signatureType, true) */\n mload(0x40)\n 0x9dfba85200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_363\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3604:3952 if (signatureType == SIG_TYPE_ETH_SIGN) {... */\n tag_361:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3999:4021 signer == address(0x0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup6\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3995:4058 if (signer == address(0x0)) revert SignerIsAddress0(_signature) */\n tag_364\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4047:4057 _signature */\n dup7\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4030:4058 SignerIsAddress0(_signature) */\n mload(0x40)\n 0x6c1719d200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap3\n swap2\n swap1\n tag_333\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":3995:4058 if (signer == address(0x0)) revert SignerIsAddress0(_signature) */\n tag_364:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4065:4078 return signer */\n pop\n pop\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1767:4083 function recoverSigner(... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4411:5362 function isValidSignature(... */\n tag_274:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4535:4545 bool valid */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4557:4579 _signature.length == 0 */\n dup2\n dup2\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4553:4619 if (_signature.length == 0) {... */\n tag_367\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4596:4612 EmptySignature() */\n mload(0x40)\n 0xac241e1100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4553:4619 if (_signature.length == 0) {... */\n tag_367:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4625:4646 uint256 signatureType */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4655:4665 _signature */\n dup4\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4666:4687 _signature.length - 1 */\n tag_368\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4686:4687 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4655:4665 _signature */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4666:4687 _signature.length - 1 */\n tag_336\n jump\t// in\n tag_368:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4655:4688 _signature[_signature.length - 1] */\n dup2\n dup2\n lt\n tag_370\n jumpi\n tag_370\n tag_113\n jump\t// in\n tag_370:\n swap2\n swap1\n swap2\n add\n calldataload\n 0xf8\n shr\n swap2\n pop\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1253:1254 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4699:4731 signatureType == SIG_TYPE_EIP712 */\n dup2\n eq\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4699:4769 signatureType == SIG_TYPE_EIP712 || signatureType == SIG_TYPE_ETH_SIGN */\n tag_371\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1303:1304 2 */\n 0x02\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4735:4748 signatureType */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4735:4769 signatureType == SIG_TYPE_ETH_SIGN */\n eq\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4699:4769 signatureType == SIG_TYPE_EIP712 || signatureType == SIG_TYPE_ETH_SIGN */\n tag_371:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4695:5358 if (signatureType == SIG_TYPE_EIP712 || signatureType == SIG_TYPE_ETH_SIGN) {... */\n iszero\n tag_372\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4873:4880 _signer */\n dup5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4837:4880 recoverSigner(_hash, _signature) == _signer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4837:4869 recoverSigner(_hash, _signature) */\n tag_373\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4851:4856 _hash */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4858:4868 _signature */\n dup7\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4837:4850 recoverSigner */\n tag_264\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4837:4869 recoverSigner(_hash, _signature) */\n jump\t// in\n tag_373:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4837:4880 recoverSigner(_hash, _signature) == _signer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4829:4880 valid = recoverSigner(_hash, _signature) == _signer */\n swap2\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4695:5358 if (signatureType == SIG_TYPE_EIP712 || signatureType == SIG_TYPE_ETH_SIGN) {... */\n jump(tag_384)\n tag_372:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":1359:1360 3 */\n 0x03\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4898:4911 signatureType */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4898:4938 signatureType == SIG_TYPE_WALLET_BYTES32 */\n sub\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4894:5358 if (signatureType == SIG_TYPE_WALLET_BYTES32) {... */\n tag_375\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5060:5100 IERC1271Wallet(_signer).isValidSignature */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup6\n and\n 0x1626ba7e\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5101:5106 _hash */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5108:5118 _signature */\n dup7\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5119:5120 0 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5108:5118 _signature */\n dup8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5121:5142 _signature.length - 1 */\n tag_376\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5141:5142 1 */\n 0x01\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5108:5118 _signature */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5121:5142 _signature.length - 1 */\n tag_336\n jump\t// in\n tag_376:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5108:5143 _signature[0:_signature.length - 1] */\n swap3\n tag_377\n swap4\n swap3\n swap2\n swap1\n tag_193\n jump\t// in\n tag_377:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5060:5144 IERC1271Wallet(_signer).isValidSignature(_hash, _signature[0:_signature.length - 1]) */\n mload(0x40)\n dup5\n 0xffffffff\n and\n 0xe0\n shl\n dup2\n mstore\n 0x04\n add\n tag_378\n swap4\n swap3\n swap2\n swap1\n tag_379\n jump\t// in\n tag_378:\n 0x20\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup7\n gas\n staticcall\n iszero\n dup1\n iszero\n tag_381\n jumpi\n returndatasize\n 0x00\n dup1\n returndatacopy\n revert(0x00, returndatasize)\n tag_381:\n pop\n pop\n pop\n pop\n mload(0x40)\n returndatasize\n not(0x1f)\n 0x1f\n dup3\n add\n and\n dup3\n add\n dup1\n 0x40\n mstore\n pop\n dup2\n add\n swap1\n tag_382\n swap2\n swap1\n tag_383\n jump\t// in\n tag_382:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5030:5144 ERC1271_MAGICVALUE_BYTES32 == IERC1271Wallet(_signer).isValidSignature(_hash, _signature[0:_signature.length - 1]) */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5030:5056 ERC1271_MAGICVALUE_BYTES32 */\n 0x1626ba7e00000000000000000000000000000000000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5030:5144 ERC1271_MAGICVALUE_BYTES32 == IERC1271Wallet(_signer).isValidSignature(_hash, _signature[0:_signature.length - 1]) */\n eq\n swap2\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4894:5358 if (signatureType == SIG_TYPE_WALLET_BYTES32) {... */\n jump(tag_384)\n tag_375:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5318:5328 _signature */\n dup4\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5330:5343 signatureType */\n dup3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5345:5350 false */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":5293:5351 UnsupportedSignatureType(_signature, signatureType, false) */\n mload(0x40)\n 0x9dfba85200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_363\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4894:5358 if (signatureType == SIG_TYPE_WALLET_BYTES32) {... */\n tag_384:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4547:5362 {... */\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":4411:5362 function isValidSignature(... */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2227:2409 function _leafForHardcodedSubdigest(... */\n tag_311:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2346:2403 abi.encodePacked('Sequence static digest:\\n', _subdigest) */\n mload(0x40)\n /* \"#utility.yul\":20822:20888 */\n 0x53657175656e636520737461746963206469676573743a0a0000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2346:2403 abi.encodePacked('Sequence static digest:\\n', _subdigest) */\n 0x20\n dup3\n add\n /* \"#utility.yul\":20810:20889 */\n mstore\n /* \"#utility.yul\":20905:20917 */\n 0x38\n dup2\n add\n /* \"#utility.yul\":20898:20926 */\n dup3\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2314:2321 bytes32 */\n 0x00\n swap1\n /* \"#utility.yul\":20942:20954 */\n 0x58\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":2346:2403 abi.encodePacked('Sequence static digest:\\n', _subdigest) */\n tag_155\n /* \"#utility.yul\":20580:20960 */\n jump\n /* \"#utility.yul\":14:191 */\n tag_397:\n /* \"#utility.yul\":99:165 */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":92:97 */\n dup2\n /* \"#utility.yul\":88:166 */\n and\n /* \"#utility.yul\":81:86 */\n dup2\n /* \"#utility.yul\":78:167 */\n eq\n /* \"#utility.yul\":68:185 */\n tag_96\n jumpi\n /* \"#utility.yul\":181:182 */\n 0x00\n /* \"#utility.yul\":178:179 */\n dup1\n /* \"#utility.yul\":171:183 */\n revert\n /* \"#utility.yul\":196:441 */\n tag_19:\n /* \"#utility.yul\":254:260 */\n 0x00\n /* \"#utility.yul\":307:309 */\n 0x20\n /* \"#utility.yul\":295:304 */\n dup3\n /* \"#utility.yul\":286:293 */\n dup5\n /* \"#utility.yul\":282:305 */\n sub\n /* \"#utility.yul\":278:310 */\n slt\n /* \"#utility.yul\":275:327 */\n iszero\n tag_411\n jumpi\n /* \"#utility.yul\":323:324 */\n 0x00\n /* \"#utility.yul\":320:321 */\n dup1\n /* \"#utility.yul\":313:325 */\n revert\n /* \"#utility.yul\":275:327 */\n tag_411:\n /* \"#utility.yul\":362:371 */\n dup2\n /* \"#utility.yul\":349:372 */\n calldataload\n /* \"#utility.yul\":381:411 */\n tag_82\n /* \"#utility.yul\":405:410 */\n dup2\n /* \"#utility.yul\":381:411 */\n tag_397\n jump\t// in\n /* \"#utility.yul\":638:985 */\n tag_398:\n /* \"#utility.yul\":689:697 */\n 0x00\n /* \"#utility.yul\":699:705 */\n dup1\n /* \"#utility.yul\":753:756 */\n dup4\n /* \"#utility.yul\":746:750 */\n 0x1f\n /* \"#utility.yul\":738:744 */\n dup5\n /* \"#utility.yul\":734:751 */\n add\n /* \"#utility.yul\":730:757 */\n slt\n /* \"#utility.yul\":720:775 */\n tag_415\n jumpi\n /* \"#utility.yul\":771:772 */\n 0x00\n /* \"#utility.yul\":768:769 */\n dup1\n /* \"#utility.yul\":761:773 */\n revert\n /* \"#utility.yul\":720:775 */\n tag_415:\n pop\n /* \"#utility.yul\":794:814 */\n dup2\n calldataload\n /* \"#utility.yul\":837:855 */\n 0xffffffffffffffff\n /* \"#utility.yul\":826:856 */\n dup2\n gt\n /* \"#utility.yul\":823:873 */\n iszero\n tag_416\n jumpi\n /* \"#utility.yul\":869:870 */\n 0x00\n /* \"#utility.yul\":866:867 */\n dup1\n /* \"#utility.yul\":859:871 */\n revert\n /* \"#utility.yul\":823:873 */\n tag_416:\n /* \"#utility.yul\":906:910 */\n 0x20\n /* \"#utility.yul\":898:904 */\n dup4\n /* \"#utility.yul\":894:911 */\n add\n /* \"#utility.yul\":882:911 */\n swap2\n pop\n /* \"#utility.yul\":958:961 */\n dup4\n /* \"#utility.yul\":951:955 */\n 0x20\n /* \"#utility.yul\":942:948 */\n dup3\n /* \"#utility.yul\":934:940 */\n dup6\n /* \"#utility.yul\":930:949 */\n add\n /* \"#utility.yul\":926:956 */\n add\n /* \"#utility.yul\":923:962 */\n gt\n /* \"#utility.yul\":920:979 */\n iszero\n tag_417\n jumpi\n /* \"#utility.yul\":975:976 */\n 0x00\n /* \"#utility.yul\":972:973 */\n dup1\n /* \"#utility.yul\":965:977 */\n revert\n /* \"#utility.yul\":920:979 */\n tag_417:\n /* \"#utility.yul\":638:985 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":990:1467 */\n tag_26:\n /* \"#utility.yul\":1069:1075 */\n 0x00\n /* \"#utility.yul\":1077:1083 */\n dup1\n /* \"#utility.yul\":1085:1091 */\n 0x00\n /* \"#utility.yul\":1138:1140 */\n 0x40\n /* \"#utility.yul\":1126:1135 */\n dup5\n /* \"#utility.yul\":1117:1124 */\n dup7\n /* \"#utility.yul\":1113:1136 */\n sub\n /* \"#utility.yul\":1109:1141 */\n slt\n /* \"#utility.yul\":1106:1158 */\n iszero\n tag_419\n jumpi\n /* \"#utility.yul\":1154:1155 */\n 0x00\n /* \"#utility.yul\":1151:1152 */\n dup1\n /* \"#utility.yul\":1144:1156 */\n revert\n /* \"#utility.yul\":1106:1158 */\n tag_419:\n /* \"#utility.yul\":1190:1199 */\n dup4\n /* \"#utility.yul\":1177:1200 */\n calldataload\n /* \"#utility.yul\":1167:1200 */\n swap3\n pop\n /* \"#utility.yul\":1251:1253 */\n 0x20\n /* \"#utility.yul\":1240:1249 */\n dup5\n /* \"#utility.yul\":1236:1254 */\n add\n /* \"#utility.yul\":1223:1255 */\n calldataload\n /* \"#utility.yul\":1278:1296 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1270:1276 */\n dup2\n /* \"#utility.yul\":1267:1297 */\n gt\n /* \"#utility.yul\":1264:1314 */\n iszero\n tag_420\n jumpi\n /* \"#utility.yul\":1310:1311 */\n 0x00\n /* \"#utility.yul\":1307:1308 */\n dup1\n /* \"#utility.yul\":1300:1312 */\n revert\n /* \"#utility.yul\":1264:1314 */\n tag_420:\n /* \"#utility.yul\":1349:1407 */\n tag_421\n /* \"#utility.yul\":1399:1406 */\n dup7\n /* \"#utility.yul\":1390:1396 */\n dup3\n /* \"#utility.yul\":1379:1388 */\n dup8\n /* \"#utility.yul\":1375:1397 */\n add\n /* \"#utility.yul\":1349:1407 */\n tag_398\n jump\t// in\n tag_421:\n /* \"#utility.yul\":990:1467 */\n swap5\n swap8\n /* \"#utility.yul\":1426:1434 */\n swap1\n swap7\n pop\n /* \"#utility.yul\":1323:1407 */\n swap4\n swap5\n pop\n pop\n pop\n pop\n /* \"#utility.yul\":990:1467 */\n jump\t// out\n /* \"#utility.yul\":1725:2442 */\n tag_33:\n /* \"#utility.yul\":1815:1821 */\n 0x00\n /* \"#utility.yul\":1823:1829 */\n dup1\n /* \"#utility.yul\":1831:1837 */\n 0x00\n /* \"#utility.yul\":1839:1845 */\n dup1\n /* \"#utility.yul\":1892:1894 */\n 0x40\n /* \"#utility.yul\":1880:1889 */\n dup6\n /* \"#utility.yul\":1871:1878 */\n dup8\n /* \"#utility.yul\":1867:1890 */\n sub\n /* \"#utility.yul\":1863:1895 */\n slt\n /* \"#utility.yul\":1860:1912 */\n iszero\n tag_424\n jumpi\n /* \"#utility.yul\":1908:1909 */\n 0x00\n /* \"#utility.yul\":1905:1906 */\n dup1\n /* \"#utility.yul\":1898:1910 */\n revert\n /* \"#utility.yul\":1860:1912 */\n tag_424:\n /* \"#utility.yul\":1948:1957 */\n dup5\n /* \"#utility.yul\":1935:1958 */\n calldataload\n /* \"#utility.yul\":1977:1995 */\n 0xffffffffffffffff\n /* \"#utility.yul\":2018:2020 */\n dup1\n /* \"#utility.yul\":2010:2016 */\n dup3\n /* \"#utility.yul\":2007:2021 */\n gt\n /* \"#utility.yul\":2004:2038 */\n iszero\n tag_425\n jumpi\n /* \"#utility.yul\":2034:2035 */\n 0x00\n /* \"#utility.yul\":2031:2032 */\n dup1\n /* \"#utility.yul\":2024:2036 */\n revert\n /* \"#utility.yul\":2004:2038 */\n tag_425:\n /* \"#utility.yul\":2073:2131 */\n tag_426\n /* \"#utility.yul\":2123:2130 */\n dup9\n /* \"#utility.yul\":2114:2120 */\n dup4\n /* \"#utility.yul\":2103:2112 */\n dup10\n /* \"#utility.yul\":2099:2121 */\n add\n /* \"#utility.yul\":2073:2131 */\n tag_398\n jump\t// in\n tag_426:\n /* \"#utility.yul\":2150:2158 */\n swap1\n swap7\n pop\n /* \"#utility.yul\":2047:2131 */\n swap5\n pop\n /* \"#utility.yul\":2238:2240 */\n 0x20\n /* \"#utility.yul\":2223:2241 */\n dup8\n add\n /* \"#utility.yul\":2210:2242 */\n calldataload\n swap2\n pop\n /* \"#utility.yul\":2254:2270 */\n dup1\n dup3\n gt\n /* \"#utility.yul\":2251:2287 */\n iszero\n tag_427\n jumpi\n /* \"#utility.yul\":2283:2284 */\n 0x00\n /* \"#utility.yul\":2280:2281 */\n dup1\n /* \"#utility.yul\":2273:2285 */\n revert\n /* \"#utility.yul\":2251:2287 */\n tag_427:\n pop\n /* \"#utility.yul\":2322:2382 */\n tag_428\n /* \"#utility.yul\":2374:2381 */\n dup8\n /* \"#utility.yul\":2363:2371 */\n dup3\n /* \"#utility.yul\":2352:2361 */\n dup9\n /* \"#utility.yul\":2348:2372 */\n add\n /* \"#utility.yul\":2322:2382 */\n tag_398\n jump\t// in\n tag_428:\n /* \"#utility.yul\":1725:2442 */\n swap6\n swap9\n swap5\n swap8\n pop\n /* \"#utility.yul\":2401:2409 */\n swap6\n pop\n pop\n pop\n pop\n /* \"#utility.yul\":1725:2442 */\n jump\t// out\n /* \"#utility.yul\":2447:2627 */\n tag_39:\n /* \"#utility.yul\":2506:2512 */\n 0x00\n /* \"#utility.yul\":2559:2561 */\n 0x20\n /* \"#utility.yul\":2547:2556 */\n dup3\n /* \"#utility.yul\":2538:2545 */\n dup5\n /* \"#utility.yul\":2534:2557 */\n sub\n /* \"#utility.yul\":2530:2562 */\n slt\n /* \"#utility.yul\":2527:2579 */\n iszero\n tag_430\n jumpi\n /* \"#utility.yul\":2575:2576 */\n 0x00\n /* \"#utility.yul\":2572:2573 */\n dup1\n /* \"#utility.yul\":2565:2577 */\n revert\n /* \"#utility.yul\":2527:2579 */\n tag_430:\n pop\n /* \"#utility.yul\":2598:2621 */\n calldataload\n swap2\n /* \"#utility.yul\":2447:2627 */\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2814:3201 */\n tag_399:\n /* \"#utility.yul\":2897:2905 */\n 0x00\n /* \"#utility.yul\":2907:2913 */\n dup1\n /* \"#utility.yul\":2961:2964 */\n dup4\n /* \"#utility.yul\":2954:2958 */\n 0x1f\n /* \"#utility.yul\":2946:2952 */\n dup5\n /* \"#utility.yul\":2942:2959 */\n add\n /* \"#utility.yul\":2938:2965 */\n slt\n /* \"#utility.yul\":2928:2983 */\n tag_433\n jumpi\n /* \"#utility.yul\":2979:2980 */\n 0x00\n /* \"#utility.yul\":2976:2977 */\n dup1\n /* \"#utility.yul\":2969:2981 */\n revert\n /* \"#utility.yul\":2928:2983 */\n tag_433:\n pop\n /* \"#utility.yul\":3002:3022 */\n dup2\n calldataload\n /* \"#utility.yul\":3045:3063 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3034:3064 */\n dup2\n gt\n /* \"#utility.yul\":3031:3081 */\n iszero\n tag_434\n jumpi\n /* \"#utility.yul\":3077:3078 */\n 0x00\n /* \"#utility.yul\":3074:3075 */\n dup1\n /* \"#utility.yul\":3067:3079 */\n revert\n /* \"#utility.yul\":3031:3081 */\n tag_434:\n /* \"#utility.yul\":3114:3118 */\n 0x20\n /* \"#utility.yul\":3106:3112 */\n dup4\n /* \"#utility.yul\":3102:3119 */\n add\n /* \"#utility.yul\":3090:3119 */\n swap2\n pop\n /* \"#utility.yul\":3174:3177 */\n dup4\n /* \"#utility.yul\":3167:3171 */\n 0x20\n /* \"#utility.yul\":3157:3163 */\n dup3\n /* \"#utility.yul\":3154:3155 */\n 0x05\n /* \"#utility.yul\":3150:3164 */\n shl\n /* \"#utility.yul\":3142:3148 */\n dup6\n /* \"#utility.yul\":3138:3165 */\n add\n /* \"#utility.yul\":3134:3172 */\n add\n /* \"#utility.yul\":3131:3178 */\n gt\n /* \"#utility.yul\":3128:3195 */\n iszero\n tag_417\n jumpi\n /* \"#utility.yul\":3191:3192 */\n 0x00\n /* \"#utility.yul\":3188:3189 */\n dup1\n /* \"#utility.yul\":3181:3193 */\n revert\n /* \"#utility.yul\":3206:3694 */\n tag_49:\n /* \"#utility.yul\":3323:3329 */\n 0x00\n /* \"#utility.yul\":3331:3337 */\n dup1\n /* \"#utility.yul\":3384:3386 */\n 0x20\n /* \"#utility.yul\":3372:3381 */\n dup4\n /* \"#utility.yul\":3363:3370 */\n dup6\n /* \"#utility.yul\":3359:3382 */\n sub\n /* \"#utility.yul\":3355:3387 */\n slt\n /* \"#utility.yul\":3352:3404 */\n iszero\n tag_437\n jumpi\n /* \"#utility.yul\":3400:3401 */\n 0x00\n /* \"#utility.yul\":3397:3398 */\n dup1\n /* \"#utility.yul\":3390:3402 */\n revert\n /* \"#utility.yul\":3352:3404 */\n tag_437:\n /* \"#utility.yul\":3440:3449 */\n dup3\n /* \"#utility.yul\":3427:3450 */\n calldataload\n /* \"#utility.yul\":3473:3491 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3465:3471 */\n dup2\n /* \"#utility.yul\":3462:3492 */\n gt\n /* \"#utility.yul\":3459:3509 */\n iszero\n tag_438\n jumpi\n /* \"#utility.yul\":3505:3506 */\n 0x00\n /* \"#utility.yul\":3502:3503 */\n dup1\n /* \"#utility.yul\":3495:3507 */\n revert\n /* \"#utility.yul\":3459:3509 */\n tag_438:\n /* \"#utility.yul\":3544:3634 */\n tag_439\n /* \"#utility.yul\":3626:3633 */\n dup6\n /* \"#utility.yul\":3617:3623 */\n dup3\n /* \"#utility.yul\":3606:3615 */\n dup7\n /* \"#utility.yul\":3602:3624 */\n add\n /* \"#utility.yul\":3544:3634 */\n tag_399\n jump\t// in\n tag_439:\n /* \"#utility.yul\":3653:3661 */\n swap1\n swap7\n /* \"#utility.yul\":3518:3634 */\n swap1\n swap6\n pop\n /* \"#utility.yul\":3206:3694 */\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3699:4563 */\n tag_54:\n /* \"#utility.yul\":3845:3851 */\n 0x00\n /* \"#utility.yul\":3853:3859 */\n dup1\n /* \"#utility.yul\":3861:3867 */\n 0x00\n /* \"#utility.yul\":3869:3875 */\n dup1\n /* \"#utility.yul\":3877:3883 */\n 0x00\n /* \"#utility.yul\":3930:3932 */\n 0x60\n /* \"#utility.yul\":3918:3927 */\n dup7\n /* \"#utility.yul\":3909:3916 */\n dup9\n /* \"#utility.yul\":3905:3928 */\n sub\n /* \"#utility.yul\":3901:3933 */\n slt\n /* \"#utility.yul\":3898:3950 */\n iszero\n tag_441\n jumpi\n /* \"#utility.yul\":3946:3947 */\n 0x00\n /* \"#utility.yul\":3943:3944 */\n dup1\n /* \"#utility.yul\":3936:3948 */\n revert\n /* \"#utility.yul\":3898:3950 */\n tag_441:\n /* \"#utility.yul\":3986:3995 */\n dup6\n /* \"#utility.yul\":3973:3996 */\n calldataload\n /* \"#utility.yul\":4015:4033 */\n 0xffffffffffffffff\n /* \"#utility.yul\":4056:4058 */\n dup1\n /* \"#utility.yul\":4048:4054 */\n dup3\n /* \"#utility.yul\":4045:4059 */\n gt\n /* \"#utility.yul\":4042:4076 */\n iszero\n tag_442\n jumpi\n /* \"#utility.yul\":4072:4073 */\n 0x00\n /* \"#utility.yul\":4069:4070 */\n dup1\n /* \"#utility.yul\":4062:4074 */\n revert\n /* \"#utility.yul\":4042:4076 */\n tag_442:\n /* \"#utility.yul\":4111:4201 */\n tag_443\n /* \"#utility.yul\":4193:4200 */\n dup10\n /* \"#utility.yul\":4184:4190 */\n dup4\n /* \"#utility.yul\":4173:4182 */\n dup11\n /* \"#utility.yul\":4169:4191 */\n add\n /* \"#utility.yul\":4111:4201 */\n tag_399\n jump\t// in\n tag_443:\n /* \"#utility.yul\":4220:4228 */\n swap1\n swap8\n pop\n /* \"#utility.yul\":4085:4201 */\n swap6\n pop\n /* \"#utility.yul\":4302:4304 */\n 0x20\n /* \"#utility.yul\":4287:4305 */\n dup9\n add\n /* \"#utility.yul\":4274:4306 */\n calldataload\n swap5\n pop\n /* \"#utility.yul\":4359:4361 */\n 0x40\n /* \"#utility.yul\":4344:4362 */\n dup9\n add\n /* \"#utility.yul\":4331:4363 */\n calldataload\n swap2\n pop\n /* \"#utility.yul\":4375:4391 */\n dup1\n dup3\n gt\n /* \"#utility.yul\":4372:4408 */\n iszero\n tag_444\n jumpi\n /* \"#utility.yul\":4404:4405 */\n 0x00\n /* \"#utility.yul\":4401:4402 */\n dup1\n /* \"#utility.yul\":4394:4406 */\n revert\n /* \"#utility.yul\":4372:4408 */\n tag_444:\n pop\n /* \"#utility.yul\":4443:4503 */\n tag_445\n /* \"#utility.yul\":4495:4502 */\n dup9\n /* \"#utility.yul\":4484:4492 */\n dup3\n /* \"#utility.yul\":4473:4482 */\n dup10\n /* \"#utility.yul\":4469:4493 */\n add\n /* \"#utility.yul\":4443:4503 */\n tag_398\n jump\t// in\n tag_445:\n /* \"#utility.yul\":3699:4563 */\n swap7\n swap10\n swap6\n swap9\n pop\n swap4\n swap7\n pop\n /* \"#utility.yul\":4522:4530 */\n swap3\n swap5\n /* \"#utility.yul\":4417:4503 */\n swap4\n /* \"#utility.yul\":3699:4563 */\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5403:5587 */\n tag_400:\n /* \"#utility.yul\":5455:5532 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":5452:5453 */\n 0x00\n /* \"#utility.yul\":5445:5533 */\n mstore\n /* \"#utility.yul\":5552:5556 */\n 0x41\n /* \"#utility.yul\":5549:5550 */\n 0x04\n /* \"#utility.yul\":5542:5557 */\n mstore\n /* \"#utility.yul\":5576:5580 */\n 0x24\n /* \"#utility.yul\":5573:5574 */\n 0x00\n /* \"#utility.yul\":5566:5581 */\n revert\n /* \"#utility.yul\":5592:6572 */\n tag_71:\n /* \"#utility.yul\":5660:5666 */\n 0x00\n /* \"#utility.yul\":5713:5715 */\n 0x20\n /* \"#utility.yul\":5701:5710 */\n dup3\n /* \"#utility.yul\":5692:5699 */\n dup5\n /* \"#utility.yul\":5688:5711 */\n sub\n /* \"#utility.yul\":5684:5716 */\n slt\n /* \"#utility.yul\":5681:5733 */\n iszero\n tag_452\n jumpi\n /* \"#utility.yul\":5729:5730 */\n 0x00\n /* \"#utility.yul\":5726:5727 */\n dup1\n /* \"#utility.yul\":5719:5731 */\n revert\n /* \"#utility.yul\":5681:5733 */\n tag_452:\n /* \"#utility.yul\":5769:5778 */\n dup2\n /* \"#utility.yul\":5756:5779 */\n calldataload\n /* \"#utility.yul\":5798:5816 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5839:5841 */\n dup1\n /* \"#utility.yul\":5831:5837 */\n dup3\n /* \"#utility.yul\":5828:5842 */\n gt\n /* \"#utility.yul\":5825:5859 */\n iszero\n tag_453\n jumpi\n /* \"#utility.yul\":5855:5856 */\n 0x00\n /* \"#utility.yul\":5852:5853 */\n dup1\n /* \"#utility.yul\":5845:5857 */\n revert\n /* \"#utility.yul\":5825:5859 */\n tag_453:\n /* \"#utility.yul\":5893:5899 */\n dup2\n /* \"#utility.yul\":5882:5891 */\n dup5\n /* \"#utility.yul\":5878:5900 */\n add\n /* \"#utility.yul\":5868:5900 */\n swap2\n pop\n /* \"#utility.yul\":5938:5945 */\n dup5\n /* \"#utility.yul\":5931:5935 */\n 0x1f\n /* \"#utility.yul\":5927:5929 */\n dup4\n /* \"#utility.yul\":5923:5936 */\n add\n /* \"#utility.yul\":5919:5946 */\n slt\n /* \"#utility.yul\":5909:5964 */\n tag_454\n jumpi\n /* \"#utility.yul\":5960:5961 */\n 0x00\n /* \"#utility.yul\":5957:5958 */\n dup1\n /* \"#utility.yul\":5950:5962 */\n revert\n /* \"#utility.yul\":5909:5964 */\n tag_454:\n /* \"#utility.yul\":5996:5998 */\n dup2\n /* \"#utility.yul\":5983:5999 */\n calldataload\n /* \"#utility.yul\":6018:6020 */\n dup2\n /* \"#utility.yul\":6014:6016 */\n dup2\n /* \"#utility.yul\":6011:6021 */\n gt\n /* \"#utility.yul\":6008:6044 */\n iszero\n tag_456\n jumpi\n /* \"#utility.yul\":6024:6042 */\n tag_456\n tag_400\n jump\t// in\n tag_456:\n /* \"#utility.yul\":6158:6160 */\n 0x40\n /* \"#utility.yul\":6152:6161 */\n mload\n /* \"#utility.yul\":6220:6224 */\n 0x1f\n /* \"#utility.yul\":6212:6225 */\n dup3\n add\n /* \"#utility.yul\":6063:6129 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n /* \"#utility.yul\":6208:6230 */\n swap1\n dup2\n and\n /* \"#utility.yul\":6232:6234 */\n 0x3f\n /* \"#utility.yul\":6204:6235 */\n add\n /* \"#utility.yul\":6200:6240 */\n and\n /* \"#utility.yul\":6188:6241 */\n dup2\n add\n swap1\n /* \"#utility.yul\":6256:6274 */\n dup4\n dup3\n gt\n /* \"#utility.yul\":6276:6298 */\n dup2\n dup4\n lt\n /* \"#utility.yul\":6253:6299 */\n or\n /* \"#utility.yul\":6250:6322 */\n iszero\n tag_458\n jumpi\n /* \"#utility.yul\":6302:6320 */\n tag_458\n tag_400\n jump\t// in\n tag_458:\n /* \"#utility.yul\":6342:6352 */\n dup2\n /* \"#utility.yul\":6338:6340 */\n 0x40\n /* \"#utility.yul\":6331:6353 */\n mstore\n /* \"#utility.yul\":6377:6379 */\n dup3\n /* \"#utility.yul\":6369:6375 */\n dup2\n /* \"#utility.yul\":6362:6380 */\n mstore\n /* \"#utility.yul\":6417:6424 */\n dup8\n /* \"#utility.yul\":6412:6414 */\n 0x20\n /* \"#utility.yul\":6407:6409 */\n dup5\n /* \"#utility.yul\":6403:6405 */\n dup8\n /* \"#utility.yul\":6399:6410 */\n add\n /* \"#utility.yul\":6395:6415 */\n add\n /* \"#utility.yul\":6392:6425 */\n gt\n /* \"#utility.yul\":6389:6442 */\n iszero\n tag_459\n jumpi\n /* \"#utility.yul\":6438:6439 */\n 0x00\n /* \"#utility.yul\":6435:6436 */\n dup1\n /* \"#utility.yul\":6428:6440 */\n revert\n /* \"#utility.yul\":6389:6442 */\n tag_459:\n /* \"#utility.yul\":6494:6496 */\n dup3\n /* \"#utility.yul\":6489:6491 */\n 0x20\n /* \"#utility.yul\":6485:6487 */\n dup7\n /* \"#utility.yul\":6481:6492 */\n add\n /* \"#utility.yul\":6476:6478 */\n 0x20\n /* \"#utility.yul\":6468:6474 */\n dup4\n /* \"#utility.yul\":6464:6479 */\n add\n /* \"#utility.yul\":6451:6497 */\n calldatacopy\n /* \"#utility.yul\":6539:6540 */\n 0x00\n /* \"#utility.yul\":6517:6532 */\n swap3\n dup2\n add\n /* \"#utility.yul\":6534:6536 */\n 0x20\n /* \"#utility.yul\":6513:6537 */\n add\n /* \"#utility.yul\":6506:6541 */\n swap3\n swap1\n swap3\n mstore\n pop\n /* \"#utility.yul\":6521:6527 */\n swap6\n /* \"#utility.yul\":5592:6572 */\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6808:7079 */\n tag_89:\n /* \"#utility.yul\":6991:6997 */\n dup2\n /* \"#utility.yul\":6983:6989 */\n dup4\n /* \"#utility.yul\":6978:6981 */\n dup3\n /* \"#utility.yul\":6965:6998 */\n calldatacopy\n /* \"#utility.yul\":6947:6950 */\n 0x00\n /* \"#utility.yul\":7017:7033 */\n swap2\n add\n /* \"#utility.yul\":7042:7055 */\n swap1\n dup2\n mstore\n /* \"#utility.yul\":7017:7033 */\n swap2\n /* \"#utility.yul\":6808:7079 */\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7416:7576 */\n tag_401:\n /* \"#utility.yul\":7481:7501 */\n dup1\n calldataload\n /* \"#utility.yul\":7537:7550 */\n dup1\n iszero\n /* \"#utility.yul\":7530:7551 */\n iszero\n /* \"#utility.yul\":7520:7552 */\n dup2\n eq\n /* \"#utility.yul\":7510:7570 */\n tag_464\n jumpi\n /* \"#utility.yul\":7566:7567 */\n 0x00\n /* \"#utility.yul\":7563:7564 */\n dup1\n /* \"#utility.yul\":7556:7568 */\n revert\n /* \"#utility.yul\":7510:7570 */\n tag_464:\n /* \"#utility.yul\":7416:7576 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7581:7777 */\n tag_402:\n /* \"#utility.yul\":7649:7669 */\n dup1\n calldataload\n /* \"#utility.yul\":7709:7751 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":7698:7752 */\n dup2\n and\n /* \"#utility.yul\":7688:7753 */\n dup2\n eq\n /* \"#utility.yul\":7678:7771 */\n tag_464\n jumpi\n /* \"#utility.yul\":7767:7768 */\n 0x00\n /* \"#utility.yul\":7764:7765 */\n dup1\n /* \"#utility.yul\":7757:7769 */\n revert\n /* \"#utility.yul\":7782:8107 */\n tag_403:\n /* \"#utility.yul\":7870:7876 */\n dup2\n /* \"#utility.yul\":7865:7868 */\n dup4\n /* \"#utility.yul\":7858:7877 */\n mstore\n /* \"#utility.yul\":7922:7928 */\n dup2\n /* \"#utility.yul\":7915:7920 */\n dup2\n /* \"#utility.yul\":7908:7912 */\n 0x20\n /* \"#utility.yul\":7903:7906 */\n dup6\n /* \"#utility.yul\":7899:7913 */\n add\n /* \"#utility.yul\":7886:7929 */\n calldatacopy\n pop\n /* \"#utility.yul\":7974:7975 */\n 0x00\n /* \"#utility.yul\":7967:7971 */\n 0x20\n /* \"#utility.yul\":7958:7964 */\n dup3\n /* \"#utility.yul\":7953:7956 */\n dup5\n /* \"#utility.yul\":7949:7965 */\n add\n /* \"#utility.yul\":7945:7972 */\n add\n /* \"#utility.yul\":7938:7976 */\n mstore\n /* \"#utility.yul\":7840:7843 */\n 0x00\n /* \"#utility.yul\":8096:8100 */\n 0x20\n /* \"#utility.yul\":8026:8092 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n /* \"#utility.yul\":8021:8023 */\n 0x1f\n /* \"#utility.yul\":8013:8019 */\n dup5\n /* \"#utility.yul\":8009:8024 */\n add\n /* \"#utility.yul\":8005:8093 */\n and\n /* \"#utility.yul\":8000:8003 */\n dup5\n /* \"#utility.yul\":7996:8094 */\n add\n /* \"#utility.yul\":7992:8101 */\n add\n /* \"#utility.yul\":7985:8101 */\n swap1\n pop\n /* \"#utility.yul\":7782:8107 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8112:10140 */\n tag_404:\n /* \"#utility.yul\":8232:8238 */\n dup2\n /* \"#utility.yul\":8227:8230 */\n dup4\n /* \"#utility.yul\":8220:8239 */\n mstore\n /* \"#utility.yul\":8202:8205 */\n 0x00\n /* \"#utility.yul\":8258:8262 */\n 0x20\n /* \"#utility.yul\":8299:8301 */\n dup1\n /* \"#utility.yul\":8294:8297 */\n dup6\n /* \"#utility.yul\":8290:8302 */\n add\n /* \"#utility.yul\":8324:8335 */\n dup1\n /* \"#utility.yul\":8351:8362 */\n dup2\n /* \"#utility.yul\":8344:8362 */\n swap7\n pop\n /* \"#utility.yul\":8401:8407 */\n dup6\n /* \"#utility.yul\":8398:8399 */\n 0x05\n /* \"#utility.yul\":8394:8408 */\n shl\n /* \"#utility.yul\":8387:8392 */\n dup2\n /* \"#utility.yul\":8383:8409 */\n add\n /* \"#utility.yul\":8371:8409 */\n swap2\n pop\n /* \"#utility.yul\":8432:8437 */\n dup5\n /* \"#utility.yul\":8455:8456 */\n 0x00\n /* \"#utility.yul\":8465:10114 */\n tag_469:\n /* \"#utility.yul\":8479:8485 */\n dup8\n /* \"#utility.yul\":8476:8477 */\n dup2\n /* \"#utility.yul\":8473:8486 */\n lt\n /* \"#utility.yul\":8465:10114 */\n iszero\n tag_471\n jumpi\n /* \"#utility.yul\":8550:8555 */\n dup3\n /* \"#utility.yul\":8544:8548 */\n dup5\n /* \"#utility.yul\":8540:8556 */\n sub\n /* \"#utility.yul\":8535:8538 */\n dup10\n /* \"#utility.yul\":8528:8557 */\n mstore\n /* \"#utility.yul\":8609:8615 */\n dup2\n /* \"#utility.yul\":8596:8616 */\n calldataload\n /* \"#utility.yul\":8695:8761 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41\n /* \"#utility.yul\":8687:8692 */\n dup9\n /* \"#utility.yul\":8671:8685 */\n calldatasize\n /* \"#utility.yul\":8667:8693 */\n sub\n /* \"#utility.yul\":8663:8762 */\n add\n /* \"#utility.yul\":8643:8661 */\n dup2\n /* \"#utility.yul\":8639:8763 */\n slt\n /* \"#utility.yul\":8629:8781 */\n tag_472\n jumpi\n /* \"#utility.yul\":8777:8778 */\n 0x00\n /* \"#utility.yul\":8774:8775 */\n dup1\n /* \"#utility.yul\":8767:8779 */\n revert\n /* \"#utility.yul\":8629:8781 */\n tag_472:\n /* \"#utility.yul\":8809:8839 */\n dup8\n add\n /* \"#utility.yul\":8862:8866 */\n 0xc0\n /* \"#utility.yul\":8906:8930 */\n tag_473\n /* \"#utility.yul\":8809:8839 */\n dup3\n /* \"#utility.yul\":8906:8930 */\n tag_401\n jump\t// in\n tag_473:\n /* \"#utility.yul\":8899:8931 */\n iszero\n /* \"#utility.yul\":8892:8932 */\n iszero\n /* \"#utility.yul\":8886:8890 */\n dup7\n /* \"#utility.yul\":8879:8933 */\n mstore\n /* \"#utility.yul\":8982:9015 */\n tag_474\n /* \"#utility.yul\":9011:9013 */\n dup8\n /* \"#utility.yul\":9002:9009 */\n dup4\n /* \"#utility.yul\":8998:9014 */\n add\n /* \"#utility.yul\":8982:9015 */\n tag_401\n jump\t// in\n tag_474:\n /* \"#utility.yul\":8975:9016 */\n iszero\n /* \"#utility.yul\":8968:9017 */\n iszero\n /* \"#utility.yul\":8953:8966 */\n dup7\n dup9\n add\n /* \"#utility.yul\":8946:9018 */\n mstore\n /* \"#utility.yul\":9041:9045 */\n 0x40\n /* \"#utility.yul\":9093:9109 */\n dup3\n dup2\n add\n /* \"#utility.yul\":9080:9110 */\n calldataload\n /* \"#utility.yul\":9065:9078 */\n swap1\n dup8\n add\n /* \"#utility.yul\":9058:9111 */\n mstore\n /* \"#utility.yul\":9134:9138 */\n 0x60\n /* \"#utility.yul\":9215:9257 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":9177:9213 */\n tag_475\n /* \"#utility.yul\":9196:9212 */\n dup3\n dup6\n add\n /* \"#utility.yul\":9177:9213 */\n tag_402\n jump\t// in\n tag_475:\n /* \"#utility.yul\":9173:9258 */\n and\n /* \"#utility.yul\":9158:9171 */\n swap1\n dup8\n add\n /* \"#utility.yul\":9151:9259 */\n mstore\n /* \"#utility.yul\":9282:9286 */\n 0x80\n /* \"#utility.yul\":9334:9350 */\n dup3\n dup2\n add\n /* \"#utility.yul\":9321:9351 */\n calldataload\n /* \"#utility.yul\":9306:9319 */\n swap1\n dup8\n add\n /* \"#utility.yul\":9299:9352 */\n mstore\n /* \"#utility.yul\":9375:9379 */\n 0xa0\n /* \"#utility.yul\":9433:9449 */\n dup1\n dup4\n add\n /* \"#utility.yul\":9420:9450 */\n calldataload\n /* \"#utility.yul\":9507:9521 */\n calldatasize\n /* \"#utility.yul\":9503:9531 */\n dup5\n swap1\n sub\n /* \"#utility.yul\":9533:9599 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1\n /* \"#utility.yul\":9499:9600 */\n add\n /* \"#utility.yul\":9473:9601 */\n dup2\n slt\n /* \"#utility.yul\":9463:9619 */\n tag_476\n jumpi\n /* \"#utility.yul\":9615:9616 */\n 0x00\n /* \"#utility.yul\":9612:9613 */\n dup1\n /* \"#utility.yul\":9605:9617 */\n revert\n /* \"#utility.yul\":9463:9619 */\n tag_476:\n /* \"#utility.yul\":9647:9681 */\n swap1\n swap3\n add\n /* \"#utility.yul\":9759:9775 */\n dup8\n dup2\n add\n swap3\n swap1\n /* \"#utility.yul\":9710:9731 */\n calldataload\n /* \"#utility.yul\":9804:9822 */\n 0xffffffffffffffff\n /* \"#utility.yul\":9791:9823 */\n dup2\n gt\n /* \"#utility.yul\":9788:9840 */\n iszero\n tag_477\n jumpi\n /* \"#utility.yul\":9836:9837 */\n 0x00\n /* \"#utility.yul\":9833:9834 */\n dup1\n /* \"#utility.yul\":9826:9838 */\n revert\n /* \"#utility.yul\":9788:9840 */\n tag_477:\n /* \"#utility.yul\":9889:9897 */\n dup1\n /* \"#utility.yul\":9873:9887 */\n calldatasize\n /* \"#utility.yul\":9869:9898 */\n sub\n /* \"#utility.yul\":9860:9867 */\n dup5\n /* \"#utility.yul\":9856:9899 */\n sgt\n /* \"#utility.yul\":9853:9916 */\n iszero\n tag_478\n jumpi\n /* \"#utility.yul\":9912:9913 */\n 0x00\n /* \"#utility.yul\":9909:9910 */\n dup1\n /* \"#utility.yul\":9902:9914 */\n revert\n /* \"#utility.yul\":9853:9916 */\n tag_478:\n /* \"#utility.yul\":9951:9953 */\n dup3\n /* \"#utility.yul\":9946:9948 */\n dup3\n /* \"#utility.yul\":9940:9944 */\n dup10\n /* \"#utility.yul\":9936:9949 */\n add\n /* \"#utility.yul\":9929:9954 */\n mstore\n /* \"#utility.yul\":9975:10034 */\n tag_479\n /* \"#utility.yul\":10030:10032 */\n dup4\n /* \"#utility.yul\":10024:10028 */\n dup10\n /* \"#utility.yul\":10020:10033 */\n add\n /* \"#utility.yul\":10010:10018 */\n dup3\n /* \"#utility.yul\":10001:10008 */\n dup7\n /* \"#utility.yul\":9975:10034 */\n tag_403\n jump\t// in\n tag_479:\n /* \"#utility.yul\":10092:10104 */\n swap13\n dup10\n add\n swap13\n /* \"#utility.yul\":9967:10034 */\n swap8\n pop\n pop\n pop\n /* \"#utility.yul\":10057:10072 */\n swap3\n dup7\n add\n swap3\n pop\n pop\n /* \"#utility.yul\":8501:8502 */\n 0x01\n /* \"#utility.yul\":8494:8503 */\n add\n /* \"#utility.yul\":8465:10114 */\n jump(tag_469)\n tag_471:\n pop\n /* \"#utility.yul\":10130:10134 */\n swap2\n swap8\n /* \"#utility.yul\":8112:10140 */\n swap7\n pop\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10145:10739 */\n tag_101:\n /* \"#utility.yul\":10495:10497 */\n 0x40\n /* \"#utility.yul\":10484:10493 */\n dup2\n /* \"#utility.yul\":10477:10498 */\n mstore\n /* \"#utility.yul\":10534:10535 */\n 0x05\n /* \"#utility.yul\":10529:10531 */\n 0x40\n /* \"#utility.yul\":10518:10527 */\n dup3\n /* \"#utility.yul\":10514:10532 */\n add\n /* \"#utility.yul\":10507:10536 */\n mstore\n /* \"#utility.yul\":10572:10579 */\n 0x73656c663a000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":10567:10569 */\n 0x60\n /* \"#utility.yul\":10556:10565 */\n dup3\n /* \"#utility.yul\":10552:10570 */\n add\n /* \"#utility.yul\":10545:10580 */\n mstore\n /* \"#utility.yul\":10618:10621 */\n 0x80\n /* \"#utility.yul\":10611:10615 */\n 0x20\n /* \"#utility.yul\":10600:10609 */\n dup3\n /* \"#utility.yul\":10596:10616 */\n add\n /* \"#utility.yul\":10589:10622 */\n mstore\n /* \"#utility.yul\":10458:10462 */\n 0x00\n /* \"#utility.yul\":10639:10733 */\n tag_86\n /* \"#utility.yul\":10728:10731 */\n 0x80\n /* \"#utility.yul\":10717:10726 */\n dup4\n /* \"#utility.yul\":10713:10732 */\n add\n /* \"#utility.yul\":10705:10711 */\n dup5\n /* \"#utility.yul\":10697:10703 */\n dup7\n /* \"#utility.yul\":10639:10733 */\n tag_404\n jump\t// in\n /* \"#utility.yul\":10744:11339 */\n tag_108:\n /* \"#utility.yul\":11094:11096 */\n 0x40\n /* \"#utility.yul\":11083:11092 */\n dup2\n /* \"#utility.yul\":11076:11097 */\n mstore\n /* \"#utility.yul\":11133:11134 */\n 0x06\n /* \"#utility.yul\":11128:11130 */\n 0x40\n /* \"#utility.yul\":11117:11126 */\n dup3\n /* \"#utility.yul\":11113:11131 */\n add\n /* \"#utility.yul\":11106:11135 */\n mstore\n /* \"#utility.yul\":11171:11179 */\n 0x67756573743a0000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":11166:11168 */\n 0x60\n /* \"#utility.yul\":11155:11164 */\n dup3\n /* \"#utility.yul\":11151:11169 */\n add\n /* \"#utility.yul\":11144:11180 */\n mstore\n /* \"#utility.yul\":11218:11221 */\n 0x80\n /* \"#utility.yul\":11211:11215 */\n 0x20\n /* \"#utility.yul\":11200:11209 */\n dup3\n /* \"#utility.yul\":11196:11216 */\n add\n /* \"#utility.yul\":11189:11222 */\n mstore\n /* \"#utility.yul\":11057:11061 */\n 0x00\n /* \"#utility.yul\":11239:11333 */\n tag_86\n /* \"#utility.yul\":11328:11331 */\n 0x80\n /* \"#utility.yul\":11317:11326 */\n dup4\n /* \"#utility.yul\":11313:11332 */\n add\n /* \"#utility.yul\":11305:11311 */\n dup5\n /* \"#utility.yul\":11297:11303 */\n dup7\n /* \"#utility.yul\":11239:11333 */\n tag_404\n jump\t// in\n /* \"#utility.yul\":11344:11528 */\n tag_113:\n /* \"#utility.yul\":11396:11473 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":11393:11394 */\n 0x00\n /* \"#utility.yul\":11386:11474 */\n mstore\n /* \"#utility.yul\":11493:11497 */\n 0x32\n /* \"#utility.yul\":11490:11491 */\n 0x04\n /* \"#utility.yul\":11483:11498 */\n mstore\n /* \"#utility.yul\":11517:11521 */\n 0x24\n /* \"#utility.yul\":11514:11515 */\n 0x00\n /* \"#utility.yul\":11507:11522 */\n revert\n /* \"#utility.yul\":11786:12267 */\n tag_405:\n /* \"#utility.yul\":11827:11830 */\n 0x00\n /* \"#utility.yul\":11865:11870 */\n dup2\n /* \"#utility.yul\":11859:11871 */\n mload\n /* \"#utility.yul\":11892:11898 */\n dup1\n /* \"#utility.yul\":11887:11890 */\n dup5\n /* \"#utility.yul\":11880:11899 */\n mstore\n /* \"#utility.yul\":11917:11918 */\n 0x00\n /* \"#utility.yul\":11927:12089 */\n tag_487:\n /* \"#utility.yul\":11941:11947 */\n dup2\n /* \"#utility.yul\":11938:11939 */\n dup2\n /* \"#utility.yul\":11935:11948 */\n lt\n /* \"#utility.yul\":11927:12089 */\n iszero\n tag_489\n jumpi\n /* \"#utility.yul\":12003:12007 */\n 0x20\n /* \"#utility.yul\":12059:12072 */\n dup2\n dup6\n add\n /* \"#utility.yul\":12055:12077 */\n dup2\n add\n /* \"#utility.yul\":12049:12078 */\n mload\n /* \"#utility.yul\":12031:12042 */\n dup7\n dup4\n add\n /* \"#utility.yul\":12027:12047 */\n dup3\n add\n /* \"#utility.yul\":12020:12079 */\n mstore\n /* \"#utility.yul\":11956:11968 */\n add\n /* \"#utility.yul\":11927:12089 */\n jump(tag_487)\n tag_489:\n /* \"#utility.yul\":11931:11934 */\n pop\n /* \"#utility.yul\":12134:12135 */\n 0x00\n /* \"#utility.yul\":12127:12131 */\n 0x20\n /* \"#utility.yul\":12118:12124 */\n dup3\n /* \"#utility.yul\":12113:12116 */\n dup7\n /* \"#utility.yul\":12109:12125 */\n add\n /* \"#utility.yul\":12105:12132 */\n add\n /* \"#utility.yul\":12098:12136 */\n mstore\n /* \"#utility.yul\":12256:12260 */\n 0x20\n /* \"#utility.yul\":12186:12252 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n /* \"#utility.yul\":12181:12183 */\n 0x1f\n /* \"#utility.yul\":12173:12179 */\n dup4\n /* \"#utility.yul\":12169:12184 */\n add\n /* \"#utility.yul\":12165:12253 */\n and\n /* \"#utility.yul\":12160:12163 */\n dup6\n /* \"#utility.yul\":12156:12254 */\n add\n /* \"#utility.yul\":12152:12261 */\n add\n /* \"#utility.yul\":12145:12261 */\n swap2\n pop\n pop\n /* \"#utility.yul\":11786:12267 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12272:12489 */\n tag_140:\n /* \"#utility.yul\":12419:12421 */\n 0x20\n /* \"#utility.yul\":12408:12417 */\n dup2\n /* \"#utility.yul\":12401:12422 */\n mstore\n /* \"#utility.yul\":12382:12386 */\n 0x00\n /* \"#utility.yul\":12439:12483 */\n tag_82\n /* \"#utility.yul\":12479:12481 */\n 0x20\n /* \"#utility.yul\":12468:12477 */\n dup4\n /* \"#utility.yul\":12464:12482 */\n add\n /* \"#utility.yul\":12456:12462 */\n dup5\n /* \"#utility.yul\":12439:12483 */\n tag_405\n jump\t// in\n /* \"#utility.yul\":13090:13477 */\n tag_164:\n /* \"#utility.yul\":13187:13191 */\n 0x00\n /* \"#utility.yul\":13245:13256 */\n dup3\n /* \"#utility.yul\":13232:13257 */\n calldataload\n /* \"#utility.yul\":13335:13401 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41\n /* \"#utility.yul\":13324:13332 */\n dup4\n /* \"#utility.yul\":13308:13322 */\n calldatasize\n /* \"#utility.yul\":13304:13333 */\n sub\n /* \"#utility.yul\":13300:13402 */\n add\n /* \"#utility.yul\":13280:13298 */\n dup2\n /* \"#utility.yul\":13276:13403 */\n slt\n /* \"#utility.yul\":13266:13421 */\n tag_494\n jumpi\n /* \"#utility.yul\":13417:13418 */\n 0x00\n /* \"#utility.yul\":13414:13415 */\n dup1\n /* \"#utility.yul\":13407:13419 */\n revert\n /* \"#utility.yul\":13266:13421 */\n tag_494:\n /* \"#utility.yul\":13438:13471 */\n swap2\n swap1\n swap2\n add\n swap3\n /* \"#utility.yul\":13090:13477 */\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":13482:13662 */\n tag_166:\n /* \"#utility.yul\":13538:13544 */\n 0x00\n /* \"#utility.yul\":13591:13593 */\n 0x20\n /* \"#utility.yul\":13579:13588 */\n dup3\n /* \"#utility.yul\":13570:13577 */\n dup5\n /* \"#utility.yul\":13566:13589 */\n sub\n /* \"#utility.yul\":13562:13594 */\n slt\n /* \"#utility.yul\":13559:13611 */\n iszero\n tag_496\n jumpi\n /* \"#utility.yul\":13607:13608 */\n 0x00\n /* \"#utility.yul\":13604:13605 */\n dup1\n /* \"#utility.yul\":13597:13609 */\n revert\n /* \"#utility.yul\":13559:13611 */\n tag_496:\n /* \"#utility.yul\":13630:13656 */\n tag_82\n /* \"#utility.yul\":13646:13655 */\n dup3\n /* \"#utility.yul\":13630:13656 */\n tag_401\n jump\t// in\n /* \"#utility.yul\":13991:14177 */\n tag_174:\n /* \"#utility.yul\":14050:14056 */\n 0x00\n /* \"#utility.yul\":14103:14105 */\n 0x20\n /* \"#utility.yul\":14091:14100 */\n dup3\n /* \"#utility.yul\":14082:14089 */\n dup5\n /* \"#utility.yul\":14078:14101 */\n sub\n /* \"#utility.yul\":14074:14106 */\n slt\n /* \"#utility.yul\":14071:14123 */\n iszero\n tag_500\n jumpi\n /* \"#utility.yul\":14119:14120 */\n 0x00\n /* \"#utility.yul\":14116:14117 */\n dup1\n /* \"#utility.yul\":14109:14121 */\n revert\n /* \"#utility.yul\":14071:14123 */\n tag_500:\n /* \"#utility.yul\":14142:14171 */\n tag_82\n /* \"#utility.yul\":14161:14170 */\n dup3\n /* \"#utility.yul\":14142:14171 */\n tag_402\n jump\t// in\n /* \"#utility.yul\":14182:14762 */\n tag_178:\n /* \"#utility.yul\":14259:14263 */\n 0x00\n /* \"#utility.yul\":14265:14271 */\n dup1\n /* \"#utility.yul\":14325:14336 */\n dup4\n /* \"#utility.yul\":14312:14337 */\n calldataload\n /* \"#utility.yul\":14415:14481 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1\n /* \"#utility.yul\":14404:14412 */\n dup5\n /* \"#utility.yul\":14388:14402 */\n calldatasize\n /* \"#utility.yul\":14384:14413 */\n sub\n /* \"#utility.yul\":14380:14482 */\n add\n /* \"#utility.yul\":14360:14378 */\n dup2\n /* \"#utility.yul\":14356:14483 */\n slt\n /* \"#utility.yul\":14346:14501 */\n tag_503\n jumpi\n /* \"#utility.yul\":14497:14498 */\n 0x00\n /* \"#utility.yul\":14494:14495 */\n dup1\n /* \"#utility.yul\":14487:14499 */\n revert\n /* \"#utility.yul\":14346:14501 */\n tag_503:\n /* \"#utility.yul\":14524:14557 */\n dup4\n add\n /* \"#utility.yul\":14576:14596 */\n dup1\n calldataload\n swap2\n pop\n /* \"#utility.yul\":14619:14637 */\n 0xffffffffffffffff\n /* \"#utility.yul\":14608:14638 */\n dup3\n gt\n /* \"#utility.yul\":14605:14655 */\n iszero\n tag_504\n jumpi\n /* \"#utility.yul\":14651:14652 */\n 0x00\n /* \"#utility.yul\":14648:14649 */\n dup1\n /* \"#utility.yul\":14641:14653 */\n revert\n /* \"#utility.yul\":14605:14655 */\n tag_504:\n /* \"#utility.yul\":14684:14688 */\n 0x20\n /* \"#utility.yul\":14672:14689 */\n add\n swap2\n pop\n /* \"#utility.yul\":14715:14729 */\n calldatasize\n /* \"#utility.yul\":14711:14738 */\n dup2\n swap1\n sub\n /* \"#utility.yul\":14701:14739 */\n dup3\n sgt\n /* \"#utility.yul\":14698:14756 */\n iszero\n tag_417\n jumpi\n /* \"#utility.yul\":14752:14753 */\n 0x00\n /* \"#utility.yul\":14749:14750 */\n dup1\n /* \"#utility.yul\":14742:14754 */\n revert\n /* \"#utility.yul\":14767:14951 */\n tag_406:\n /* \"#utility.yul\":14819:14896 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":14816:14817 */\n 0x00\n /* \"#utility.yul\":14809:14897 */\n mstore\n /* \"#utility.yul\":14916:14920 */\n 0x11\n /* \"#utility.yul\":14913:14914 */\n 0x04\n /* \"#utility.yul\":14906:14921 */\n mstore\n /* \"#utility.yul\":14940:14944 */\n 0x24\n /* \"#utility.yul\":14937:14938 */\n 0x00\n /* \"#utility.yul\":14930:14945 */\n revert\n /* \"#utility.yul\":14956:15151 */\n tag_189:\n /* \"#utility.yul\":14995:14998 */\n 0x00\n /* \"#utility.yul\":15026:15092 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":15019:15024 */\n dup3\n /* \"#utility.yul\":15016:15093 */\n sub\n /* \"#utility.yul\":15013:15116 */\n tag_509\n jumpi\n /* \"#utility.yul\":15096:15114 */\n tag_509\n tag_406\n jump\t// in\n tag_509:\n pop\n /* \"#utility.yul\":15143:15144 */\n 0x01\n /* \"#utility.yul\":15132:15145 */\n add\n swap1\n /* \"#utility.yul\":14956:15151 */\n jump\t// out\n /* \"#utility.yul\":15156:15487 */\n tag_193:\n /* \"#utility.yul\":15261:15270 */\n 0x00\n /* \"#utility.yul\":15272:15281 */\n dup1\n /* \"#utility.yul\":15314:15322 */\n dup6\n /* \"#utility.yul\":15302:15312 */\n dup6\n /* \"#utility.yul\":15299:15323 */\n gt\n /* \"#utility.yul\":15296:15340 */\n iszero\n tag_511\n jumpi\n /* \"#utility.yul\":15336:15337 */\n 0x00\n /* \"#utility.yul\":15333:15334 */\n dup1\n /* \"#utility.yul\":15326:15338 */\n revert\n /* \"#utility.yul\":15296:15340 */\n tag_511:\n /* \"#utility.yul\":15365:15371 */\n dup4\n /* \"#utility.yul\":15355:15363 */\n dup7\n /* \"#utility.yul\":15352:15372 */\n gt\n /* \"#utility.yul\":15349:15389 */\n iszero\n tag_512\n jumpi\n /* \"#utility.yul\":15385:15386 */\n 0x00\n /* \"#utility.yul\":15382:15383 */\n dup1\n /* \"#utility.yul\":15375:15387 */\n revert\n /* \"#utility.yul\":15349:15389 */\n tag_512:\n pop\n pop\n /* \"#utility.yul\":15411:15434 */\n dup3\n add\n swap4\n /* \"#utility.yul\":15456:15481 */\n swap2\n swap1\n swap3\n sub\n swap2\n pop\n /* \"#utility.yul\":15156:15487 */\n jump\t// out\n /* \"#utility.yul\":15492:15617 */\n tag_211:\n /* \"#utility.yul\":15557:15566 */\n dup1\n dup3\n add\n /* \"#utility.yul\":15578:15588 */\n dup1\n dup3\n gt\n /* \"#utility.yul\":15575:15611 */\n iszero\n tag_80\n jumpi\n /* \"#utility.yul\":15591:15609 */\n tag_80\n tag_406\n jump\t// in\n /* \"#utility.yul\":15622:16014 */\n tag_217:\n /* \"#utility.yul\":15841:15843 */\n 0x60\n /* \"#utility.yul\":15830:15839 */\n dup2\n /* \"#utility.yul\":15823:15844 */\n mstore\n /* \"#utility.yul\":15804:15808 */\n 0x00\n /* \"#utility.yul\":15861:15922 */\n tag_517\n /* \"#utility.yul\":15918:15920 */\n 0x60\n /* \"#utility.yul\":15907:15916 */\n dup4\n /* \"#utility.yul\":15903:15921 */\n add\n /* \"#utility.yul\":15895:15901 */\n dup7\n /* \"#utility.yul\":15887:15893 */\n dup9\n /* \"#utility.yul\":15861:15922 */\n tag_403\n jump\t// in\n tag_517:\n /* \"#utility.yul\":15953:15955 */\n 0x20\n /* \"#utility.yul\":15938:15956 */\n dup4\n add\n /* \"#utility.yul\":15931:15965 */\n swap5\n swap1\n swap5\n mstore\n pop\n /* \"#utility.yul\":15996:15998 */\n 0x40\n /* \"#utility.yul\":15981:15999 */\n add\n /* \"#utility.yul\":15974:16008 */\n mstore\n /* \"#utility.yul\":15853:15922 */\n swap3\n /* \"#utility.yul\":15622:16014 */\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":16525:16813 */\n tag_246:\n /* \"#utility.yul\":16700:16706 */\n dup3\n /* \"#utility.yul\":16689:16698 */\n dup2\n /* \"#utility.yul\":16682:16707 */\n mstore\n /* \"#utility.yul\":16743:16745 */\n 0x40\n /* \"#utility.yul\":16738:16740 */\n 0x20\n /* \"#utility.yul\":16727:16736 */\n dup3\n /* \"#utility.yul\":16723:16741 */\n add\n /* \"#utility.yul\":16716:16746 */\n mstore\n /* \"#utility.yul\":16663:16667 */\n 0x00\n /* \"#utility.yul\":16763:16807 */\n tag_86\n /* \"#utility.yul\":16803:16805 */\n 0x40\n /* \"#utility.yul\":16792:16801 */\n dup4\n /* \"#utility.yul\":16788:16806 */\n add\n /* \"#utility.yul\":16780:16786 */\n dup5\n /* \"#utility.yul\":16763:16807 */\n tag_405\n jump\t// in\n /* \"#utility.yul\":16818:17259 */\n tag_278:\n /* \"#utility.yul\":17037:17043 */\n dup5\n /* \"#utility.yul\":17026:17035 */\n dup2\n /* \"#utility.yul\":17019:17044 */\n mstore\n /* \"#utility.yul\":17092:17134 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":17084:17090 */\n dup5\n /* \"#utility.yul\":17080:17135 */\n and\n /* \"#utility.yul\":17075:17077 */\n 0x20\n /* \"#utility.yul\":17064:17073 */\n dup3\n /* \"#utility.yul\":17060:17078 */\n add\n /* \"#utility.yul\":17053:17136 */\n mstore\n /* \"#utility.yul\":17172:17174 */\n 0x60\n /* \"#utility.yul\":17167:17169 */\n 0x40\n /* \"#utility.yul\":17156:17165 */\n dup3\n /* \"#utility.yul\":17152:17170 */\n add\n /* \"#utility.yul\":17145:17175 */\n mstore\n /* \"#utility.yul\":17000:17004 */\n 0x00\n /* \"#utility.yul\":17192:17253 */\n tag_523\n /* \"#utility.yul\":17249:17251 */\n 0x60\n /* \"#utility.yul\":17238:17247 */\n dup4\n /* \"#utility.yul\":17234:17252 */\n add\n /* \"#utility.yul\":17226:17232 */\n dup5\n /* \"#utility.yul\":17218:17224 */\n dup7\n /* \"#utility.yul\":17192:17253 */\n tag_403\n jump\t// in\n tag_523:\n /* \"#utility.yul\":17184:17253 */\n swap7\n /* \"#utility.yul\":16818:17259 */\n swap6\n pop\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":17264:17508 */\n tag_333:\n /* \"#utility.yul\":17421:17423 */\n 0x20\n /* \"#utility.yul\":17410:17419 */\n dup2\n /* \"#utility.yul\":17403:17424 */\n mstore\n /* \"#utility.yul\":17384:17388 */\n 0x00\n /* \"#utility.yul\":17441:17502 */\n tag_86\n /* \"#utility.yul\":17498:17500 */\n 0x20\n /* \"#utility.yul\":17487:17496 */\n dup4\n /* \"#utility.yul\":17483:17501 */\n add\n /* \"#utility.yul\":17475:17481 */\n dup5\n /* \"#utility.yul\":17467:17473 */\n dup7\n /* \"#utility.yul\":17441:17502 */\n tag_403\n jump\t// in\n /* \"#utility.yul\":17513:17641 */\n tag_336:\n /* \"#utility.yul\":17580:17589 */\n dup2\n dup2\n sub\n /* \"#utility.yul\":17601:17612 */\n dup2\n dup2\n gt\n /* \"#utility.yul\":17598:17635 */\n iszero\n tag_80\n jumpi\n /* \"#utility.yul\":17615:17633 */\n tag_80\n tag_406\n jump\t// in\n /* \"#utility.yul\":17646:17961 */\n tag_344:\n /* \"#utility.yul\":17831:17833 */\n 0x40\n /* \"#utility.yul\":17820:17829 */\n dup2\n /* \"#utility.yul\":17813:17834 */\n mstore\n /* \"#utility.yul\":17794:17798 */\n 0x00\n /* \"#utility.yul\":17851:17912 */\n tag_530\n /* \"#utility.yul\":17908:17910 */\n 0x40\n /* \"#utility.yul\":17897:17906 */\n dup4\n /* \"#utility.yul\":17893:17911 */\n add\n /* \"#utility.yul\":17885:17891 */\n dup6\n /* \"#utility.yul\":17877:17883 */\n dup8\n /* \"#utility.yul\":17851:17912 */\n tag_403\n jump\t// in\n tag_530:\n /* \"#utility.yul\":17843:17912 */\n swap1\n pop\n /* \"#utility.yul\":17948:17954 */\n dup3\n /* \"#utility.yul\":17943:17945 */\n 0x20\n /* \"#utility.yul\":17932:17941 */\n dup4\n /* \"#utility.yul\":17928:17946 */\n add\n /* \"#utility.yul\":17921:17955 */\n mstore\n /* \"#utility.yul\":17646:17961 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":17966:18290 */\n tag_348:\n /* \"#utility.yul\":18149:18151 */\n 0x40\n /* \"#utility.yul\":18138:18147 */\n dup2\n /* \"#utility.yul\":18131:18152 */\n mstore\n /* \"#utility.yul\":18112:18116 */\n 0x00\n /* \"#utility.yul\":18169:18230 */\n tag_532\n /* \"#utility.yul\":18226:18228 */\n 0x40\n /* \"#utility.yul\":18215:18224 */\n dup4\n /* \"#utility.yul\":18211:18229 */\n add\n /* \"#utility.yul\":18203:18209 */\n dup6\n /* \"#utility.yul\":18195:18201 */\n dup8\n /* \"#utility.yul\":18169:18230 */\n tag_403\n jump\t// in\n tag_532:\n /* \"#utility.yul\":18161:18230 */\n swap1\n pop\n /* \"#utility.yul\":18278:18282 */\n 0xff\n /* \"#utility.yul\":18270:18276 */\n dup4\n /* \"#utility.yul\":18266:18283 */\n and\n /* \"#utility.yul\":18261:18263 */\n 0x20\n /* \"#utility.yul\":18250:18259 */\n dup4\n /* \"#utility.yul\":18246:18264 */\n add\n /* \"#utility.yul\":18239:18284 */\n mstore\n /* \"#utility.yul\":17966:18290 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19083:19479 */\n tag_363:\n /* \"#utility.yul\":19290:19292 */\n 0x60\n /* \"#utility.yul\":19279:19288 */\n dup2\n /* \"#utility.yul\":19272:19293 */\n mstore\n /* \"#utility.yul\":19253:19257 */\n 0x00\n /* \"#utility.yul\":19310:19371 */\n tag_536\n /* \"#utility.yul\":19367:19369 */\n 0x60\n /* \"#utility.yul\":19356:19365 */\n dup4\n /* \"#utility.yul\":19352:19370 */\n add\n /* \"#utility.yul\":19344:19350 */\n dup7\n /* \"#utility.yul\":19336:19342 */\n dup9\n /* \"#utility.yul\":19310:19371 */\n tag_403\n jump\t// in\n tag_536:\n /* \"#utility.yul\":19402:19404 */\n 0x20\n /* \"#utility.yul\":19387:19405 */\n dup4\n add\n /* \"#utility.yul\":19380:19414 */\n swap5\n swap1\n swap5\n mstore\n pop\n /* \"#utility.yul\":19457:19471 */\n swap1\n iszero\n /* \"#utility.yul\":19450:19472 */\n iszero\n /* \"#utility.yul\":19445:19447 */\n 0x40\n /* \"#utility.yul\":19430:19448 */\n swap1\n swap2\n add\n /* \"#utility.yul\":19423:19473 */\n mstore\n /* \"#utility.yul\":19302:19371 */\n swap3\n /* \"#utility.yul\":19083:19479 */\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19484:19805 */\n tag_379:\n /* \"#utility.yul\":19675:19681 */\n dup4\n /* \"#utility.yul\":19664:19673 */\n dup2\n /* \"#utility.yul\":19657:19682 */\n mstore\n /* \"#utility.yul\":19718:19720 */\n 0x40\n /* \"#utility.yul\":19713:19715 */\n 0x20\n /* \"#utility.yul\":19702:19711 */\n dup3\n /* \"#utility.yul\":19698:19716 */\n add\n /* \"#utility.yul\":19691:19721 */\n mstore\n /* \"#utility.yul\":19638:19642 */\n 0x00\n /* \"#utility.yul\":19738:19799 */\n tag_538\n /* \"#utility.yul\":19795:19797 */\n 0x40\n /* \"#utility.yul\":19784:19793 */\n dup4\n /* \"#utility.yul\":19780:19798 */\n add\n /* \"#utility.yul\":19772:19778 */\n dup5\n /* \"#utility.yul\":19764:19770 */\n dup7\n /* \"#utility.yul\":19738:19799 */\n tag_403\n jump\t// in\n tag_538:\n /* \"#utility.yul\":19730:19799 */\n swap6\n /* \"#utility.yul\":19484:19805 */\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":19810:20059 */\n tag_383:\n /* \"#utility.yul\":19879:19885 */\n 0x00\n /* \"#utility.yul\":19932:19934 */\n 0x20\n /* \"#utility.yul\":19920:19929 */\n dup3\n /* \"#utility.yul\":19911:19918 */\n dup5\n /* \"#utility.yul\":19907:19930 */\n sub\n /* \"#utility.yul\":19903:19935 */\n slt\n /* \"#utility.yul\":19900:19952 */\n iszero\n tag_540\n jumpi\n /* \"#utility.yul\":19948:19949 */\n 0x00\n /* \"#utility.yul\":19945:19946 */\n dup1\n /* \"#utility.yul\":19938:19950 */\n revert\n /* \"#utility.yul\":19900:19952 */\n tag_540:\n /* \"#utility.yul\":19980:19989 */\n dup2\n /* \"#utility.yul\":19974:19990 */\n mload\n /* \"#utility.yul\":19999:20029 */\n tag_82\n /* \"#utility.yul\":20023:20028 */\n dup2\n /* \"#utility.yul\":19999:20029 */\n tag_397\n jump\t// in\n\n auxdata: 0xa26469706673582212209bb95d18e97f278aa47e0c04c20d5a6af9bdb6d473c6d4051192cd96fc17866864736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": { - "@_1068": { - "entryPoint": null, - "id": 1068, - "parameterSlots": 0, - "returnSlots": 0 - } - }, - "generatedSources": [], - "linkReferences": {}, - "object": "60a060405234801561001057600080fd5b50306080526080516121de61002d600039600050506121de6000f3fe6080604052600436106100bc5760003560e01c806361c2926c116100745780638c3f55631161004e5780638c3f55631461025357806390042baf14610273578063affed0e0146102ab57600080fd5b806361c2926c146101cb5780637a9a1628146101eb578063853c50681461020b57600080fd5b806320c13b0b116100a557806320c13b0b14610147578063295614261461016757806357c56d6b1461018957600080fd5b806301ffc9a7146100c15780631626ba7e146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004611880565b6102c0565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b506101166101113660046118e6565b6102d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ed565b34801561015357600080fd5b50610116610162366004611932565b61031e565b34801561017357600080fd5b5061018761018236600461199e565b610383565b005b34801561019557600080fd5b506101bd7f8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d181565b6040519081526020016100ed565b3480156101d757600080fd5b506101876101e63660046119fc565b6103d5565b3480156101f757600080fd5b50610187610206366004611a3e565b61041a565b34801561021757600080fd5b5061022b6102263660046118e6565b610447565b604080519586526020860194909452928401919091526060830152608082015260a0016100ed565b34801561025f57600080fd5b506101bd61026e36600461199e565b61060f565b610286610281366004611ae7565b61063b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b3480156102b757600080fd5b506101bd610725565b60006102cb82610736565b92915050565b6000806102df858585610792565b509050801561031157507f1626ba7e000000000000000000000000000000000000000000000000000000009050610317565b50600090505b9392505050565b6000806103438686604051610334929190611bb6565b60405180910390208585610792565b509050801561037557507f20c13b0b00000000000000000000000000000000000000000000000000000000905061037b565b50600090505b949350505050565b3330146103c9576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044015b60405180910390fd5b6103d2816107ca565b50565b600061040883836040516020016103ed929190611d97565b604051602081830303815290604052805190602001206107fc565b9050610415818484610881565b505050565b600061043286866040516020016103ed929190611ddf565b905061043f818787610881565b505050505050565b6000806000806000808787600081811061046357610463611e27565b909101357fff000000000000000000000000000000000000000000000000000000000000001691508190506104b95761049b896107fc565b92506104a8838989610a0e565b929850909650945091506106049050565b7fff00000000000000000000000000000000000000000000000000000000000000818116016104f8576104eb896107fc565b92506104a8838989610a5f565b7ffe000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082160161054a576104eb89610a8b565b7ffd000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216016105ae5761059e898989610af8565b9550955095509550955050610604565b6040517f6085cd820000000000000000000000000000000000000000000000000000000081527fff00000000000000000000000000000000000000000000000000000000000000821660048201526024016103c0565b939792965093509350565b60006102cb7f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83610c75565b600033301461067e576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044016103c0565b81516020830134f0905073ffffffffffffffffffffffffffffffffffffffff81166106d757816040517f0d2571910000000000000000000000000000000000000000000000000000000081526004016103c09190611eba565b60405173ffffffffffffffffffffffffffffffffffffffff821681527fa506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c9060200160405180910390a1919050565b6000610731600061060f565b905090565b60007f6ffbd451000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083160161078957506001919050565b6102cb82610cd3565b60008060008060006107a5888888610447565b509650919450925090508282108015906107bd575060015b9450505050935093915050565b6040517fa038794000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f190100000000000000000000000000000000000000000000000000000000000060208201524660228201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166042820152605681018290526000906076015b604051602081830303815290604052805190602001209050919050565b8060005b81811015610a0757368484838181106108a0576108a0611e27565b90506020028101906108b29190611ecd565b90506108c16020820182611f0b565b156108fb576040517f230d1ccc000000000000000000000000000000000000000000000000000000008152600481018390526024016103c0565b6040810135805a101561094e5782815a6040517f2bb3e3ba0000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915260448201526064016103c0565b60006109886109636080850160608601611f26565b608085013584156109745784610976565b5a5b61098360a0880188611f41565b610d2f565b905080156109cf57877f5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7856040516109c291815260200190565b60405180910390a26109f1565b6109f16109e26040850160208601611f0b565b89866109ec610d4c565b610d6b565b50505080806109ff90611fd5565b915050610885565b5050505050565b6000808080610a2987610a24876006818b61200d565b610db9565b6000908152873560f01c6020818152604080842084526002909a013560e01c908190529890912090999198509695509350505050565b6000808080610a7a87610a75876001818b61200d565b610a0e565b935093509350935093509350935093565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201526000602282018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660428301526056820183905290607601610864565b6000808080806004600188013560e81c82610b138383612037565b9050610b258b61022683868d8f61200d565b939b5091995097509550935087871015610b7d57610b4581848b8d61200d565b89896040517fb006aba00000000000000000000000000000000000000000000000000000000081526004016103c0949392919061204a565b8092505b88831015610c675760038301928a013560e81c9150610ba08383612037565b90506000610bc2610bb08861124f565b8c8c879086926102269392919061200d565b939c50919a5098509091505088881015610c1a57610be282858c8e61200d565b8a8a6040517fb006aba00000000000000000000000000000000000000000000000000000000081526004016103c0949392919061204a565b848110610c5d576040517f37daf62b00000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016103c0565b9350915081610b81565b505050939792965093509350565b6000808383604051602001610c94929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012054949350505050565b60007fe4a77bbc000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601610d2657506001919050565b6102cb82611283565b6000604051828482376000808483898b8af1979650505050505050565b60603d604051915060208201818101604052818352816000823e505090565b8315610d7957805160208201fd5b827fab46c69f7f32e1bf09b0725853da82a211e5402a0600296ab499a2fb5ea3b4198383604051610dab929190612071565b60405180910390a250505050565b60008060005b8381101561124657600181019085013560f81c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101610e6057601582019186013560f881901c9060581c73ffffffffffffffffffffffffffffffffffffffff81169074ff000000000000000000000000000000000000000016811785610e465780610e55565b60008681526020829052604090205b955050505050610dbf565b80610ef65760018201918681013560f81c906043016000610e8c8a610e8784888c8e61200d565b61136d565b60ff841697909701969194508491905060a083901b74ff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff82161786610edb5780610eea565b60008781526020829052604090205b96505050505050610dbf565b6002810361101e576000808784013560f881901c9060581c73ffffffffffffffffffffffffffffffffffffffff16601586019550909250905060008885013560e81c600386018162ffffff169150809650819250505060008186019050610f6f8b848c8c8a908692610f6a9392919061200d565b611630565b610fb7578a83610f8183898d8f61200d565b6040517f9a9462320000000000000000000000000000000000000000000000000000000081526004016103c0949392919061208a565b60ff8416979097019694508460a084901b74ff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617876110025780611011565b60008881526020829052604090205b9750505050505050610dbf565b60038103611051576020820191860135836110395780611048565b60008481526020829052604090205b93505050610dbf565b6004810361109d576003808301928781013560e81c919082010160008061107e8b610a2485898d8f61200d565b60009889526020526040909720969097019650909350610dbf92505050565b600681036111a55760008287013560f81c60018401935060ff16905060008784013560f01c60028501945061ffff16905060008885013560e81c600386018162ffffff16915080965081925050506000818601905060008061110b8d8d8d8b908792610a249392919061200d565b9398508893909250905084821061112157988501985b604080517f53657175656e6365206e657374656420636f6e6669673a0a0000000000000000602080830191909152603882018490526058820188905260788083018a90528351808403909101815260989092019092528051910120896111875780611196565b60008a81526020829052604090205b99505050505050505050610dbf565b600581036112115760208201918601358781036111e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94505b60006111eb82611817565b9050846111f85780611207565b60008581526020829052604090205b9450505050610dbf565b6040517fb2505f7c000000000000000000000000000000000000000000000000000000008152600481018290526024016103c0565b50935093915050565b7f8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d160009081526020829052604081206102cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fac6a444e00000000000000000000000000000000000000000000000000000000148061131657507fffffffff0000000000000000000000000000000000000000000000000000000082167f36e7817500000000000000000000000000000000000000000000000000000000145b1561132357506001919050565b7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102cb565b6000604282146113ad5782826040517f2ee17a3d0000000000000000000000000000000000000000000000000000000081526004016103c09291906120ca565b60006113c66113bd6001856120de565b85013560f81c90565b60ff169050604084013560f81c843560208601357f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081111561143a578686826040517fad4aac760000000000000000000000000000000000000000000000000000000081526004016103c0939291906120f1565b8260ff16601b1415801561145257508260ff16601c14155b1561148f578686846040517fe578897e0000000000000000000000000000000000000000000000000000000081526004016103c093929190612115565b600184036114fc576040805160008152602081018083528a905260ff851691810191909152606081018390526080810182905260019060a0015b6020604051602081039080840390855afa1580156114eb573d6000803e3d6000fd5b5050506020604051035194506115d4565b60028403611599576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101899052600190605c01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff861690820152606081018490526080810183905260a0016114c9565b86868560016040517f9dfba8520000000000000000000000000000000000000000000000000000000081526004016103c0949392919061213c565b73ffffffffffffffffffffffffffffffffffffffff85166116255786866040517f6c1719d20000000000000000000000000000000000000000000000000000000081526004016103c09291906120ca565b505050509392505050565b600081810361166b576040517fac241e1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838361167a6001826120de565b81811061168957611689611e27565b919091013560f81c91505060018114806116a35750600281145b156116e8578473ffffffffffffffffffffffffffffffffffffffff166116ca87868661136d565b73ffffffffffffffffffffffffffffffffffffffff1614915061180e565b600381036117d35773ffffffffffffffffffffffffffffffffffffffff8516631626ba7e878660008761171c6001826120de565b926117299392919061200d565b6040518463ffffffff1660e01b815260040161174793929190612168565b602060405180830381865afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611788919061218b565b7fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014915061180e565b83838260006040517f9dfba8520000000000000000000000000000000000000000000000000000000081526004016103c0949392919061213c565b50949350505050565b6040517f53657175656e636520737461746963206469676573743a0a0000000000000000602082015260388101829052600090605801610864565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146103d257600080fd5b60006020828403121561189257600080fd5b813561031781611852565b60008083601f8401126118af57600080fd5b50813567ffffffffffffffff8111156118c757600080fd5b6020830191508360208285010111156118df57600080fd5b9250929050565b6000806000604084860312156118fb57600080fd5b83359250602084013567ffffffffffffffff81111561191957600080fd5b6119258682870161189d565b9497909650939450505050565b6000806000806040858703121561194857600080fd5b843567ffffffffffffffff8082111561196057600080fd5b61196c8883890161189d565b9096509450602087013591508082111561198557600080fd5b506119928782880161189d565b95989497509550505050565b6000602082840312156119b057600080fd5b5035919050565b60008083601f8401126119c957600080fd5b50813567ffffffffffffffff8111156119e157600080fd5b6020830191508360208260051b85010111156118df57600080fd5b60008060208385031215611a0f57600080fd5b823567ffffffffffffffff811115611a2657600080fd5b611a32858286016119b7565b90969095509350505050565b600080600080600060608688031215611a5657600080fd5b853567ffffffffffffffff80821115611a6e57600080fd5b611a7a89838a016119b7565b9097509550602088013594506040880135915080821115611a9a57600080fd5b50611aa78882890161189d565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611af957600080fd5b813567ffffffffffffffff80821115611b1157600080fd5b818401915084601f830112611b2557600080fd5b813581811115611b3757611b37611ab8565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611b7d57611b7d611ab8565b81604052828152876020848701011115611b9657600080fd5b826020860160208301376000928101602001929092525095945050505050565b8183823760009101908152919050565b80358015158114611bd657600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bd657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260006020808501808196508560051b810191508460005b87811015611d8a57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41883603018112611ca157600080fd5b870160c0611cae82611bc6565b15158652611cbd878301611bc6565b15158688015260408281013590870152606073ffffffffffffffffffffffffffffffffffffffff611cef828501611bdb565b16908701526080828101359087015260a080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112611d3557600080fd5b90920187810192903567ffffffffffffffff811115611d5357600080fd5b803603841315611d6257600080fd5b8282890152611d748389018286611bff565b9c89019c97505050928601925050600101611c62565b5091979650505050505050565b60408152600560408201527f73656c663a000000000000000000000000000000000000000000000000000000606082015260806020820152600061037b608083018486611c48565b60408152600660408201527f67756573743a0000000000000000000000000000000000000000000000000000606082015260806020820152600061037b608083018486611c48565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815180845260005b81811015611e7c57602081850181015186830182015201611e60565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006103176020830184611e56565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112611f0157600080fd5b9190910192915050565b600060208284031215611f1d57600080fd5b61031782611bc6565b600060208284031215611f3857600080fd5b61031782611bdb565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f7657600080fd5b83018035915067ffffffffffffffff821115611f9157600080fd5b6020019150368190038213156118df57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200657612006611fa6565b5060010190565b6000808585111561201d57600080fd5b8386111561202a57600080fd5b5050820193919092039150565b808201808211156102cb576102cb611fa6565b60608152600061205e606083018688611bff565b6020830194909452506040015292915050565b82815260406020820152600061037b6040830184611e56565b84815273ffffffffffffffffffffffffffffffffffffffff841660208201526060604082015260006120c0606083018486611bff565b9695505050505050565b60208152600061037b602083018486611bff565b818103818111156102cb576102cb611fa6565b604081526000612105604083018587611bff565b9050826020830152949350505050565b604081526000612129604083018587611bff565b905060ff83166020830152949350505050565b606081526000612150606083018688611bff565b60208301949094525090151560409091015292915050565b838152604060208201526000612182604083018486611bff565b95945050505050565b60006020828403121561219d57600080fd5b81516103178161185256fea26469706673582212209bb95d18e97f278aa47e0c04c20d5a6af9bdb6d473c6d4051192cd96fc17866864736f6c63430008120033", - "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0x21DE PUSH2 0x2D PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH2 0x21DE PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x61C2926C GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x8C3F5563 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C3F5563 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x90042BAF EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xAFFED0E0 EQ PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x61C2926C EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x7A9A1628 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0x853C5068 EQ PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x20C13B0B GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x20C13B0B EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x29561426 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x57C56D6B EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x1880 JUMP JUMPDEST PUSH2 0x2C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x18E6 JUMP JUMPDEST PUSH2 0x2D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x162 CALLDATASIZE PUSH1 0x4 PUSH2 0x1932 JUMP JUMPDEST PUSH2 0x31E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x199E JUMP JUMPDEST PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH32 0x8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x3D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A3E JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x18E6 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x199E JUMP JUMPDEST PUSH2 0x60F JUMP JUMPDEST PUSH2 0x286 PUSH2 0x281 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AE7 JUMP JUMPDEST PUSH2 0x63B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH2 0x725 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CB DUP3 PUSH2 0x736 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DF DUP6 DUP6 DUP6 PUSH2 0x792 JUMP JUMPDEST POP SWAP1 POP DUP1 ISZERO PUSH2 0x311 JUMPI POP PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP1 POP PUSH2 0x317 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x343 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x334 SWAP3 SWAP2 SWAP1 PUSH2 0x1BB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP6 DUP6 PUSH2 0x792 JUMP JUMPDEST POP SWAP1 POP DUP1 ISZERO PUSH2 0x375 JUMPI POP PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 SWAP1 POP PUSH2 0x37B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x3C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3D2 DUP2 PUSH2 0x7CA JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ED SWAP3 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x7FC JUMP JUMPDEST SWAP1 POP PUSH2 0x415 DUP2 DUP5 DUP5 PUSH2 0x881 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x432 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ED SWAP3 SWAP2 SWAP1 PUSH2 0x1DDF JUMP JUMPDEST SWAP1 POP PUSH2 0x43F DUP2 DUP8 DUP8 PUSH2 0x881 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x463 JUMPI PUSH2 0x463 PUSH2 0x1E27 JUMP JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP2 POP DUP2 SWAP1 POP PUSH2 0x4B9 JUMPI PUSH2 0x49B DUP10 PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP PUSH2 0x4A8 DUP4 DUP10 DUP10 PUSH2 0xA0E JUMP JUMPDEST SWAP3 SWAP9 POP SWAP1 SWAP7 POP SWAP5 POP SWAP2 POP PUSH2 0x604 SWAP1 POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 DUP2 AND ADD PUSH2 0x4F8 JUMPI PUSH2 0x4EB DUP10 PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP PUSH2 0x4A8 DUP4 DUP10 DUP10 PUSH2 0xA5F JUMP JUMPDEST PUSH32 0xFE00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND ADD PUSH2 0x54A JUMPI PUSH2 0x4EB DUP10 PUSH2 0xA8B JUMP JUMPDEST PUSH32 0xFD00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND ADD PUSH2 0x5AE JUMPI PUSH2 0x59E DUP10 DUP10 DUP10 PUSH2 0xAF8 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x604 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6085CD8200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CB PUSH32 0x8D0BF1FD623D628C741362C1289948E57B3E2905218C676D3E69ABEE36D6AE2E DUP4 PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x67E JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x3C0 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD CALLVALUE CREATE SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6D7 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xD25719100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x1EBA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0xA506AD4E7F05ECEBA62A023C3219E5BD98A615F4FA87E2AFB08A2DA5CF62BF0C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x731 PUSH1 0x0 PUSH2 0x60F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6FFBD45100000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0x789 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CB DUP3 PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x7A5 DUP9 DUP9 DUP9 PUSH2 0x447 JUMP JUMPDEST POP SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP3 DUP3 LT DUP1 ISZERO SWAP1 PUSH2 0x7BD JUMPI POP PUSH1 0x1 JUMPDEST SWAP5 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA038794000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE CHAINID PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x56 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x76 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA07 JUMPI CALLDATASIZE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x8A0 JUMPI PUSH2 0x8A0 PUSH2 0x1E27 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x8B2 SWAP2 SWAP1 PUSH2 0x1ECD JUMP JUMPDEST SWAP1 POP PUSH2 0x8C1 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x1F0B JUMP JUMPDEST ISZERO PUSH2 0x8FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x230D1CCC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP1 GAS LT ISZERO PUSH2 0x94E JUMPI DUP3 DUP2 GAS PUSH1 0x40 MLOAD PUSH32 0x2BB3E3BA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x988 PUSH2 0x963 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x1F26 JUMP JUMPDEST PUSH1 0x80 DUP6 ADD CALLDATALOAD DUP5 ISZERO PUSH2 0x974 JUMPI DUP5 PUSH2 0x976 JUMP JUMPDEST GAS JUMPDEST PUSH2 0x983 PUSH1 0xA0 DUP9 ADD DUP9 PUSH2 0x1F41 JUMP JUMPDEST PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9CF JUMPI DUP8 PUSH32 0x5C4EEB02DABF8976016AB414D617F9A162936DCACE3CDEF8C69EF6E262AD5AE7 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9C2 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x9F1 PUSH2 0x9E2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1F0B JUMP JUMPDEST DUP10 DUP7 PUSH2 0x9EC PUSH2 0xD4C JUMP JUMPDEST PUSH2 0xD6B JUMP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x9FF SWAP1 PUSH2 0x1FD5 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x885 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xA29 DUP8 PUSH2 0xA24 DUP8 PUSH1 0x6 DUP2 DUP12 PUSH2 0x200D JUMP JUMPDEST PUSH2 0xDB9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE DUP8 CALLDATALOAD PUSH1 0xF0 SHR PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP5 MSTORE PUSH1 0x2 SWAP1 SWAP11 ADD CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 SWAP1 MSTORE SWAP9 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP10 SWAP2 SWAP9 POP SWAP7 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xA7A DUP8 PUSH2 0xA75 DUP8 PUSH1 0x1 DUP2 DUP12 PUSH2 0x200D JUMP JUMPDEST PUSH2 0xA0E JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x22 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x42 DUP4 ADD MSTORE PUSH1 0x56 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH1 0x76 ADD PUSH2 0x864 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH1 0x4 PUSH1 0x1 DUP9 ADD CALLDATALOAD PUSH1 0xE8 SHR DUP3 PUSH2 0xB13 DUP4 DUP4 PUSH2 0x2037 JUMP JUMPDEST SWAP1 POP PUSH2 0xB25 DUP12 PUSH2 0x226 DUP4 DUP7 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP12 POP SWAP2 SWAP10 POP SWAP8 POP SWAP6 POP SWAP4 POP DUP8 DUP8 LT ISZERO PUSH2 0xB7D JUMPI PUSH2 0xB45 DUP2 DUP5 DUP12 DUP14 PUSH2 0x200D JUMP JUMPDEST DUP10 DUP10 PUSH1 0x40 MLOAD PUSH32 0xB006ABA000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x204A JUMP JUMPDEST DUP1 SWAP3 POP JUMPDEST DUP9 DUP4 LT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x3 DUP4 ADD SWAP3 DUP11 ADD CALLDATALOAD PUSH1 0xE8 SHR SWAP2 POP PUSH2 0xBA0 DUP4 DUP4 PUSH2 0x2037 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBC2 PUSH2 0xBB0 DUP9 PUSH2 0x124F JUMP JUMPDEST DUP13 DUP13 DUP8 SWAP1 DUP7 SWAP3 PUSH2 0x226 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP13 POP SWAP2 SWAP11 POP SWAP9 POP SWAP1 SWAP2 POP POP DUP9 DUP9 LT ISZERO PUSH2 0xC1A JUMPI PUSH2 0xBE2 DUP3 DUP6 DUP13 DUP15 PUSH2 0x200D JUMP JUMPDEST DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB006ABA000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x204A JUMP JUMPDEST DUP5 DUP2 LT PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x37DAF62B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x3C0 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0xB81 JUMP JUMPDEST POP POP POP SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC94 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xE4A77BBC00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0xD26 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CB DUP3 PUSH2 0x1283 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 DUP5 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 DUP5 DUP4 DUP10 DUP12 DUP11 CALL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 RETURNDATASIZE PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 DUP4 MSTORE DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY POP POP SWAP1 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xD79 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST DUP3 PUSH32 0xAB46C69F7F32E1BF09B0725853DA82A211E5402A0600296AB499A2FB5EA3B419 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xDAB SWAP3 SWAP2 SWAP1 PUSH2 0x2071 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1246 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 DUP6 ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD PUSH2 0xE60 JUMPI PUSH1 0x15 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD PUSH1 0xF8 DUP2 SWAP1 SHR SWAP1 PUSH1 0x58 SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 AND DUP2 OR DUP6 PUSH2 0xE46 JUMPI DUP1 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP6 POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST DUP1 PUSH2 0xEF6 JUMPI PUSH1 0x1 DUP3 ADD SWAP2 DUP7 DUP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP1 PUSH1 0x43 ADD PUSH1 0x0 PUSH2 0xE8C DUP11 PUSH2 0xE87 DUP5 DUP9 DUP13 DUP15 PUSH2 0x200D JUMP JUMPDEST PUSH2 0x136D JUMP JUMPDEST PUSH1 0xFF DUP5 AND SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP2 SWAP5 POP DUP5 SWAP2 SWAP1 POP PUSH1 0xA0 DUP4 SWAP1 SHL PUSH21 0xFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND OR DUP7 PUSH2 0xEDB JUMPI DUP1 PUSH2 0xEEA JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP7 POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x101E JUMPI PUSH1 0x0 DUP1 DUP8 DUP5 ADD CALLDATALOAD PUSH1 0xF8 DUP2 SWAP1 SHR SWAP1 PUSH1 0x58 SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x15 DUP7 ADD SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP9 DUP6 ADD CALLDATALOAD PUSH1 0xE8 SHR PUSH1 0x3 DUP7 ADD DUP2 PUSH3 0xFFFFFF AND SWAP2 POP DUP1 SWAP7 POP DUP2 SWAP3 POP POP POP PUSH1 0x0 DUP2 DUP7 ADD SWAP1 POP PUSH2 0xF6F DUP12 DUP5 DUP13 DUP13 DUP11 SWAP1 DUP7 SWAP3 PUSH2 0xF6A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST PUSH2 0x1630 JUMP JUMPDEST PUSH2 0xFB7 JUMPI DUP11 DUP4 PUSH2 0xF81 DUP4 DUP10 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9A94623200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x208A JUMP JUMPDEST PUSH1 0xFF DUP5 AND SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP5 POP DUP5 PUSH1 0xA0 DUP5 SWAP1 SHL PUSH21 0xFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR DUP8 PUSH2 0x1002 JUMPI DUP1 PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP8 POP POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x1051 JUMPI PUSH1 0x20 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD DUP4 PUSH2 0x1039 JUMPI DUP1 PUSH2 0x1048 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP4 POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x109D JUMPI PUSH1 0x3 DUP1 DUP4 ADD SWAP3 DUP8 DUP2 ADD CALLDATALOAD PUSH1 0xE8 SHR SWAP2 SWAP1 DUP3 ADD ADD PUSH1 0x0 DUP1 PUSH2 0x107E DUP12 PUSH2 0xA24 DUP6 DUP10 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x0 SWAP9 DUP10 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 SWAP7 SWAP1 SWAP8 ADD SWAP7 POP SWAP1 SWAP4 POP PUSH2 0xDBF SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x11A5 JUMPI PUSH1 0x0 DUP3 DUP8 ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH1 0xFF AND SWAP1 POP PUSH1 0x0 DUP8 DUP5 ADD CALLDATALOAD PUSH1 0xF0 SHR PUSH1 0x2 DUP6 ADD SWAP5 POP PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 DUP9 DUP6 ADD CALLDATALOAD PUSH1 0xE8 SHR PUSH1 0x3 DUP7 ADD DUP2 PUSH3 0xFFFFFF AND SWAP2 POP DUP1 SWAP7 POP DUP2 SWAP3 POP POP POP PUSH1 0x0 DUP2 DUP7 ADD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x110B DUP14 DUP14 DUP14 DUP12 SWAP1 DUP8 SWAP3 PUSH2 0xA24 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP9 POP DUP9 SWAP4 SWAP1 SWAP3 POP SWAP1 POP DUP5 DUP3 LT PUSH2 0x1121 JUMPI SWAP9 DUP6 ADD SWAP9 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x53657175656E6365206E657374656420636F6E6669673A0A0000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x38 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x58 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x78 DUP1 DUP4 ADD DUP11 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x98 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 DUP10 PUSH2 0x1187 JUMPI DUP1 PUSH2 0x1196 JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x1211 JUMPI PUSH1 0x20 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD DUP8 DUP2 SUB PUSH2 0x11E0 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP3 PUSH2 0x1817 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x11F8 JUMPI DUP1 PUSH2 0x1207 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP5 POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB2505F7C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xAC6A444E00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1316 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x36E7817500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x1323 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x42 DUP3 EQ PUSH2 0x13AD JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x2EE17A3D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP3 SWAP2 SWAP1 PUSH2 0x20CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C6 PUSH2 0x13BD PUSH1 0x1 DUP6 PUSH2 0x20DE JUMP JUMPDEST DUP6 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0xF8 SHR DUP5 CALLDATALOAD PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP2 GT ISZERO PUSH2 0x143A JUMPI DUP7 DUP7 DUP3 PUSH1 0x40 MLOAD PUSH32 0xAD4AAC7600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20F1 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x1452 JUMPI POP DUP3 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x148F JUMPI DUP7 DUP7 DUP5 PUSH1 0x40 MLOAD PUSH32 0xE578897E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 DUP5 SUB PUSH2 0x14FC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 DUP4 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP6 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP5 POP PUSH2 0x15D4 JUMP JUMPDEST PUSH1 0x2 DUP5 SUB PUSH2 0x1599 JUMPI PUSH1 0x40 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3C DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0x5C ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP5 MSTORE SWAP1 DUP4 ADD DUP1 DUP4 MSTORE MSTORE PUSH1 0xFF DUP7 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 ADD PUSH2 0x14C9 JUMP JUMPDEST DUP7 DUP7 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH32 0x9DFBA85200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x1625 JUMPI DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x6C1719D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP3 SWAP2 SWAP1 PUSH2 0x20CA JUMP JUMPDEST POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB PUSH2 0x166B JUMPI PUSH1 0x40 MLOAD PUSH32 0xAC241E1100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 PUSH2 0x167A PUSH1 0x1 DUP3 PUSH2 0x20DE JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x1689 JUMPI PUSH2 0x1689 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP2 POP POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x16A3 JUMPI POP PUSH1 0x2 DUP2 EQ JUMPDEST ISZERO PUSH2 0x16E8 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16CA DUP8 DUP7 DUP7 PUSH2 0x136D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP2 POP PUSH2 0x180E JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x17D3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH4 0x1626BA7E DUP8 DUP7 PUSH1 0x0 DUP8 PUSH2 0x171C PUSH1 0x1 DUP3 PUSH2 0x20DE JUMP JUMPDEST SWAP3 PUSH2 0x1729 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1747 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1764 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1788 SWAP2 SWAP1 PUSH2 0x218B JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP2 POP PUSH2 0x180E JUMP JUMPDEST DUP4 DUP4 DUP3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x9DFBA85200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x53657175656E636520737461746963206469676573743A0A0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x38 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x58 ADD PUSH2 0x864 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x317 DUP2 PUSH2 0x1852 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x18AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1925 DUP7 DUP3 DUP8 ADD PUSH2 0x189D JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x196C DUP9 DUP4 DUP10 ADD PUSH2 0x189D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1992 DUP8 DUP3 DUP9 ADD PUSH2 0x189D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x19C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A32 DUP6 DUP3 DUP7 ADD PUSH2 0x19B7 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1A56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7A DUP10 DUP4 DUP11 ADD PUSH2 0x19B7 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA7 DUP9 DUP3 DUP10 ADD PUSH2 0x189D JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B37 JUMPI PUSH2 0x1B37 PUSH2 0x1AB8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1B7D JUMPI PUSH2 0x1B7D PUSH2 0x1AB8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP6 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP5 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1D8A JUMPI DUP3 DUP5 SUB DUP10 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP9 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1CA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 ADD PUSH1 0xC0 PUSH2 0x1CAE DUP3 PUSH2 0x1BC6 JUMP JUMPDEST ISZERO ISZERO DUP7 MSTORE PUSH2 0x1CBD DUP8 DUP4 ADD PUSH2 0x1BC6 JUMP JUMPDEST ISZERO ISZERO DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1CEF DUP3 DUP6 ADD PUSH2 0x1BDB JUMP JUMPDEST AND SWAP1 DUP8 ADD MSTORE PUSH1 0x80 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP8 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD CALLDATALOAD CALLDATASIZE DUP5 SWAP1 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 ADD DUP2 SLT PUSH2 0x1D35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 ADD DUP8 DUP2 ADD SWAP3 SWAP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP5 SGT ISZERO PUSH2 0x1D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP3 DUP10 ADD MSTORE PUSH2 0x1D74 DUP4 DUP10 ADD DUP3 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP13 DUP10 ADD SWAP13 SWAP8 POP POP POP SWAP3 DUP7 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1C62 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x5 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x73656C663A000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x6 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x67756573743A0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E7C JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1E60 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x317 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1E56 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1F01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x317 DUP3 PUSH2 0x1BC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x317 DUP3 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1F76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2006 JUMPI PUSH2 0x2006 PUSH2 0x1FA6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x201D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x202A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2CB JUMPI PUSH2 0x2CB PUSH2 0x1FA6 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x205E PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1E56 JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x20C0 PUSH1 0x60 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2CB JUMPI PUSH2 0x2CB PUSH2 0x1FA6 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2105 PUSH1 0x40 DUP4 ADD DUP6 DUP8 PUSH2 0x1BFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2129 PUSH1 0x40 DUP4 ADD DUP6 DUP8 PUSH2 0x1BFF JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2150 PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP SWAP1 ISZERO ISZERO PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2182 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x219D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x317 DUP2 PUSH2 0x1852 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 0xB9 0x5D XOR 0xE9 PUSH32 0x278AA47E0C04C20D5A6AF9BDB6D473C6D4051192CD96FC17866864736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "640:2693:1:-:0;;;;;;;;;;;;-1:-1:-1;200:4:7;185:20;;640:2693:1;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": { - "@SET_IMAGE_HASH_TYPE_HASH_2042": { - "entryPoint": null, - "id": 2042, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@_executeGuest_199": { - "entryPoint": 2177, - "id": 199, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_hashSetImageHashStruct_2071": { - "entryPoint": 4687, - "id": 2071, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@_isValidImage_211": { - "entryPoint": null, - "id": 211, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@_leafForAddressAndWeight_1424": { - "entryPoint": null, - "id": 1424, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@_leafForHardcodedSubdigest_1441": { - "entryPoint": 6167, - "id": 1441, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@_leafForNested_1464": { - "entryPoint": null, - "id": 1464, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@_revertBytes_807": { - "entryPoint": 3435, - "id": 807, - "parameterSlots": 4, - "returnSlots": 0 - }, - "@_signatureValidation_457": { - "entryPoint": 1938, - "id": 457, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@_updateImageHash_222": { - "entryPoint": 1994, - "id": 222, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@call_2515": { - "entryPoint": 3375, - "id": 2515, - "parameterSlots": 5, - "returnSlots": 1 - }, - "@chainedRecover_2217": { - "entryPoint": 2808, - "id": 2217, - "parameterSlots": 3, - "returnSlots": 5 - }, - "@createContract_876": { - "entryPoint": 1595, - "id": 876, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@execute_74": { - "entryPoint": 1050, - "id": 74, - "parameterSlots": 5, - "returnSlots": 0 - }, - "@fkeccak256_2491": { - "entryPoint": null, - "id": 2491, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@isValidSignature_2797": { - "entryPoint": 5680, - "id": 2797, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@isValidSignature_488": { - "entryPoint": 798, - "id": 488, - "parameterSlots": 4, - "returnSlots": 1 - }, - "@isValidSignature_517": { - "entryPoint": 721, - "id": 517, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@nonce_955": { - "entryPoint": 1829, - "id": 955, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@readBytes32Map_1178": { - "entryPoint": 3189, - "id": 1178, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@readBytes32_2339": { - "entryPoint": null, - "id": 2339, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@readBytes32_2475": { - "entryPoint": null, - "id": 2475, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@readFirstUint16_2361": { - "entryPoint": null, - "id": 2361, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@readNonce_976": { - "entryPoint": 1551, - "id": 976, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@readUint16_2433": { - "entryPoint": null, - "id": 2433, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@readUint24_2447": { - "entryPoint": null, - "id": 2447, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@readUint32_2373": { - "entryPoint": null, - "id": 2373, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@readUint8Address_2419": { - "entryPoint": null, - "id": 2419, - "parameterSlots": 3, - "returnSlots": 3 - }, - "@readUint8_2351": { - "entryPoint": null, - "id": 2351, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@readUint8_2403": { - "entryPoint": null, - "id": 2403, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@recoverBranch_1954": { - "entryPoint": 3513, - "id": 1954, - "parameterSlots": 3, - "returnSlots": 2 - }, - "@recoverSigner_2715": { - "entryPoint": 4973, - "id": 2715, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@recover_2020": { - "entryPoint": 2574, - "id": 2020, - "parameterSlots": 3, - "returnSlots": 4 - }, - "@recover_2246": { - "entryPoint": 2655, - "id": 2246, - "parameterSlots": 3, - "returnSlots": 4 - }, - "@returnData_2499": { - "entryPoint": 3404, - "id": 2499, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@selfExecute_102": { - "entryPoint": 981, - "id": 102, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@signatureRecovery_413": { - "entryPoint": 1095, - "id": 413, - "parameterSlots": 3, - "returnSlots": 5 - }, - "@subdigest_1394": { - "entryPoint": 2044, - "id": 1394, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@subdigest_2274": { - "entryPoint": 2699, - "id": 2274, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_240": { - "entryPoint": 704, - "id": 240, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_549": { - "entryPoint": 4739, - "id": 549, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_832": { - "entryPoint": 3283, - "id": 832, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_901": { - "entryPoint": 1846, - "id": 901, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_919": { - "entryPoint": null, - "id": 919, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@updateImageHash_563": { - "entryPoint": 899, - "id": 563, - "parameterSlots": 1, - "returnSlots": 0 - }, - "abi_decode_address": { - "entryPoint": 7131, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_array_struct_Transaction_calldata_dyn_calldata": { - "entryPoint": 6583, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_bool": { - "entryPoint": 7110, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_bytes_calldata": { - "entryPoint": 6301, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_address": { - "entryPoint": 7974, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr": { - "entryPoint": 6652, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes_calldata_ptr": { - "entryPoint": 6718, - "id": null, - "parameterSlots": 2, - "returnSlots": 5 - }, - "abi_decode_tuple_t_bool": { - "entryPoint": 7947, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes32": { - "entryPoint": 6558, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr": { - "entryPoint": 6374, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_bytes4": { - "entryPoint": 6272, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes4_fromMemory": { - "entryPoint": 8587, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr": { - "entryPoint": 6450, - "id": null, - "parameterSlots": 2, - "returnSlots": 4 - }, - "abi_decode_tuple_t_bytes_memory_ptr": { - "entryPoint": 6887, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_uint256": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_array_struct_Transaction_calldata_dyn_calldata": { - "entryPoint": 7240, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_bytes": { - "entryPoint": 7766, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_bytes_calldata": { - "entryPoint": 7167, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { - "entryPoint": 7094, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_uint256_t_address_t_bytes32__to_t_string_memory_ptr_t_uint256_t_address_t_bytes32__nonPadded_inplace_fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_packed_t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7_t_bytes32_t_uint256_t_uint256__to_t_string_memory_ptr_t_bytes32_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes1__to_t_bytes1__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_address_t_bytes_calldata_ptr_slice__to_t_bytes32_t_address_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 8330, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr_slice__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 8552, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 8394, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr_slice_t_uint256_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 8266, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed": { - "entryPoint": 8433, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr_t_uint256_t_bool__to_t_bytes_memory_ptr_t_uint256_t_bool__fromStack_reversed": { - "entryPoint": 8508, - "id": null, - "parameterSlots": 5, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_calldata_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed": { - "entryPoint": 8469, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 7866, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_4dfa0bed92fb5c2df0b47ce555e6e6b89f746e856aa9783c634a4987edcbf682_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 7647, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { - "entryPoint": 7575, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 8305, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__to_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 6, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "access_calldata_tail_t_bytes_calldata_ptr": { - "entryPoint": 8001, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "access_calldata_tail_t_struct$_Transaction_$1292_calldata_ptr": { - "entryPoint": 7885, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "calldata_array_index_range_access_t_bytes_calldata_ptr": { - "entryPoint": 8205, - "id": null, - "parameterSlots": 4, - "returnSlots": 2 - }, - "checked_add_t_uint256": { - "entryPoint": 8247, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_sub_t_uint256": { - "entryPoint": 8414, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "increment_t_uint256": { - "entryPoint": 8149, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "panic_error_0x11": { - "entryPoint": 8102, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x32": { - "entryPoint": 7719, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x41": { - "entryPoint": 6840, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "validator_revert_bytes4": { - "entryPoint": 6226, - "id": null, - "parameterSlots": 1, - "returnSlots": 0 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:20962:22", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:22", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "58:133:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "169:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "178:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "181:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "171:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "171:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "171:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "81:5:22" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "92:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "99:66:22", - "type": "", - "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "88:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "88:78:22" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "78:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "78:89:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "71:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "71:97:22" - }, - "nodeType": "YulIf", - "src": "68:117:22" - } - ] - }, - "name": "validator_revert_bytes4", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "47:5:22", - "type": "" - } - ], - "src": "14:177:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "265:176:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "311:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "320:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "323:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "313:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "313:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "313:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "286:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "295:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "282:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "282:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "307:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "278:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "278:32:22" - }, - "nodeType": "YulIf", - "src": "275:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "336:36:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "362:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "349:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "349:23:22" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "340:5:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "405:5:22" - } - ], - "functionName": { - "name": "validator_revert_bytes4", - "nodeType": "YulIdentifier", - "src": "381:23:22" - }, - "nodeType": "YulFunctionCall", - "src": "381:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "381:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "420:15:22", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "430:5:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "420:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes4", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "231:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "242:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "254:6:22", - "type": "" - } - ], - "src": "196:245:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "541:92:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "551:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "563:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "574:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "559:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "559:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "551:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "593:9:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "618:6:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "611:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "611:14:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "604:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "604:22:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "586:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "586:41:22" - }, - "nodeType": "YulExpressionStatement", - "src": "586:41:22" - } - ] - }, - "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "510:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "521:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "532:4:22", - "type": "" - } - ], - "src": "446:187:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "710:275:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "759:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "768:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "771:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "761:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "761:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "761:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "738:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "746:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "734:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "734:17:22" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "753:3:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "730:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "730:27:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "723:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "723:35:22" - }, - "nodeType": "YulIf", - "src": "720:55:22" - }, - { - "nodeType": "YulAssignment", - "src": "784:30:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "807:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "794:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "794:20:22" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "784:6:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "857:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "866:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "869:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "859:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "859:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "859:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "829:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "837:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "826:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "826:30:22" - }, - "nodeType": "YulIf", - "src": "823:50:22" - }, - { - "nodeType": "YulAssignment", - "src": "882:29:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "898:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "906:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "894:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "894:17:22" - }, - "variableNames": [ - { - "name": "arrayPos", - "nodeType": "YulIdentifier", - "src": "882:8:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "963:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "972:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "975:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "965:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "965:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "965:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "934:6:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "942:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "930:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "930:19:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "951:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "926:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "926:30:22" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "958:3:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "923:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "923:39:22" - }, - "nodeType": "YulIf", - "src": "920:59:22" - } - ] - }, - "name": "abi_decode_bytes_calldata", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "673:6:22", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "681:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "arrayPos", - "nodeType": "YulTypedName", - "src": "689:8:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "699:6:22", - "type": "" - } - ], - "src": "638:347:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1096:371:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1142:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1151:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1154:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1144:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1144:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1144:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1117:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1126:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1113:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1113:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1138:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1109:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1109:32:22" - }, - "nodeType": "YulIf", - "src": "1106:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "1167:33:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1190:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1177:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "1177:23:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1167:6:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1209:46:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1240:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1251:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1236:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1236:18:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1223:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "1223:32:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1213:6:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1298:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1307:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1310:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1300:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1300:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1300:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1270:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1278:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1267:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "1267:30:22" - }, - "nodeType": "YulIf", - "src": "1264:50:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1323:84:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1379:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1390:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1375:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1375:22:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1399:7:22" - } - ], - "functionName": { - "name": "abi_decode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "1349:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "1349:58:22" - }, - "variables": [ - { - "name": "value1_1", - "nodeType": "YulTypedName", - "src": "1327:8:22", - "type": "" - }, - { - "name": "value2_1", - "nodeType": "YulTypedName", - "src": "1337:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1416:18:22", - "value": { - "name": "value1_1", - "nodeType": "YulIdentifier", - "src": "1426:8:22" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1416:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1443:18:22", - "value": { - "name": "value2_1", - "nodeType": "YulIdentifier", - "src": "1453:8:22" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1443:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1046:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1057:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1069:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1077:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1085:6:22", - "type": "" - } - ], - "src": "990:477:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1571:149:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1581:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1593:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1604:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1589:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1589:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1581:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1623:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1638:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1646:66:22", - "type": "", - "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1634:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1634:79:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1616:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1616:98:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1616:98:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1540:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1551:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1562:4:22", - "type": "" - } - ], - "src": "1472:248:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1850:592:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1896:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1905:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1908:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1898:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1898:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1898:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1871:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1880:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1867:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1867:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1892:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1863:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1863:32:22" - }, - "nodeType": "YulIf", - "src": "1860:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1921:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1948:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1935:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "1935:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1925:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1967:28:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1977:18:22", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "1971:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2022:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2031:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2034:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2024:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2024:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2024:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2010:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2018:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2007:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "2007:14:22" - }, - "nodeType": "YulIf", - "src": "2004:34:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2047:84:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2103:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2114:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2099:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2099:22:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2123:7:22" - } - ], - "functionName": { - "name": "abi_decode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "2073:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "2073:58:22" - }, - "variables": [ - { - "name": "value0_1", - "nodeType": "YulTypedName", - "src": "2051:8:22", - "type": "" - }, - { - "name": "value1_1", - "nodeType": "YulTypedName", - "src": "2061:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2140:18:22", - "value": { - "name": "value0_1", - "nodeType": "YulIdentifier", - "src": "2150:8:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2140:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2167:18:22", - "value": { - "name": "value1_1", - "nodeType": "YulIdentifier", - "src": "2177:8:22" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2167:6:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2194:48:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2227:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2238:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2223:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2223:18:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2210:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "2210:32:22" - }, - "variables": [ - { - "name": "offset_1", - "nodeType": "YulTypedName", - "src": "2198:8:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2271:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2280:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2283:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2273:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2273:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2273:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "2257:8:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2267:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2254:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "2254:16:22" - }, - "nodeType": "YulIf", - "src": "2251:36:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2296:86:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2352:9:22" - }, - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "2363:8:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2348:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2348:24:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2374:7:22" - } - ], - "functionName": { - "name": "abi_decode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "2322:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "2322:60:22" - }, - "variables": [ - { - "name": "value2_1", - "nodeType": "YulTypedName", - "src": "2300:8:22", - "type": "" - }, - { - "name": "value3_1", - "nodeType": "YulTypedName", - "src": "2310:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2391:18:22", - "value": { - "name": "value2_1", - "nodeType": "YulIdentifier", - "src": "2401:8:22" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "2391:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2418:18:22", - "value": { - "name": "value3_1", - "nodeType": "YulIdentifier", - "src": "2428:8:22" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "2418:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1792:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1803:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1815:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1823:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1831:6:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "1839:6:22", - "type": "" - } - ], - "src": "1725:717:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2517:110:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2563:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2572:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2575:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2565:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2565:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2565:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2538:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2547:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2534:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2534:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2559:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2530:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2530:32:22" - }, - "nodeType": "YulIf", - "src": "2527:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "2588:33:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2611:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2598:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "2598:23:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2588:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes32", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2483:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "2494:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2506:6:22", - "type": "" - } - ], - "src": "2447:180:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2733:76:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2743:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2755:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2766:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2751:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2751:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2743:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2785:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2796:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2778:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2778:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2778:25:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2702:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2713:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2724:4:22", - "type": "" - } - ], - "src": "2632:177:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2918:283:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2967:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2976:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2979:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2969:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2969:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2969:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2946:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2954:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2942:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2942:17:22" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "2961:3:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2938:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2938:27:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2931:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2931:35:22" - }, - "nodeType": "YulIf", - "src": "2928:55:22" - }, - { - "nodeType": "YulAssignment", - "src": "2992:30:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3015:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3002:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "3002:20:22" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2992:6:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3065:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3074:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3077:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3067:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3067:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3067:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3037:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3045:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3034:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "3034:30:22" - }, - "nodeType": "YulIf", - "src": "3031:50:22" - }, - { - "nodeType": "YulAssignment", - "src": "3090:29:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3106:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3114:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3102:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3102:17:22" - }, - "variableNames": [ - { - "name": "arrayPos", - "nodeType": "YulIdentifier", - "src": "3090:8:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3179:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3188:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3191:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3181:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3181:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3181:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3142:6:22" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3154:1:22", - "type": "", - "value": "5" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3157:6:22" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3150:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3150:14:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3138:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3138:27:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3167:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3134:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3134:38:22" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "3174:3:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3131:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "3131:47:22" - }, - "nodeType": "YulIf", - "src": "3128:67:22" - } - ] - }, - "name": "abi_decode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "2881:6:22", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "2889:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "arrayPos", - "nodeType": "YulTypedName", - "src": "2897:8:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "2907:6:22", - "type": "" - } - ], - "src": "2814:387:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3342:352:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3388:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3397:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3400:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3390:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3390:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3390:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3363:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3372:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3359:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3359:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3384:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "3355:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3355:32:22" - }, - "nodeType": "YulIf", - "src": "3352:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3413:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3440:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3427:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "3427:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3417:6:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3493:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3502:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3505:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3495:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3495:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3495:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3465:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3473:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3462:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "3462:30:22" - }, - "nodeType": "YulIf", - "src": "3459:50:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3518:116:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3606:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "3617:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3602:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3602:22:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3626:7:22" - } - ], - "functionName": { - "name": "abi_decode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulIdentifier", - "src": "3544:57:22" - }, - "nodeType": "YulFunctionCall", - "src": "3544:90:22" - }, - "variables": [ - { - "name": "value0_1", - "nodeType": "YulTypedName", - "src": "3522:8:22", - "type": "" - }, - { - "name": "value1_1", - "nodeType": "YulTypedName", - "src": "3532:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3643:18:22", - "value": { - "name": "value0_1", - "nodeType": "YulIdentifier", - "src": "3653:8:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3643:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3670:18:22", - "value": { - "name": "value1_1", - "nodeType": "YulIdentifier", - "src": "3680:8:22" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "3670:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3300:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "3311:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3323:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "3331:6:22", - "type": "" - } - ], - "src": "3206:488:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3888:675:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3934:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3943:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3946:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3936:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "3936:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "3936:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3909:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3918:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3905:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3905:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3930:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "3901:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "3901:32:22" - }, - "nodeType": "YulIf", - "src": "3898:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3959:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3986:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3973:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "3973:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "3963:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4005:28:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4015:18:22", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "4009:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4060:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4069:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4072:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "4062:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4062:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4062:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4048:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4056:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4045:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "4045:14:22" - }, - "nodeType": "YulIf", - "src": "4042:34:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4085:116:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4173:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "4184:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4169:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4169:22:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "4193:7:22" - } - ], - "functionName": { - "name": "abi_decode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulIdentifier", - "src": "4111:57:22" - }, - "nodeType": "YulFunctionCall", - "src": "4111:90:22" - }, - "variables": [ - { - "name": "value0_1", - "nodeType": "YulTypedName", - "src": "4089:8:22", - "type": "" - }, - { - "name": "value1_1", - "nodeType": "YulTypedName", - "src": "4099:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4210:18:22", - "value": { - "name": "value0_1", - "nodeType": "YulIdentifier", - "src": "4220:8:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4210:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4237:18:22", - "value": { - "name": "value1_1", - "nodeType": "YulIdentifier", - "src": "4247:8:22" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "4237:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4264:42:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4291:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4302:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4287:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4287:18:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "4274:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "4274:32:22" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "4264:6:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4315:48:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4348:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4359:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4344:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4344:18:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "4331:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "4331:32:22" - }, - "variables": [ - { - "name": "offset_1", - "nodeType": "YulTypedName", - "src": "4319:8:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4392:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4401:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4404:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "4394:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4394:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4394:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "4378:8:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4388:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4375:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "4375:16:22" - }, - "nodeType": "YulIf", - "src": "4372:36:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4417:86:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4473:9:22" - }, - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "4484:8:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4469:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4469:24:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "4495:7:22" - } - ], - "functionName": { - "name": "abi_decode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "4443:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "4443:60:22" - }, - "variables": [ - { - "name": "value3_1", - "nodeType": "YulTypedName", - "src": "4421:8:22", - "type": "" - }, - { - "name": "value4_1", - "nodeType": "YulTypedName", - "src": "4431:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4512:18:22", - "value": { - "name": "value3_1", - "nodeType": "YulIdentifier", - "src": "4522:8:22" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "4512:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4539:18:22", - "value": { - "name": "value4_1", - "nodeType": "YulIdentifier", - "src": "4549:8:22" - }, - "variableNames": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "4539:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3822:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "3833:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3845:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "3853:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "3861:6:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "3869:6:22", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "3877:6:22", - "type": "" - } - ], - "src": "3699:864:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4781:250:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4791:27:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4803:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4814:3:22", - "type": "", - "value": "160" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4799:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4799:19:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4791:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4834:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4845:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4827:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4827:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4827:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4872:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4883:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4868:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4868:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "4888:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4861:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4861:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4861:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4915:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4926:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4911:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4911:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "4931:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4904:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4904:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4904:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4958:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4969:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4954:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4954:18:22" - }, - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "4974:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4947:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4947:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4947:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5001:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5012:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4997:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "4997:19:22" - }, - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "5018:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4990:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "4990:35:22" - }, - "nodeType": "YulExpressionStatement", - "src": "4990:35:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__to_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4718:9:22", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "4729:6:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "4737:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "4745:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "4753:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4761:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4772:4:22", - "type": "" - } - ], - "src": "4568:463:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5106:110:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "5152:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5161:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5164:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5154:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5154:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5154:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "5127:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5136:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "5123:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5123:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5148:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "5119:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5119:32:22" - }, - "nodeType": "YulIf", - "src": "5116:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "5177:33:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5200:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5187:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "5187:23:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5177:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5072:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "5083:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5095:6:22", - "type": "" - } - ], - "src": "5036:180:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5322:76:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5332:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5344:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5355:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5340:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5340:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "5332:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5374:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5385:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5367:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5367:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5367:25:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5291:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5302:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "5313:4:22", - "type": "" - } - ], - "src": "5221:177:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5435:152:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5452:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5455:77:22", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5445:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5445:88:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5445:88:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5549:1:22", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5552:4:22", - "type": "", - "value": "0x41" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5542:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5542:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5542:15:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5573:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5576:4:22", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5566:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5566:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5566:15:22" - } - ] - }, - "name": "panic_error_0x41", - "nodeType": "YulFunctionDefinition", - "src": "5403:184:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5671:901:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "5717:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5726:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5729:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5719:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5719:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5719:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "5692:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5701:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "5688:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5688:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5713:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "5684:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5684:32:22" - }, - "nodeType": "YulIf", - "src": "5681:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5742:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5769:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5756:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "5756:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "5746:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5788:28:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5798:18:22", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "5792:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5843:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5852:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5855:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5845:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5845:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5845:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "5831:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "5839:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5828:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "5828:14:22" - }, - "nodeType": "YulIf", - "src": "5825:34:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5868:32:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5882:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "5893:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5878:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5878:22:22" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "5872:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5948:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5957:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5960:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5950:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5950:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "5950:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "5927:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5931:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5923:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5923:13:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "5938:7:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "5919:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "5919:27:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "5912:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "5912:35:22" - }, - "nodeType": "YulIf", - "src": "5909:55:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5973:26:22", - "value": { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "5996:2:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5983:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "5983:16:22" - }, - "variables": [ - { - "name": "_3", - "nodeType": "YulTypedName", - "src": "5977:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6022:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "6024:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "6024:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6024:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6014:2:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "6018:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "6011:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6011:10:22" - }, - "nodeType": "YulIf", - "src": "6008:36:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6053:76:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6063:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" - }, - "variables": [ - { - "name": "_4", - "nodeType": "YulTypedName", - "src": "6057:2:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6138:23:22", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6158:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "6152:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "6152:9:22" - }, - "variables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "6142:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6170:71:22", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6192:6:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6216:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6220:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6212:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6212:13:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "6227:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "6208:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6208:22:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6232:2:22", - "type": "", - "value": "63" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6204:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6204:31:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "6237:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "6200:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6200:40:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6188:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6188:53:22" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "6174:10:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6300:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "6302:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "6302:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6302:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "6259:10:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "6271:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "6256:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6256:18:22" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "6279:10:22" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6291:6:22" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "6276:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6276:22:22" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "6253:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6253:46:22" - }, - "nodeType": "YulIf", - "src": "6250:72:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6338:2:22", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "6342:10:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6331:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6331:22:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6331:22:22" - }, - { - "expression": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6369:6:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6377:2:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6362:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6362:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6362:18:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6426:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6435:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6438:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "6428:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6428:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6428:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "6403:2:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6407:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6399:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6399:11:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6412:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6395:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6395:20:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "6417:7:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "6392:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "6392:33:22" - }, - "nodeType": "YulIf", - "src": "6389:53:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6468:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6476:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6464:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6464:15:22" - }, - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "6485:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6489:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6481:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6481:11:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6494:2:22" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "6451:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "6451:46:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6451:46:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6521:6:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "6529:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6517:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6517:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6534:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6513:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6513:24:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6539:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6506:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6506:35:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6506:35:22" - }, - { - "nodeType": "YulAssignment", - "src": "6550:16:22", - "value": { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "6560:6:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "6550:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5637:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "5648:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5660:6:22", - "type": "" - } - ], - "src": "5592:980:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6678:125:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6688:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6700:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6711:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6696:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6696:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "6688:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6730:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "6745:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6753:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "6741:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "6741:55:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6723:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "6723:74:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6723:74:22" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "6647:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "6658:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "6669:4:22", - "type": "" - } - ], - "src": "6577:226:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6955:124:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "6978:3:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "6983:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "6991:6:22" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "6965:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "6965:33:22" - }, - "nodeType": "YulExpressionStatement", - "src": "6965:33:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7007:26:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "7021:3:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "7026:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7017:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7017:16:22" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "7011:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "7049:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7053:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7042:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7042:13:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7042:13:22" - }, - { - "nodeType": "YulAssignment", - "src": "7064:9:22", - "value": { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "7071:2:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "7064:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "6923:3:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "6928:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "6936:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "6947:3:22", - "type": "" - } - ], - "src": "6808:271:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7213:198:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7223:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7235:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7246:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7231:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7231:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "7223:4:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7258:52:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7268:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "7262:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7326:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "7341:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "7349:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "7337:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7337:15:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7319:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7319:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7319:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7373:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7384:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7369:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7369:18:22" - }, - { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "7393:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "7401:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "7389:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7389:15:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7362:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7362:43:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7362:43:22" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "7174:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "7185:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "7193:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "7204:4:22", - "type": "" - } - ], - "src": "7084:327:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7462:114:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7472:29:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "7494:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "7481:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "7481:20:22" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7472:5:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7554:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7563:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7566:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "7556:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7556:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7556:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7523:5:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7544:5:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "7537:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7537:13:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "7530:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7530:21:22" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "7520:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "7520:32:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "7513:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7513:40:22" - }, - "nodeType": "YulIf", - "src": "7510:60:22" - } - ] - }, - "name": "abi_decode_bool", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "7441:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "7452:5:22", - "type": "" - } - ], - "src": "7416:160:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7630:147:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7640:29:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "7662:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "7649:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "7649:20:22" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7640:5:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7755:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7764:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7767:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "7757:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7757:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7757:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7691:5:22" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "7702:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7709:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "7698:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7698:54:22" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "7688:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "7688:65:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "7681:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7681:73:22" - }, - "nodeType": "YulIf", - "src": "7678:93:22" - } - ] - }, - "name": "abi_decode_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "7609:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "7620:5:22", - "type": "" - } - ], - "src": "7581:196:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "7848:259:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "7865:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "7870:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7858:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7858:19:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7858:19:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "7903:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7908:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7899:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7899:14:22" - }, - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "7915:5:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "7922:6:22" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "7886:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "7886:43:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7886:43:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "7953:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "7958:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7949:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7949:16:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7967:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7945:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7945:27:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7974:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7938:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "7938:38:22" - }, - "nodeType": "YulExpressionStatement", - "src": "7938:38:22" - }, - { - "nodeType": "YulAssignment", - "src": "7985:116:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8000:3:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "8013:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8021:2:22", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8009:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8009:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8026:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "8005:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8005:88:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7996:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7996:98:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8096:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7992:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "7992:109:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "7985:3:22" - } - ] - } - ] - }, - "name": "abi_encode_bytes_calldata", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "start", - "nodeType": "YulTypedName", - "src": "7817:5:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "7824:6:22", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "7832:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "7840:3:22", - "type": "" - } - ], - "src": "7782:325:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "8210:1930:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8227:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "8232:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8220:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8220:19:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8220:19:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8248:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8258:4:22", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "8252:2:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8271:31:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8294:3:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "8299:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8290:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8290:12:22" - }, - "variables": [ - { - "name": "updated_pos", - "nodeType": "YulTypedName", - "src": "8275:11:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8311:24:22", - "value": { - "name": "updated_pos", - "nodeType": "YulIdentifier", - "src": "8324:11:22" - }, - "variables": [ - { - "name": "pos_1", - "nodeType": "YulTypedName", - "src": "8315:5:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "8344:18:22", - "value": { - "name": "updated_pos", - "nodeType": "YulIdentifier", - "src": "8351:11:22" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8344:3:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8371:38:22", - "value": { - "arguments": [ - { - "name": "pos_1", - "nodeType": "YulIdentifier", - "src": "8387:5:22" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8398:1:22", - "type": "", - "value": "5" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "8401:6:22" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "8394:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8394:14:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8383:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8383:26:22" - }, - "variables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "8375:4:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8418:19:22", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8432:5:22" - }, - "variables": [ - { - "name": "srcPtr", - "nodeType": "YulTypedName", - "src": "8422:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8446:10:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8455:1:22", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "8450:1:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "8514:1600:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "8535:3:22" - }, - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "8544:4:22" - }, - { - "name": "pos_1", - "nodeType": "YulIdentifier", - "src": "8550:5:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "8540:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8540:16:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8528:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8528:29:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8528:29:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8570:46:22", - "value": { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "8609:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "8596:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "8596:20:22" - }, - "variables": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulTypedName", - "src": "8574:18:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "8765:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8774:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8777:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "8767:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8767:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8767:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "8643:18:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "8671:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "8671:14:22" - }, - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8687:5:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "8667:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8667:26:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8695:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8663:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8663:99:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "8639:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8639:124:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8632:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8632:132:22" - }, - "nodeType": "YulIf", - "src": "8629:152:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8794:45:22", - "value": { - "arguments": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "8813:18:22" - }, - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "8833:5:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8809:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8809:30:22" - }, - "variables": [ - { - "name": "value_1", - "nodeType": "YulTypedName", - "src": "8798:7:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8852:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8862:4:22", - "type": "", - "value": "0xc0" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "8856:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "8886:4:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "8922:7:22" - } - ], - "functionName": { - "name": "abi_decode_bool", - "nodeType": "YulIdentifier", - "src": "8906:15:22" - }, - "nodeType": "YulFunctionCall", - "src": "8906:24:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8899:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8899:32:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8892:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8892:40:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8879:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8879:54:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8879:54:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "8957:4:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "8963:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8953:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8953:13:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9002:7:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "9011:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8998:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8998:16:22" - } - ], - "functionName": { - "name": "abi_decode_bool", - "nodeType": "YulIdentifier", - "src": "8982:15:22" - }, - "nodeType": "YulFunctionCall", - "src": "8982:33:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8975:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8975:41:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8968:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8968:49:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "8946:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "8946:72:22" - }, - "nodeType": "YulExpressionStatement", - "src": "8946:72:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9031:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9041:4:22", - "type": "", - "value": "0x40" - }, - "variables": [ - { - "name": "_3", - "nodeType": "YulTypedName", - "src": "9035:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9069:4:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "9075:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9065:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9065:13:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9097:7:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "9106:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9093:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9093:16:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9080:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9080:30:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9058:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9058:53:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9058:53:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9124:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9134:4:22", - "type": "", - "value": "0x60" - }, - "variables": [ - { - "name": "_4", - "nodeType": "YulTypedName", - "src": "9128:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9162:4:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "9168:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9158:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9158:13:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9200:7:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "9209:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9196:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9196:16:22" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "9177:18:22" - }, - "nodeType": "YulFunctionCall", - "src": "9177:36:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9215:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "9173:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9173:85:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9151:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9151:108:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9151:108:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9272:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9282:4:22", - "type": "", - "value": "0x80" - }, - "variables": [ - { - "name": "_5", - "nodeType": "YulTypedName", - "src": "9276:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9310:4:22" - }, - { - "name": "_5", - "nodeType": "YulIdentifier", - "src": "9316:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9306:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9306:13:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9338:7:22" - }, - { - "name": "_5", - "nodeType": "YulIdentifier", - "src": "9347:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9334:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9334:16:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9321:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9321:30:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9299:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9299:53:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9299:53:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9365:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9375:4:22", - "type": "", - "value": "0xa0" - }, - "variables": [ - { - "name": "_6", - "nodeType": "YulTypedName", - "src": "9369:2:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9392:58:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9437:7:22" - }, - { - "name": "_6", - "nodeType": "YulIdentifier", - "src": "9446:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9433:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9433:16:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9420:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9420:30:22" - }, - "variables": [ - { - "name": "rel_offset_of_tail_1", - "nodeType": "YulTypedName", - "src": "9396:20:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9603:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9612:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9615:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "9605:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9605:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9605:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "rel_offset_of_tail_1", - "nodeType": "YulIdentifier", - "src": "9477:20:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "9507:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9507:14:22" - }, - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9523:7:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "9503:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9503:28:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9533:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9499:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9499:101:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "9473:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9473:128:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "9466:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9466:136:22" - }, - "nodeType": "YulIf", - "src": "9463:156:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9632:49:22", - "value": { - "arguments": [ - { - "name": "rel_offset_of_tail_1", - "nodeType": "YulIdentifier", - "src": "9651:20:22" - }, - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "9673:7:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9647:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9647:34:22" - }, - "variables": [ - { - "name": "value_2", - "nodeType": "YulTypedName", - "src": "9636:7:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9694:37:22", - "value": { - "arguments": [ - { - "name": "value_2", - "nodeType": "YulIdentifier", - "src": "9723:7:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9710:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9710:21:22" - }, - "variables": [ - { - "name": "length_1", - "nodeType": "YulTypedName", - "src": "9698:8:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9744:31:22", - "value": { - "arguments": [ - { - "name": "value_2", - "nodeType": "YulIdentifier", - "src": "9763:7:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "9772:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9759:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9759:16:22" - }, - "variables": [ - { - "name": "value_3", - "nodeType": "YulTypedName", - "src": "9748:7:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9824:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9833:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9836:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "9826:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9826:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9826:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length_1", - "nodeType": "YulIdentifier", - "src": "9794:8:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9804:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "9791:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "9791:32:22" - }, - "nodeType": "YulIf", - "src": "9788:52:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "9900:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9909:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9912:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "9902:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9902:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9902:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "value_3", - "nodeType": "YulIdentifier", - "src": "9860:7:22" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "9873:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "9873:14:22" - }, - { - "name": "length_1", - "nodeType": "YulIdentifier", - "src": "9889:8:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "9869:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9869:29:22" - } - ], - "functionName": { - "name": "sgt", - "nodeType": "YulIdentifier", - "src": "9856:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9856:43:22" - }, - "nodeType": "YulIf", - "src": "9853:63:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9940:4:22" - }, - { - "name": "_6", - "nodeType": "YulIdentifier", - "src": "9946:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9936:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "9936:13:22" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "9951:2:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9929:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "9929:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "9929:25:22" - }, - { - "nodeType": "YulAssignment", - "src": "9967:67:22", - "value": { - "arguments": [ - { - "name": "value_3", - "nodeType": "YulIdentifier", - "src": "10001:7:22" - }, - { - "name": "length_1", - "nodeType": "YulIdentifier", - "src": "10010:8:22" - }, - { - "arguments": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "10024:4:22" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "10030:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10020:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10020:13:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "9975:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "9975:59:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "9967:4:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "10047:25:22", - "value": { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "10061:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "10069:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10057:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10057:15:22" - }, - "variableNames": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "10047:6:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "10085:19:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "10096:3:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "10101:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10092:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10092:12:22" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "10085:3:22" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "8476:1:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "8479:6:22" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "8473:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "8473:13:22" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "8487:18:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "8489:14:22", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "8498:1:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8501:1:22", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8494:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "8494:9:22" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "8489:1:22" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "8469:3:22", - "statements": [] - }, - "src": "8465:1649:22" - }, - { - "nodeType": "YulAssignment", - "src": "10123:11:22", - "value": { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "10130:4:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "10123:3:22" - } - ] - } - ] - }, - "name": "abi_encode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "8179:5:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "8186:6:22", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "8194:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "8202:3:22", - "type": "" - } - ], - "src": "8112:2028:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "10467:272:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10484:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10495:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10477:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "10477:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "10477:21:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10518:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10529:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10514:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10514:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10534:1:22", - "type": "", - "value": "5" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10507:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "10507:29:22" - }, - "nodeType": "YulExpressionStatement", - "src": "10507:29:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10556:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10567:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10552:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10552:18:22" - }, - { - "hexValue": "73656c663a", - "kind": "string", - "nodeType": "YulLiteral", - "src": "10572:7:22", - "type": "", - "value": "self:" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10545:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "10545:35:22" - }, - "nodeType": "YulExpressionStatement", - "src": "10545:35:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10600:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10611:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10596:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10596:20:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10618:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10589:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "10589:33:22" - }, - "nodeType": "YulExpressionStatement", - "src": "10589:33:22" - }, - { - "nodeType": "YulAssignment", - "src": "10631:102:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "10697:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "10705:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "10717:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10728:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10713:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "10713:19:22" - } - ], - "functionName": { - "name": "abi_encode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulIdentifier", - "src": "10639:57:22" - }, - "nodeType": "YulFunctionCall", - "src": "10639:94:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "10631:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "10428:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "10439:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "10447:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "10458:4:22", - "type": "" - } - ], - "src": "10145:594:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11066:273:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11083:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11094:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11076:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11076:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11076:21:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11117:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11128:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11113:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11113:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11133:1:22", - "type": "", - "value": "6" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11106:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11106:29:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11106:29:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11155:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11166:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11151:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11151:18:22" - }, - { - "hexValue": "67756573743a", - "kind": "string", - "nodeType": "YulLiteral", - "src": "11171:8:22", - "type": "", - "value": "guest:" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11144:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11144:36:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11144:36:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11200:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11211:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11196:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11196:20:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11218:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11189:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11189:33:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11189:33:22" - }, - { - "nodeType": "YulAssignment", - "src": "11231:102:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "11297:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "11305:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11317:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11328:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11313:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11313:19:22" - } - ], - "functionName": { - "name": "abi_encode_array_struct_Transaction_calldata_dyn_calldata", - "nodeType": "YulIdentifier", - "src": "11239:57:22" - }, - "nodeType": "YulFunctionCall", - "src": "11239:94:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "11231:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_4dfa0bed92fb5c2df0b47ce555e6e6b89f746e856aa9783c634a4987edcbf682_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "11027:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "11038:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "11046:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "11057:4:22", - "type": "" - } - ], - "src": "10744:595:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11376:152:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11393:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11396:77:22", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11386:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11386:88:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11386:88:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11490:1:22", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11493:4:22", - "type": "", - "value": "0x32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11483:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11483:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11483:15:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11514:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11517:4:22", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "11507:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11507:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11507:15:22" - } - ] - }, - "name": "panic_error_0x32", - "nodeType": "YulFunctionDefinition", - "src": "11344:184:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11632:149:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "11642:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11654:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11665:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11650:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11650:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "11642:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "11684:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "11699:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11707:66:22", - "type": "", - "value": "0xff00000000000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "11695:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11695:79:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11677:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11677:98:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11677:98:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes1__to_t_bytes1__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "11601:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "11612:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "11623:4:22", - "type": "" - } - ], - "src": "11533:248:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11835:432:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "11845:26:22", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "11865:5:22" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "11859:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "11859:12:22" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "11849:6:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "11887:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "11892:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "11880:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "11880:19:22" - }, - "nodeType": "YulExpressionStatement", - "src": "11880:19:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "11908:10:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11917:1:22", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "11912:1:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "11979:110:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "11993:14:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12003:4:22", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "11997:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12035:3:22" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "12040:1:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12031:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12031:11:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "12044:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12027:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12027:20:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "12063:5:22" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "12070:1:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12059:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12059:13:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "12074:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12055:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12055:22:22" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "12049:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "12049:29:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12020:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12020:59:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12020:59:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "11938:1:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "11941:6:22" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "11935:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "11935:13:22" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "11949:21:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "11951:17:22", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "11960:1:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "11963:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "11956:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "11956:12:22" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "11951:1:22" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "11931:3:22", - "statements": [] - }, - "src": "11927:162:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12113:3:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "12118:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12109:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12109:16:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12127:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12105:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12105:27:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12134:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12098:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12098:38:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12098:38:22" - }, - { - "nodeType": "YulAssignment", - "src": "12145:116:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12160:3:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "12173:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12181:2:22", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12169:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12169:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12186:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "12165:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12165:88:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12156:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12156:98:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12256:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12152:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12152:109:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "12145:3:22" - } - ] - } - ] - }, - "name": "abi_encode_bytes", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "11812:5:22", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "11819:3:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "11827:3:22", - "type": "" - } - ], - "src": "11786:481:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "12391:98:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "12408:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12419:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12401:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12401:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12401:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "12431:52:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "12456:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "12468:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12479:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12464:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12464:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes", - "nodeType": "YulIdentifier", - "src": "12439:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "12439:44:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "12431:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "12360:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "12371:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "12382:4:22", - "type": "" - } - ], - "src": "12272:217:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "12770:315:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12787:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12792:66:22", - "type": "", - "value": "0x1901000000000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12780:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12780:79:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12780:79:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12879:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12884:1:22", - "type": "", - "value": "2" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12875:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12875:11:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "12888:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12868:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12868:27:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12868:27:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "12915:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12920:2:22", - "type": "", - "value": "34" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "12911:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12911:12:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12933:2:22", - "type": "", - "value": "96" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "12937:6:22" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "12929:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12929:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "12946:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "12925:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "12925:88:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "12904:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "12904:110:22" - }, - "nodeType": "YulExpressionStatement", - "src": "12904:110:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13034:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13039:2:22", - "type": "", - "value": "54" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13030:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13030:12:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "13044:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "13023:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13023:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13023:28:22" - }, - { - "nodeType": "YulAssignment", - "src": "13060:19:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "13071:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13076:2:22", - "type": "", - "value": "86" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13067:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13067:12:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "13060:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_uint256_t_address_t_bytes32__to_t_string_memory_ptr_t_uint256_t_address_t_bytes32__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "12730:3:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "12735:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "12743:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "12751:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "12762:3:22", - "type": "" - } - ], - "src": "12494:591:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13196:281:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "13206:51:22", - "value": { - "arguments": [ - { - "name": "ptr_to_tail", - "nodeType": "YulIdentifier", - "src": "13245:11:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "13232:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "13232:25:22" - }, - "variables": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulTypedName", - "src": "13210:18:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13405:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13414:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13417:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "13407:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13407:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13407:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "13280:18:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "13308:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "13308:14:22" - }, - { - "name": "base_ref", - "nodeType": "YulIdentifier", - "src": "13324:8:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "13304:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13304:29:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13335:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13300:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13300:102:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "13276:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13276:127:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "13269:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13269:135:22" - }, - "nodeType": "YulIf", - "src": "13266:155:22" - }, - { - "nodeType": "YulAssignment", - "src": "13430:41:22", - "value": { - "arguments": [ - { - "name": "base_ref", - "nodeType": "YulIdentifier", - "src": "13442:8:22" - }, - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "13452:18:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13438:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13438:33:22" - }, - "variableNames": [ - { - "name": "addr", - "nodeType": "YulIdentifier", - "src": "13430:4:22" - } - ] - } - ] - }, - "name": "access_calldata_tail_t_struct$_Transaction_$1292_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "base_ref", - "nodeType": "YulTypedName", - "src": "13161:8:22", - "type": "" - }, - { - "name": "ptr_to_tail", - "nodeType": "YulTypedName", - "src": "13171:11:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "addr", - "nodeType": "YulTypedName", - "src": "13187:4:22", - "type": "" - } - ], - "src": "13090:387:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13549:113:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "13595:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13604:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13607:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "13597:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13597:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13597:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "13570:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13579:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "13566:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13566:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13591:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "13562:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13562:32:22" - }, - "nodeType": "YulIf", - "src": "13559:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "13620:36:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13646:9:22" - } - ], - "functionName": { - "name": "abi_decode_bool", - "nodeType": "YulIdentifier", - "src": "13630:15:22" - }, - "nodeType": "YulFunctionCall", - "src": "13630:26:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "13620:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bool", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "13515:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "13526:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "13538:6:22", - "type": "" - } - ], - "src": "13482:180:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "13824:162:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "13834:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13846:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13857:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13842:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13842:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "13834:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13876:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "13887:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "13869:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13869:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13869:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13914:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13925:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13910:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13910:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "13930:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "13903:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13903:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13903:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "13957:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "13968:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "13953:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "13953:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "13973:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "13946:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "13946:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "13946:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "13777:9:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "13788:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "13796:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "13804:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "13815:4:22", - "type": "" - } - ], - "src": "13667:319:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14061:116:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "14107:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14116:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14119:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14109:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14109:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14109:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "14082:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "14091:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "14078:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14078:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14103:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "14074:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14074:32:22" - }, - "nodeType": "YulIf", - "src": "14071:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "14132:39:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "14161:9:22" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "14142:18:22" - }, - "nodeType": "YulFunctionCall", - "src": "14142:29:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "14132:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "14027:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "14038:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "14050:6:22", - "type": "" - } - ], - "src": "13991:186:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14276:486:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "14286:51:22", - "value": { - "arguments": [ - { - "name": "ptr_to_tail", - "nodeType": "YulIdentifier", - "src": "14325:11:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "14312:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "14312:25:22" - }, - "variables": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulTypedName", - "src": "14290:18:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14485:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14494:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14497:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14487:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14487:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14487:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "14360:18:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "14388:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "14388:14:22" - }, - { - "name": "base_ref", - "nodeType": "YulIdentifier", - "src": "14404:8:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "14384:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14384:29:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14415:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "14380:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14380:102:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "14356:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14356:127:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "14349:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14349:135:22" - }, - "nodeType": "YulIf", - "src": "14346:155:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "14510:47:22", - "value": { - "arguments": [ - { - "name": "base_ref", - "nodeType": "YulIdentifier", - "src": "14528:8:22" - }, - { - "name": "rel_offset_of_tail", - "nodeType": "YulIdentifier", - "src": "14538:18:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "14524:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14524:33:22" - }, - "variables": [ - { - "name": "addr_1", - "nodeType": "YulTypedName", - "src": "14514:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "14566:30:22", - "value": { - "arguments": [ - { - "name": "addr_1", - "nodeType": "YulIdentifier", - "src": "14589:6:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "14576:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "14576:20:22" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "14566:6:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14639:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14648:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14651:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14641:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14641:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14641:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "14611:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14619:18:22", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "14608:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "14608:30:22" - }, - "nodeType": "YulIf", - "src": "14605:50:22" - }, - { - "nodeType": "YulAssignment", - "src": "14664:25:22", - "value": { - "arguments": [ - { - "name": "addr_1", - "nodeType": "YulIdentifier", - "src": "14676:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14684:4:22", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "14672:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14672:17:22" - }, - "variableNames": [ - { - "name": "addr", - "nodeType": "YulIdentifier", - "src": "14664:4:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14740:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14749:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14752:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14742:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14742:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14742:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "addr", - "nodeType": "YulIdentifier", - "src": "14705:4:22" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "14715:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "14715:14:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "14731:6:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "14711:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14711:27:22" - } - ], - "functionName": { - "name": "sgt", - "nodeType": "YulIdentifier", - "src": "14701:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "14701:38:22" - }, - "nodeType": "YulIf", - "src": "14698:58:22" - } - ] - }, - "name": "access_calldata_tail_t_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "base_ref", - "nodeType": "YulTypedName", - "src": "14233:8:22", - "type": "" - }, - { - "name": "ptr_to_tail", - "nodeType": "YulTypedName", - "src": "14243:11:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "addr", - "nodeType": "YulTypedName", - "src": "14259:4:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "14265:6:22", - "type": "" - } - ], - "src": "14182:580:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "14799:152:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14816:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14819:77:22", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "14809:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14809:88:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14809:88:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14913:1:22", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14916:4:22", - "type": "", - "value": "0x11" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "14906:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14906:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14906:15:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14937:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "14940:4:22", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "14930:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "14930:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "14930:15:22" - } - ] - }, - "name": "panic_error_0x11", - "nodeType": "YulFunctionDefinition", - "src": "14767:184:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15003:148:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "15094:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "15096:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "15096:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15096:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "15019:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15026:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "15016:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "15016:77:22" - }, - "nodeType": "YulIf", - "src": "15013:103:22" - }, - { - "nodeType": "YulAssignment", - "src": "15125:20:22", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "15136:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15143:1:22", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15132:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15132:13:22" - }, - "variableNames": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "15125:3:22" - } - ] - } - ] - }, - "name": "increment_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "14985:5:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "ret", - "nodeType": "YulTypedName", - "src": "14995:3:22", - "type": "" - } - ], - "src": "14956:195:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15286:201:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "15324:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15333:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15336:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "15326:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15326:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15326:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "15302:10:22" - }, - { - "name": "endIndex", - "nodeType": "YulIdentifier", - "src": "15314:8:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "15299:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "15299:24:22" - }, - "nodeType": "YulIf", - "src": "15296:44:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15373:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15382:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15385:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "15375:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15375:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15375:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "endIndex", - "nodeType": "YulIdentifier", - "src": "15355:8:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "15365:6:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "15352:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "15352:20:22" - }, - "nodeType": "YulIf", - "src": "15349:40:22" - }, - { - "nodeType": "YulAssignment", - "src": "15398:36:22", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "15415:6:22" - }, - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "15423:10:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15411:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15411:23:22" - }, - "variableNames": [ - { - "name": "offsetOut", - "nodeType": "YulIdentifier", - "src": "15398:9:22" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "15443:38:22", - "value": { - "arguments": [ - { - "name": "endIndex", - "nodeType": "YulIdentifier", - "src": "15460:8:22" - }, - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "15470:10:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "15456:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15456:25:22" - }, - "variableNames": [ - { - "name": "lengthOut", - "nodeType": "YulIdentifier", - "src": "15443:9:22" - } - ] - } - ] - }, - "name": "calldata_array_index_range_access_t_bytes_calldata_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "15220:6:22", - "type": "" - }, - { - "name": "length", - "nodeType": "YulTypedName", - "src": "15228:6:22", - "type": "" - }, - { - "name": "startIndex", - "nodeType": "YulTypedName", - "src": "15236:10:22", - "type": "" - }, - { - "name": "endIndex", - "nodeType": "YulTypedName", - "src": "15248:8:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "offsetOut", - "nodeType": "YulTypedName", - "src": "15261:9:22", - "type": "" - }, - { - "name": "lengthOut", - "nodeType": "YulTypedName", - "src": "15272:9:22", - "type": "" - } - ], - "src": "15156:331:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15540:77:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "15550:16:22", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "15561:1:22" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "15564:1:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15557:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15557:9:22" - }, - "variableNames": [ - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "15550:3:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15589:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "15591:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "15591:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15591:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "15581:1:22" - }, - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "15584:3:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "15578:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "15578:10:22" - }, - "nodeType": "YulIf", - "src": "15575:36:22" - } - ] - }, - "name": "checked_add_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "15523:1:22", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "15526:1:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "sum", - "nodeType": "YulTypedName", - "src": "15532:3:22", - "type": "" - } - ], - "src": "15492:125:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "15813:201:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15830:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15841:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "15823:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15823:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15823:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "15853:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "15887:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "15895:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15907:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15918:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15903:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15903:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "15861:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "15861:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "15853:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15942:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15953:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15938:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15938:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "15958:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "15931:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15931:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15931:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "15985:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "15996:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "15981:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "15981:18:22" - }, - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "16001:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "15974:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "15974:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "15974:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr_slice_t_uint256_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "15758:9:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "15769:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "15777:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "15785:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "15793:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "15804:4:22", - "type": "" - } - ], - "src": "15622:392:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "16148:119:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "16158:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16170:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16181:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16166:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16166:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "16158:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16200:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "16211:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16193:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16193:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16193:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16238:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16249:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16234:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16234:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "16254:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16227:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16227:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16227:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "16109:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "16120:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "16128:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "16139:4:22", - "type": "" - } - ], - "src": "16019:248:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "16401:119:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "16411:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16423:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16434:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16419:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16419:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "16411:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16453:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "16464:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16446:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16446:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16446:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16491:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16502:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16487:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16487:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "16507:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16480:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16480:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16480:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "16362:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "16373:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "16381:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "16392:4:22", - "type": "" - } - ], - "src": "16272:248:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "16672:141:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16689:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "16700:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16682:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16682:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16682:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16727:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16738:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16723:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16723:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16743:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "16716:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "16716:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "16716:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "16755:52:22", - "value": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "16780:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "16792:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "16803:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "16788:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "16788:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes", - "nodeType": "YulIdentifier", - "src": "16763:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "16763:44:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "16755:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "16633:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "16644:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "16652:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "16663:4:22", - "type": "" - } - ], - "src": "16525:288:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17009:250:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17026:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "17037:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17019:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17019:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17019:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17064:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17075:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17060:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17060:18:22" - }, - { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "17084:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17092:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "17080:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17080:55:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17053:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17053:83:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17053:83:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17156:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17167:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17152:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17152:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17172:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17145:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17145:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17145:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "17184:69:22", - "value": { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "17218:6:22" - }, - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "17226:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17238:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17249:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17234:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17234:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "17192:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "17192:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "17184:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_address_t_bytes_calldata_ptr_slice__to_t_bytes32_t_address_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "16954:9:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "16965:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "16973:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "16981:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "16989:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "17000:4:22", - "type": "" - } - ], - "src": "16818:441:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17393:115:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17410:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17421:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17403:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17403:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17403:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "17433:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "17467:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "17475:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17487:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17498:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17483:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17483:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "17441:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "17441:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "17433:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "17354:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "17365:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "17373:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "17384:4:22", - "type": "" - } - ], - "src": "17264:244:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17562:79:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "17572:17:22", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "17584:1:22" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "17587:1:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "17580:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17580:9:22" - }, - "variableNames": [ - { - "name": "diff", - "nodeType": "YulIdentifier", - "src": "17572:4:22" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17613:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "17615:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "17615:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17615:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "diff", - "nodeType": "YulIdentifier", - "src": "17604:4:22" - }, - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "17610:1:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "17601:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "17601:11:22" - }, - "nodeType": "YulIf", - "src": "17598:37:22" - } - ] - }, - "name": "checked_sub_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "17544:1:22", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "17547:1:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "diff", - "nodeType": "YulTypedName", - "src": "17553:4:22", - "type": "" - } - ], - "src": "17513:128:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "17803:158:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17820:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17831:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17813:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17813:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17813:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "17843:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "17877:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "17885:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17897:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17908:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17893:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17893:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "17851:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "17851:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "17843:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "17932:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "17943:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "17928:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "17928:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "17948:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "17921:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "17921:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "17921:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "17756:9:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "17767:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "17775:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "17783:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "17794:4:22", - "type": "" - } - ], - "src": "17646:315:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18121:169:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18138:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18149:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18131:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18131:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18131:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "18161:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "18195:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "18203:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18215:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18226:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18211:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18211:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "18169:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "18169:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "18161:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18250:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18261:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18246:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18246:18:22" - }, - { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "18270:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18278:4:22", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "18266:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18266:17:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18239:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18239:45:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18239:45:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "18074:9:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "18085:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "18093:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "18101:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "18112:4:22", - "type": "" - } - ], - "src": "17966:324:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18476:217:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "18486:27:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18498:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18509:3:22", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18494:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18494:19:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "18486:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18529:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "18540:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18522:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18522:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18522:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18567:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18578:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18563:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18563:18:22" - }, - { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "18587:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18595:4:22", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "18583:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18583:17:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18556:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18556:45:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18556:45:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18621:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18632:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18617:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18617:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "18637:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18610:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18610:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18610:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "18664:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18675:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "18660:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "18660:18:22" - }, - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "18680:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18653:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18653:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18653:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "18421:9:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "18432:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "18440:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "18448:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "18456:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "18467:4:22", - "type": "" - } - ], - "src": "18295:398:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "18918:160:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "18935:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "18940:66:22", - "type": "", - "value": "0x19457468657265756d205369676e6564204d6573736167653a0a333200000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "18928:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "18928:79:22" - }, - "nodeType": "YulExpressionStatement", - "src": "18928:79:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "19027:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19032:2:22", - "type": "", - "value": "28" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19023:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19023:12:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "19037:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19016:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19016:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19016:28:22" - }, - { - "nodeType": "YulAssignment", - "src": "19053:19:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "19064:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19069:2:22", - "type": "", - "value": "60" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19060:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19060:12:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "19053:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "18894:3:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "18899:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "18910:3:22", - "type": "" - } - ], - "src": "18698:380:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19262:217:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19279:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19290:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19272:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19272:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19272:21:22" - }, - { - "nodeType": "YulAssignment", - "src": "19302:69:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "19336:6:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "19344:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19356:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19367:2:22", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19352:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19352:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "19310:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "19310:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "19302:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19391:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19402:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19387:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19387:18:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "19407:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19380:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19380:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19380:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19434:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19445:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19430:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19430:18:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "19464:6:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "19457:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19457:14:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "19450:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19450:22:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19423:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19423:50:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19423:50:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes_calldata_ptr_t_uint256_t_bool__to_t_bytes_memory_ptr_t_uint256_t_bool__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "19207:9:22", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "19218:6:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "19226:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "19234:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "19242:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "19253:4:22", - "type": "" - } - ], - "src": "19083:396:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19647:158:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19664:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "19675:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19657:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19657:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19657:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19702:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19713:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19698:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19698:18:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19718:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "19691:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19691:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19691:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "19730:69:22", - "value": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "19764:6:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "19772:6:22" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19784:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19795:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "19780:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19780:18:22" - } - ], - "functionName": { - "name": "abi_encode_bytes_calldata", - "nodeType": "YulIdentifier", - "src": "19738:25:22" - }, - "nodeType": "YulFunctionCall", - "src": "19738:61:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "19730:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr_slice__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "19600:9:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "19611:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "19619:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "19627:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "19638:4:22", - "type": "" - } - ], - "src": "19484:321:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "19890:169:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "19936:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19945:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19948:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "19938:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "19938:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19938:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "19911:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19920:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "19907:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19907:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "19932:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "19903:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "19903:32:22" - }, - "nodeType": "YulIf", - "src": "19900:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "19961:29:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "19980:9:22" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "19974:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "19974:16:22" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "19965:5:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "20023:5:22" - } - ], - "functionName": { - "name": "validator_revert_bytes4", - "nodeType": "YulIdentifier", - "src": "19999:23:22" - }, - "nodeType": "YulFunctionCall", - "src": "19999:30:22" - }, - "nodeType": "YulExpressionStatement", - "src": "19999:30:22" - }, - { - "nodeType": "YulAssignment", - "src": "20038:15:22", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "20048:5:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "20038:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes4_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "19856:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "19867:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "19879:6:22", - "type": "" - } - ], - "src": "19810:249:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "20340:235:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20357:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20362:66:22", - "type": "", - "value": "0x53657175656e6365206e657374656420636f6e6669673a0a0000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20350:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20350:79:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20350:79:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20449:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20454:2:22", - "type": "", - "value": "24" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20445:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20445:12:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "20459:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20438:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20438:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20438:28:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20486:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20491:2:22", - "type": "", - "value": "56" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20482:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20482:12:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "20496:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20475:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20475:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20475:28:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20523:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20528:2:22", - "type": "", - "value": "88" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20519:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20519:12:22" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "20533:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20512:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20512:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20512:28:22" - }, - { - "nodeType": "YulAssignment", - "src": "20549:20:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20560:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20565:3:22", - "type": "", - "value": "120" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20556:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20556:13:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "20549:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7_t_bytes32_t_uint256_t_uint256__to_t_string_memory_ptr_t_bytes32_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "20300:3:22", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "20305:6:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "20313:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "20321:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "20332:3:22", - "type": "" - } - ], - "src": "20064:511:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "20800:160:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20817:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20822:66:22", - "type": "", - "value": "0x53657175656e636520737461746963206469676573743a0a0000000000000000" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20810:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20810:79:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20810:79:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20909:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20914:2:22", - "type": "", - "value": "24" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20905:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20905:12:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "20919:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "20898:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "20898:28:22" - }, - "nodeType": "YulExpressionStatement", - "src": "20898:28:22" - }, - { - "nodeType": "YulAssignment", - "src": "20935:19:22", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "20946:3:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "20951:2:22", - "type": "", - "value": "56" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "20942:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "20942:12:22" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "20935:3:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_packed_t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "20776:3:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "20781:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "20792:3:22", - "type": "" - } - ], - "src": "20580:380:22" - } - ] - }, - "contents": "{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value1 := value1_1\n value2 := value2_1\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n }\n function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_array_struct_Transaction_calldata_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_struct_Transaction_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_struct_Transaction_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n value2 := calldataload(add(headStart, 32))\n let offset_1 := calldataload(add(headStart, 64))\n if gt(offset_1, _1) { revert(0, 0) }\n let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n value3 := value3_1\n value4 := value4_1\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__to_t_uint256_t_uint256_t_bytes32_t_bytes32_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value0 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n calldatacopy(pos, value0, value1)\n let _1 := add(pos, value1)\n mstore(_1, 0)\n end := _1\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_decode_bool(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_array_struct_Transaction_calldata_dyn_calldata(value, length, pos) -> end\n {\n mstore(pos, length)\n let _1 := 0x20\n let updated_pos := add(pos, _1)\n let pos_1 := updated_pos\n pos := updated_pos\n let tail := add(pos_1, shl(5, length))\n let srcPtr := value\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, pos_1))\n let rel_offset_of_tail := calldataload(srcPtr)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41))) { revert(0, 0) }\n let value_1 := add(rel_offset_of_tail, value)\n let _2 := 0xc0\n mstore(tail, iszero(iszero(abi_decode_bool(value_1))))\n mstore(add(tail, _1), iszero(iszero(abi_decode_bool(add(value_1, _1)))))\n let _3 := 0x40\n mstore(add(tail, _3), calldataload(add(value_1, _3)))\n let _4 := 0x60\n mstore(add(tail, _4), and(abi_decode_address(add(value_1, _4)), 0xffffffffffffffffffffffffffffffffffffffff))\n let _5 := 0x80\n mstore(add(tail, _5), calldataload(add(value_1, _5)))\n let _6 := 0xa0\n let rel_offset_of_tail_1 := calldataload(add(value_1, _6))\n if iszero(slt(rel_offset_of_tail_1, add(sub(calldatasize(), value_1), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let value_2 := add(rel_offset_of_tail_1, value_1)\n let length_1 := calldataload(value_2)\n let value_3 := add(value_2, _1)\n if gt(length_1, 0xffffffffffffffff) { revert(0, 0) }\n if sgt(value_3, sub(calldatasize(), length_1)) { revert(0, 0) }\n mstore(add(tail, _6), _2)\n tail := abi_encode_bytes_calldata(value_3, length_1, add(tail, _2))\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n end := tail\n }\n function abi_encode_tuple_t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n mstore(add(headStart, 64), 5)\n mstore(add(headStart, 96), \"self:\")\n mstore(add(headStart, 0x20), 128)\n tail := abi_encode_array_struct_Transaction_calldata_dyn_calldata(value0, value1, add(headStart, 128))\n }\n function abi_encode_tuple_t_stringliteral_4dfa0bed92fb5c2df0b47ce555e6e6b89f746e856aa9783c634a4987edcbf682_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr__to_t_string_memory_ptr_t_array$_t_struct$_Transaction_$1292_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n mstore(add(headStart, 64), 6)\n mstore(add(headStart, 96), \"guest:\")\n mstore(add(headStart, 0x20), 128)\n tail := abi_encode_array_struct_Transaction_calldata_dyn_calldata(value0, value1, add(headStart, 128))\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_bytes1__to_t_bytes1__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff00000000000000000000000000000000000000000000000000000000000000))\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes(value0, add(headStart, 32))\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_uint256_t_address_t_bytes32__to_t_string_memory_ptr_t_uint256_t_address_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n {\n mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), and(shl(96, value1), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 54), value2)\n end := add(pos, 86)\n }\n function access_calldata_tail_t_struct$_Transaction_$1292_calldata_ptr(base_ref, ptr_to_tail) -> addr\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41))) { revert(0, 0) }\n addr := add(base_ref, rel_offset_of_tail)\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_bool(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n {\n if gt(startIndex, endIndex) { revert(0, 0) }\n if gt(endIndex, length) { revert(0, 0) }\n offsetOut := add(offset, startIndex)\n lengthOut := sub(endIndex, startIndex)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_bytes_calldata_ptr_slice_t_uint256_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, 96)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 96))\n mstore(add(headStart, 32), value2)\n mstore(add(headStart, 64), value3)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes(value1, add(headStart, 64))\n }\n function abi_encode_tuple_t_bytes32_t_address_t_bytes_calldata_ptr_slice__to_t_bytes32_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 64), 96)\n tail := abi_encode_bytes_calldata(value2, value3, add(headStart, 96))\n }\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 32))\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_bytes_calldata_ptr_t_bytes32__to_t_bytes_memory_ptr_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 64))\n mstore(add(headStart, 32), value2)\n }\n function abi_encode_tuple_t_bytes_calldata_ptr_t_uint8__to_t_bytes_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 64))\n mstore(add(headStart, 32), and(value2, 0xff))\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n mstore(pos, 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000)\n mstore(add(pos, 28), value0)\n end := add(pos, 60)\n }\n function abi_encode_tuple_t_bytes_calldata_ptr_t_uint256_t_bool__to_t_bytes_memory_ptr_t_uint256_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, 96)\n tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 96))\n mstore(add(headStart, 32), value2)\n mstore(add(headStart, 64), iszero(iszero(value3)))\n }\n function abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr_slice__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), 64)\n tail := abi_encode_bytes_calldata(value1, value2, add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_packed_t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7_t_bytes32_t_uint256_t_uint256__to_t_string_memory_ptr_t_bytes32_t_uint256_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n {\n mstore(pos, 0x53657175656e6365206e657374656420636f6e6669673a0a0000000000000000)\n mstore(add(pos, 24), value0)\n mstore(add(pos, 56), value1)\n mstore(add(pos, 88), value2)\n end := add(pos, 120)\n }\n function abi_encode_tuple_packed_t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n mstore(pos, 0x53657175656e636520737461746963206469676573743a0a0000000000000000)\n mstore(add(pos, 24), value0)\n end := add(pos, 56)\n }\n}", - "id": 22, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "6080604052600436106100bc5760003560e01c806361c2926c116100745780638c3f55631161004e5780638c3f55631461025357806390042baf14610273578063affed0e0146102ab57600080fd5b806361c2926c146101cb5780637a9a1628146101eb578063853c50681461020b57600080fd5b806320c13b0b116100a557806320c13b0b14610147578063295614261461016757806357c56d6b1461018957600080fd5b806301ffc9a7146100c15780631626ba7e146100f6575b600080fd5b3480156100cd57600080fd5b506100e16100dc366004611880565b6102c0565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b506101166101113660046118e6565b6102d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ed565b34801561015357600080fd5b50610116610162366004611932565b61031e565b34801561017357600080fd5b5061018761018236600461199e565b610383565b005b34801561019557600080fd5b506101bd7f8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d181565b6040519081526020016100ed565b3480156101d757600080fd5b506101876101e63660046119fc565b6103d5565b3480156101f757600080fd5b50610187610206366004611a3e565b61041a565b34801561021757600080fd5b5061022b6102263660046118e6565b610447565b604080519586526020860194909452928401919091526060830152608082015260a0016100ed565b34801561025f57600080fd5b506101bd61026e36600461199e565b61060f565b610286610281366004611ae7565b61063b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b3480156102b757600080fd5b506101bd610725565b60006102cb82610736565b92915050565b6000806102df858585610792565b509050801561031157507f1626ba7e000000000000000000000000000000000000000000000000000000009050610317565b50600090505b9392505050565b6000806103438686604051610334929190611bb6565b60405180910390208585610792565b509050801561037557507f20c13b0b00000000000000000000000000000000000000000000000000000000905061037b565b50600090505b949350505050565b3330146103c9576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044015b60405180910390fd5b6103d2816107ca565b50565b600061040883836040516020016103ed929190611d97565b604051602081830303815290604052805190602001206107fc565b9050610415818484610881565b505050565b600061043286866040516020016103ed929190611ddf565b905061043f818787610881565b505050505050565b6000806000806000808787600081811061046357610463611e27565b909101357fff000000000000000000000000000000000000000000000000000000000000001691508190506104b95761049b896107fc565b92506104a8838989610a0e565b929850909650945091506106049050565b7fff00000000000000000000000000000000000000000000000000000000000000818116016104f8576104eb896107fc565b92506104a8838989610a5f565b7ffe000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082160161054a576104eb89610a8b565b7ffd000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216016105ae5761059e898989610af8565b9550955095509550955050610604565b6040517f6085cd820000000000000000000000000000000000000000000000000000000081527fff00000000000000000000000000000000000000000000000000000000000000821660048201526024016103c0565b939792965093509350565b60006102cb7f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83610c75565b600033301461067e576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044016103c0565b81516020830134f0905073ffffffffffffffffffffffffffffffffffffffff81166106d757816040517f0d2571910000000000000000000000000000000000000000000000000000000081526004016103c09190611eba565b60405173ffffffffffffffffffffffffffffffffffffffff821681527fa506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c9060200160405180910390a1919050565b6000610731600061060f565b905090565b60007f6ffbd451000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083160161078957506001919050565b6102cb82610cd3565b60008060008060006107a5888888610447565b509650919450925090508282108015906107bd575060015b9450505050935093915050565b6040517fa038794000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f190100000000000000000000000000000000000000000000000000000000000060208201524660228201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166042820152605681018290526000906076015b604051602081830303815290604052805190602001209050919050565b8060005b81811015610a0757368484838181106108a0576108a0611e27565b90506020028101906108b29190611ecd565b90506108c16020820182611f0b565b156108fb576040517f230d1ccc000000000000000000000000000000000000000000000000000000008152600481018390526024016103c0565b6040810135805a101561094e5782815a6040517f2bb3e3ba0000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915260448201526064016103c0565b60006109886109636080850160608601611f26565b608085013584156109745784610976565b5a5b61098360a0880188611f41565b610d2f565b905080156109cf57877f5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7856040516109c291815260200190565b60405180910390a26109f1565b6109f16109e26040850160208601611f0b565b89866109ec610d4c565b610d6b565b50505080806109ff90611fd5565b915050610885565b5050505050565b6000808080610a2987610a24876006818b61200d565b610db9565b6000908152873560f01c6020818152604080842084526002909a013560e01c908190529890912090999198509695509350505050565b6000808080610a7a87610a75876001818b61200d565b610a0e565b935093509350935093509350935093565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201526000602282018190527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660428301526056820183905290607601610864565b6000808080806004600188013560e81c82610b138383612037565b9050610b258b61022683868d8f61200d565b939b5091995097509550935087871015610b7d57610b4581848b8d61200d565b89896040517fb006aba00000000000000000000000000000000000000000000000000000000081526004016103c0949392919061204a565b8092505b88831015610c675760038301928a013560e81c9150610ba08383612037565b90506000610bc2610bb08861124f565b8c8c879086926102269392919061200d565b939c50919a5098509091505088881015610c1a57610be282858c8e61200d565b8a8a6040517fb006aba00000000000000000000000000000000000000000000000000000000081526004016103c0949392919061204a565b848110610c5d576040517f37daf62b00000000000000000000000000000000000000000000000000000000815260048101829052602481018690526044016103c0565b9350915081610b81565b505050939792965093509350565b6000808383604051602001610c94929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012054949350505050565b60007fe4a77bbc000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601610d2657506001919050565b6102cb82611283565b6000604051828482376000808483898b8af1979650505050505050565b60603d604051915060208201818101604052818352816000823e505090565b8315610d7957805160208201fd5b827fab46c69f7f32e1bf09b0725853da82a211e5402a0600296ab499a2fb5ea3b4198383604051610dab929190612071565b60405180910390a250505050565b60008060005b8381101561124657600181019085013560f81c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101610e6057601582019186013560f881901c9060581c73ffffffffffffffffffffffffffffffffffffffff81169074ff000000000000000000000000000000000000000016811785610e465780610e55565b60008681526020829052604090205b955050505050610dbf565b80610ef65760018201918681013560f81c906043016000610e8c8a610e8784888c8e61200d565b61136d565b60ff841697909701969194508491905060a083901b74ff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff82161786610edb5780610eea565b60008781526020829052604090205b96505050505050610dbf565b6002810361101e576000808784013560f881901c9060581c73ffffffffffffffffffffffffffffffffffffffff16601586019550909250905060008885013560e81c600386018162ffffff169150809650819250505060008186019050610f6f8b848c8c8a908692610f6a9392919061200d565b611630565b610fb7578a83610f8183898d8f61200d565b6040517f9a9462320000000000000000000000000000000000000000000000000000000081526004016103c0949392919061208a565b60ff8416979097019694508460a084901b74ff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617876110025780611011565b60008881526020829052604090205b9750505050505050610dbf565b60038103611051576020820191860135836110395780611048565b60008481526020829052604090205b93505050610dbf565b6004810361109d576003808301928781013560e81c919082010160008061107e8b610a2485898d8f61200d565b60009889526020526040909720969097019650909350610dbf92505050565b600681036111a55760008287013560f81c60018401935060ff16905060008784013560f01c60028501945061ffff16905060008885013560e81c600386018162ffffff16915080965081925050506000818601905060008061110b8d8d8d8b908792610a249392919061200d565b9398508893909250905084821061112157988501985b604080517f53657175656e6365206e657374656420636f6e6669673a0a0000000000000000602080830191909152603882018490526058820188905260788083018a90528351808403909101815260989092019092528051910120896111875780611196565b60008a81526020829052604090205b99505050505050505050610dbf565b600581036112115760208201918601358781036111e0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94505b60006111eb82611817565b9050846111f85780611207565b60008581526020829052604090205b9450505050610dbf565b6040517fb2505f7c000000000000000000000000000000000000000000000000000000008152600481018290526024016103c0565b50935093915050565b7f8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d160009081526020829052604081206102cb565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fac6a444e00000000000000000000000000000000000000000000000000000000148061131657507fffffffff0000000000000000000000000000000000000000000000000000000082167f36e7817500000000000000000000000000000000000000000000000000000000145b1561132357506001919050565b7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102cb565b6000604282146113ad5782826040517f2ee17a3d0000000000000000000000000000000000000000000000000000000081526004016103c09291906120ca565b60006113c66113bd6001856120de565b85013560f81c90565b60ff169050604084013560f81c843560208601357f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081111561143a578686826040517fad4aac760000000000000000000000000000000000000000000000000000000081526004016103c0939291906120f1565b8260ff16601b1415801561145257508260ff16601c14155b1561148f578686846040517fe578897e0000000000000000000000000000000000000000000000000000000081526004016103c093929190612115565b600184036114fc576040805160008152602081018083528a905260ff851691810191909152606081018390526080810182905260019060a0015b6020604051602081039080840390855afa1580156114eb573d6000803e3d6000fd5b5050506020604051035194506115d4565b60028403611599576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101899052600190605c01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff861690820152606081018490526080810183905260a0016114c9565b86868560016040517f9dfba8520000000000000000000000000000000000000000000000000000000081526004016103c0949392919061213c565b73ffffffffffffffffffffffffffffffffffffffff85166116255786866040517f6c1719d20000000000000000000000000000000000000000000000000000000081526004016103c09291906120ca565b505050509392505050565b600081810361166b576040517fac241e1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838361167a6001826120de565b81811061168957611689611e27565b919091013560f81c91505060018114806116a35750600281145b156116e8578473ffffffffffffffffffffffffffffffffffffffff166116ca87868661136d565b73ffffffffffffffffffffffffffffffffffffffff1614915061180e565b600381036117d35773ffffffffffffffffffffffffffffffffffffffff8516631626ba7e878660008761171c6001826120de565b926117299392919061200d565b6040518463ffffffff1660e01b815260040161174793929190612168565b602060405180830381865afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611788919061218b565b7fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014915061180e565b83838260006040517f9dfba8520000000000000000000000000000000000000000000000000000000081526004016103c0949392919061213c565b50949350505050565b6040517f53657175656e636520737461746963206469676573743a0a0000000000000000602082015260388101829052600090605801610864565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146103d257600080fd5b60006020828403121561189257600080fd5b813561031781611852565b60008083601f8401126118af57600080fd5b50813567ffffffffffffffff8111156118c757600080fd5b6020830191508360208285010111156118df57600080fd5b9250929050565b6000806000604084860312156118fb57600080fd5b83359250602084013567ffffffffffffffff81111561191957600080fd5b6119258682870161189d565b9497909650939450505050565b6000806000806040858703121561194857600080fd5b843567ffffffffffffffff8082111561196057600080fd5b61196c8883890161189d565b9096509450602087013591508082111561198557600080fd5b506119928782880161189d565b95989497509550505050565b6000602082840312156119b057600080fd5b5035919050565b60008083601f8401126119c957600080fd5b50813567ffffffffffffffff8111156119e157600080fd5b6020830191508360208260051b85010111156118df57600080fd5b60008060208385031215611a0f57600080fd5b823567ffffffffffffffff811115611a2657600080fd5b611a32858286016119b7565b90969095509350505050565b600080600080600060608688031215611a5657600080fd5b853567ffffffffffffffff80821115611a6e57600080fd5b611a7a89838a016119b7565b9097509550602088013594506040880135915080821115611a9a57600080fd5b50611aa78882890161189d565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611af957600080fd5b813567ffffffffffffffff80821115611b1157600080fd5b818401915084601f830112611b2557600080fd5b813581811115611b3757611b37611ab8565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611b7d57611b7d611ab8565b81604052828152876020848701011115611b9657600080fd5b826020860160208301376000928101602001929092525095945050505050565b8183823760009101908152919050565b80358015158114611bd657600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bd657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260006020808501808196508560051b810191508460005b87811015611d8a57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41883603018112611ca157600080fd5b870160c0611cae82611bc6565b15158652611cbd878301611bc6565b15158688015260408281013590870152606073ffffffffffffffffffffffffffffffffffffffff611cef828501611bdb565b16908701526080828101359087015260a080830135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112611d3557600080fd5b90920187810192903567ffffffffffffffff811115611d5357600080fd5b803603841315611d6257600080fd5b8282890152611d748389018286611bff565b9c89019c97505050928601925050600101611c62565b5091979650505050505050565b60408152600560408201527f73656c663a000000000000000000000000000000000000000000000000000000606082015260806020820152600061037b608083018486611c48565b60408152600660408201527f67756573743a0000000000000000000000000000000000000000000000000000606082015260806020820152600061037b608083018486611c48565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815180845260005b81811015611e7c57602081850181015186830182015201611e60565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006103176020830184611e56565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112611f0157600080fd5b9190910192915050565b600060208284031215611f1d57600080fd5b61031782611bc6565b600060208284031215611f3857600080fd5b61031782611bdb565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f7657600080fd5b83018035915067ffffffffffffffff821115611f9157600080fd5b6020019150368190038213156118df57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361200657612006611fa6565b5060010190565b6000808585111561201d57600080fd5b8386111561202a57600080fd5b5050820193919092039150565b808201808211156102cb576102cb611fa6565b60608152600061205e606083018688611bff565b6020830194909452506040015292915050565b82815260406020820152600061037b6040830184611e56565b84815273ffffffffffffffffffffffffffffffffffffffff841660208201526060604082015260006120c0606083018486611bff565b9695505050505050565b60208152600061037b602083018486611bff565b818103818111156102cb576102cb611fa6565b604081526000612105604083018587611bff565b9050826020830152949350505050565b604081526000612129604083018587611bff565b905060ff83166020830152949350505050565b606081526000612150606083018688611bff565b60208301949094525090151560409091015292915050565b838152604060208201526000612182604083018486611bff565b95945050505050565b60006020828403121561219d57600080fd5b81516103178161185256fea26469706673582212209bb95d18e97f278aa47e0c04c20d5a6af9bdb6d473c6d4051192cd96fc17866864736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x61C2926C GT PUSH2 0x74 JUMPI DUP1 PUSH4 0x8C3F5563 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C3F5563 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x90042BAF EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xAFFED0E0 EQ PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x61C2926C EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x7A9A1628 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0x853C5068 EQ PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x20C13B0B GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x20C13B0B EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x29561426 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x57C56D6B EQ PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE1 PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x1880 JUMP JUMPDEST PUSH2 0x2C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x18E6 JUMP JUMPDEST PUSH2 0x2D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x116 PUSH2 0x162 CALLDATASIZE PUSH1 0x4 PUSH2 0x1932 JUMP JUMPDEST PUSH2 0x31E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x199E JUMP JUMPDEST PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH32 0x8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x3D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x187 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A3E JUMP JUMPDEST PUSH2 0x41A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x18E6 JUMP JUMPDEST PUSH2 0x447 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x199E JUMP JUMPDEST PUSH2 0x60F JUMP JUMPDEST PUSH2 0x286 PUSH2 0x281 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AE7 JUMP JUMPDEST PUSH2 0x63B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BD PUSH2 0x725 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CB DUP3 PUSH2 0x736 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DF DUP6 DUP6 DUP6 PUSH2 0x792 JUMP JUMPDEST POP SWAP1 POP DUP1 ISZERO PUSH2 0x311 JUMPI POP PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 SWAP1 POP PUSH2 0x317 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x343 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x334 SWAP3 SWAP2 SWAP1 PUSH2 0x1BB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP6 DUP6 PUSH2 0x792 JUMP JUMPDEST POP SWAP1 POP DUP1 ISZERO PUSH2 0x375 JUMPI POP PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 SWAP1 POP PUSH2 0x37B JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x3C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3D2 DUP2 PUSH2 0x7CA JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x408 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ED SWAP3 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x7FC JUMP JUMPDEST SWAP1 POP PUSH2 0x415 DUP2 DUP5 DUP5 PUSH2 0x881 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x432 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ED SWAP3 SWAP2 SWAP1 PUSH2 0x1DDF JUMP JUMPDEST SWAP1 POP PUSH2 0x43F DUP2 DUP8 DUP8 PUSH2 0x881 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x463 JUMPI PUSH2 0x463 PUSH2 0x1E27 JUMP JUMPDEST SWAP1 SWAP2 ADD CALLDATALOAD PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP2 POP DUP2 SWAP1 POP PUSH2 0x4B9 JUMPI PUSH2 0x49B DUP10 PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP PUSH2 0x4A8 DUP4 DUP10 DUP10 PUSH2 0xA0E JUMP JUMPDEST SWAP3 SWAP9 POP SWAP1 SWAP7 POP SWAP5 POP SWAP2 POP PUSH2 0x604 SWAP1 POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 DUP2 AND ADD PUSH2 0x4F8 JUMPI PUSH2 0x4EB DUP10 PUSH2 0x7FC JUMP JUMPDEST SWAP3 POP PUSH2 0x4A8 DUP4 DUP10 DUP10 PUSH2 0xA5F JUMP JUMPDEST PUSH32 0xFE00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND ADD PUSH2 0x54A JUMPI PUSH2 0x4EB DUP10 PUSH2 0xA8B JUMP JUMPDEST PUSH32 0xFD00000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND ADD PUSH2 0x5AE JUMPI PUSH2 0x59E DUP10 DUP10 DUP10 PUSH2 0xAF8 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x604 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6085CD8200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CB PUSH32 0x8D0BF1FD623D628C741362C1289948E57B3E2905218C676D3E69ABEE36D6AE2E DUP4 PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x67E JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x3C0 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD CALLVALUE CREATE SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6D7 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xD25719100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x1EBA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0xA506AD4E7F05ECEBA62A023C3219E5BD98A615F4FA87E2AFB08A2DA5CF62BF0C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x731 PUSH1 0x0 PUSH2 0x60F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6FFBD45100000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0x789 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CB DUP3 PUSH2 0xCD3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x7A5 DUP9 DUP9 DUP9 PUSH2 0x447 JUMP JUMPDEST POP SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP DUP3 DUP3 LT DUP1 ISZERO SWAP1 PUSH2 0x7BD JUMPI POP PUSH1 0x1 JUMPDEST SWAP5 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA038794000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE CHAINID PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x56 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x76 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA07 JUMPI CALLDATASIZE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x8A0 JUMPI PUSH2 0x8A0 PUSH2 0x1E27 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x8B2 SWAP2 SWAP1 PUSH2 0x1ECD JUMP JUMPDEST SWAP1 POP PUSH2 0x8C1 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x1F0B JUMP JUMPDEST ISZERO PUSH2 0x8FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x230D1CCC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP1 GAS LT ISZERO PUSH2 0x94E JUMPI DUP3 DUP2 GAS PUSH1 0x40 MLOAD PUSH32 0x2BB3E3BA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x988 PUSH2 0x963 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x1F26 JUMP JUMPDEST PUSH1 0x80 DUP6 ADD CALLDATALOAD DUP5 ISZERO PUSH2 0x974 JUMPI DUP5 PUSH2 0x976 JUMP JUMPDEST GAS JUMPDEST PUSH2 0x983 PUSH1 0xA0 DUP9 ADD DUP9 PUSH2 0x1F41 JUMP JUMPDEST PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x9CF JUMPI DUP8 PUSH32 0x5C4EEB02DABF8976016AB414D617F9A162936DCACE3CDEF8C69EF6E262AD5AE7 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9C2 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x9F1 PUSH2 0x9E2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1F0B JUMP JUMPDEST DUP10 DUP7 PUSH2 0x9EC PUSH2 0xD4C JUMP JUMPDEST PUSH2 0xD6B JUMP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x9FF SWAP1 PUSH2 0x1FD5 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x885 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xA29 DUP8 PUSH2 0xA24 DUP8 PUSH1 0x6 DUP2 DUP12 PUSH2 0x200D JUMP JUMPDEST PUSH2 0xDB9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE DUP8 CALLDATALOAD PUSH1 0xF0 SHR PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP5 MSTORE PUSH1 0x2 SWAP1 SWAP11 ADD CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 SWAP1 MSTORE SWAP9 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP10 SWAP2 SWAP9 POP SWAP7 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xA7A DUP8 PUSH2 0xA75 DUP8 PUSH1 0x1 DUP2 DUP12 PUSH2 0x200D JUMP JUMPDEST PUSH2 0xA0E JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x22 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 ADDRESS PUSH1 0x60 SHL AND PUSH1 0x42 DUP4 ADD MSTORE PUSH1 0x56 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH1 0x76 ADD PUSH2 0x864 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH1 0x4 PUSH1 0x1 DUP9 ADD CALLDATALOAD PUSH1 0xE8 SHR DUP3 PUSH2 0xB13 DUP4 DUP4 PUSH2 0x2037 JUMP JUMPDEST SWAP1 POP PUSH2 0xB25 DUP12 PUSH2 0x226 DUP4 DUP7 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP12 POP SWAP2 SWAP10 POP SWAP8 POP SWAP6 POP SWAP4 POP DUP8 DUP8 LT ISZERO PUSH2 0xB7D JUMPI PUSH2 0xB45 DUP2 DUP5 DUP12 DUP14 PUSH2 0x200D JUMP JUMPDEST DUP10 DUP10 PUSH1 0x40 MLOAD PUSH32 0xB006ABA000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x204A JUMP JUMPDEST DUP1 SWAP3 POP JUMPDEST DUP9 DUP4 LT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x3 DUP4 ADD SWAP3 DUP11 ADD CALLDATALOAD PUSH1 0xE8 SHR SWAP2 POP PUSH2 0xBA0 DUP4 DUP4 PUSH2 0x2037 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBC2 PUSH2 0xBB0 DUP9 PUSH2 0x124F JUMP JUMPDEST DUP13 DUP13 DUP8 SWAP1 DUP7 SWAP3 PUSH2 0x226 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP13 POP SWAP2 SWAP11 POP SWAP9 POP SWAP1 SWAP2 POP POP DUP9 DUP9 LT ISZERO PUSH2 0xC1A JUMPI PUSH2 0xBE2 DUP3 DUP6 DUP13 DUP15 PUSH2 0x200D JUMP JUMPDEST DUP11 DUP11 PUSH1 0x40 MLOAD PUSH32 0xB006ABA000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x204A JUMP JUMPDEST DUP5 DUP2 LT PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x37DAF62B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x3C0 JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0xB81 JUMP JUMPDEST POP POP POP SWAP4 SWAP8 SWAP3 SWAP7 POP SWAP4 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC94 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xE4A77BBC00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0xD26 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CB DUP3 PUSH2 0x1283 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 DUP5 DUP3 CALLDATACOPY PUSH1 0x0 DUP1 DUP5 DUP4 DUP10 DUP12 DUP11 CALL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 RETURNDATASIZE PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 DUP4 MSTORE DUP2 PUSH1 0x0 DUP3 RETURNDATACOPY POP POP SWAP1 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xD79 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST DUP3 PUSH32 0xAB46C69F7F32E1BF09B0725853DA82A211E5402A0600296AB499A2FB5EA3B419 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xDAB SWAP3 SWAP2 SWAP1 PUSH2 0x2071 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1246 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 DUP6 ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD PUSH2 0xE60 JUMPI PUSH1 0x15 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD PUSH1 0xF8 DUP2 SWAP1 SHR SWAP1 PUSH1 0x58 SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH21 0xFF0000000000000000000000000000000000000000 AND DUP2 OR DUP6 PUSH2 0xE46 JUMPI DUP1 PUSH2 0xE55 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP6 POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST DUP1 PUSH2 0xEF6 JUMPI PUSH1 0x1 DUP3 ADD SWAP2 DUP7 DUP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP1 PUSH1 0x43 ADD PUSH1 0x0 PUSH2 0xE8C DUP11 PUSH2 0xE87 DUP5 DUP9 DUP13 DUP15 PUSH2 0x200D JUMP JUMPDEST PUSH2 0x136D JUMP JUMPDEST PUSH1 0xFF DUP5 AND SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP2 SWAP5 POP DUP5 SWAP2 SWAP1 POP PUSH1 0xA0 DUP4 SWAP1 SHL PUSH21 0xFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND OR DUP7 PUSH2 0xEDB JUMPI DUP1 PUSH2 0xEEA JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP7 POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x101E JUMPI PUSH1 0x0 DUP1 DUP8 DUP5 ADD CALLDATALOAD PUSH1 0xF8 DUP2 SWAP1 SHR SWAP1 PUSH1 0x58 SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x15 DUP7 ADD SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP9 DUP6 ADD CALLDATALOAD PUSH1 0xE8 SHR PUSH1 0x3 DUP7 ADD DUP2 PUSH3 0xFFFFFF AND SWAP2 POP DUP1 SWAP7 POP DUP2 SWAP3 POP POP POP PUSH1 0x0 DUP2 DUP7 ADD SWAP1 POP PUSH2 0xF6F DUP12 DUP5 DUP13 DUP13 DUP11 SWAP1 DUP7 SWAP3 PUSH2 0xF6A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST PUSH2 0x1630 JUMP JUMPDEST PUSH2 0xFB7 JUMPI DUP11 DUP4 PUSH2 0xF81 DUP4 DUP10 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9A94623200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x208A JUMP JUMPDEST PUSH1 0xFF DUP5 AND SWAP8 SWAP1 SWAP8 ADD SWAP7 SWAP5 POP DUP5 PUSH1 0xA0 DUP5 SWAP1 SHL PUSH21 0xFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND OR DUP8 PUSH2 0x1002 JUMPI DUP1 PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP8 POP POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x1051 JUMPI PUSH1 0x20 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD DUP4 PUSH2 0x1039 JUMPI DUP1 PUSH2 0x1048 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP4 POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x109D JUMPI PUSH1 0x3 DUP1 DUP4 ADD SWAP3 DUP8 DUP2 ADD CALLDATALOAD PUSH1 0xE8 SHR SWAP2 SWAP1 DUP3 ADD ADD PUSH1 0x0 DUP1 PUSH2 0x107E DUP12 PUSH2 0xA24 DUP6 DUP10 DUP14 DUP16 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x0 SWAP9 DUP10 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP8 KECCAK256 SWAP7 SWAP1 SWAP8 ADD SWAP7 POP SWAP1 SWAP4 POP PUSH2 0xDBF SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x11A5 JUMPI PUSH1 0x0 DUP3 DUP8 ADD CALLDATALOAD PUSH1 0xF8 SHR PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH1 0xFF AND SWAP1 POP PUSH1 0x0 DUP8 DUP5 ADD CALLDATALOAD PUSH1 0xF0 SHR PUSH1 0x2 DUP6 ADD SWAP5 POP PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 DUP9 DUP6 ADD CALLDATALOAD PUSH1 0xE8 SHR PUSH1 0x3 DUP7 ADD DUP2 PUSH3 0xFFFFFF AND SWAP2 POP DUP1 SWAP7 POP DUP2 SWAP3 POP POP POP PUSH1 0x0 DUP2 DUP7 ADD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x110B DUP14 DUP14 DUP14 DUP12 SWAP1 DUP8 SWAP3 PUSH2 0xA24 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST SWAP4 SWAP9 POP DUP9 SWAP4 SWAP1 SWAP3 POP SWAP1 POP DUP5 DUP3 LT PUSH2 0x1121 JUMPI SWAP9 DUP6 ADD SWAP9 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x53657175656E6365206E657374656420636F6E6669673A0A0000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x38 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x58 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x78 DUP1 DUP4 ADD DUP11 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x98 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 DUP10 PUSH2 0x1187 JUMPI DUP1 PUSH2 0x1196 JUMP JUMPDEST PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x1211 JUMPI PUSH1 0x20 DUP3 ADD SWAP2 DUP7 ADD CALLDATALOAD DUP8 DUP2 SUB PUSH2 0x11E0 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 POP JUMPDEST PUSH1 0x0 PUSH2 0x11EB DUP3 PUSH2 0x1817 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x11F8 JUMPI DUP1 PUSH2 0x1207 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 JUMPDEST SWAP5 POP POP POP POP PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB2505F7C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3C0 JUMP JUMPDEST POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xAC6A444E00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x1316 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x36E7817500000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x1323 JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ PUSH2 0x2CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x42 DUP3 EQ PUSH2 0x13AD JUMPI DUP3 DUP3 PUSH1 0x40 MLOAD PUSH32 0x2EE17A3D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP3 SWAP2 SWAP1 PUSH2 0x20CA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C6 PUSH2 0x13BD PUSH1 0x1 DUP6 PUSH2 0x20DE JUMP JUMPDEST DUP6 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP1 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0xF8 SHR DUP5 CALLDATALOAD PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP2 GT ISZERO PUSH2 0x143A JUMPI DUP7 DUP7 DUP3 PUSH1 0x40 MLOAD PUSH32 0xAD4AAC7600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20F1 JUMP JUMPDEST DUP3 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x1452 JUMPI POP DUP3 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x148F JUMPI DUP7 DUP7 DUP5 PUSH1 0x40 MLOAD PUSH32 0xE578897E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2115 JUMP JUMPDEST PUSH1 0x1 DUP5 SUB PUSH2 0x14FC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 DUP4 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP6 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP5 POP PUSH2 0x15D4 JUMP JUMPDEST PUSH1 0x2 DUP5 SUB PUSH2 0x1599 JUMPI PUSH1 0x40 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3C DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0x5C ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP5 MSTORE SWAP1 DUP4 ADD DUP1 DUP4 MSTORE MSTORE PUSH1 0xFF DUP7 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 ADD PUSH2 0x14C9 JUMP JUMPDEST DUP7 DUP7 DUP6 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH32 0x9DFBA85200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x1625 JUMPI DUP7 DUP7 PUSH1 0x40 MLOAD PUSH32 0x6C1719D200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP3 SWAP2 SWAP1 PUSH2 0x20CA JUMP JUMPDEST POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB PUSH2 0x166B JUMPI PUSH1 0x40 MLOAD PUSH32 0xAC241E1100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 PUSH2 0x167A PUSH1 0x1 DUP3 PUSH2 0x20DE JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x1689 JUMPI PUSH2 0x1689 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD PUSH1 0xF8 SHR SWAP2 POP POP PUSH1 0x1 DUP2 EQ DUP1 PUSH2 0x16A3 JUMPI POP PUSH1 0x2 DUP2 EQ JUMPDEST ISZERO PUSH2 0x16E8 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16CA DUP8 DUP7 DUP7 PUSH2 0x136D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP2 POP PUSH2 0x180E JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x17D3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH4 0x1626BA7E DUP8 DUP7 PUSH1 0x0 DUP8 PUSH2 0x171C PUSH1 0x1 DUP3 PUSH2 0x20DE JUMP JUMPDEST SWAP3 PUSH2 0x1729 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x200D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1747 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2168 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1764 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1788 SWAP2 SWAP1 PUSH2 0x218B JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP2 POP PUSH2 0x180E JUMP JUMPDEST DUP4 DUP4 DUP3 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x9DFBA85200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3C0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x53657175656E636520737461746963206469676573743A0A0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x38 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x58 ADD PUSH2 0x864 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1892 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x317 DUP2 PUSH2 0x1852 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x18AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x18FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1925 DUP7 DUP3 DUP8 ADD PUSH2 0x189D JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x196C DUP9 DUP4 DUP10 ADD PUSH2 0x189D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1992 DUP8 DUP3 DUP9 ADD PUSH2 0x189D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x19C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1A0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A32 DUP6 DUP3 DUP7 ADD PUSH2 0x19B7 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1A56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A7A DUP10 DUP4 DUP11 ADD PUSH2 0x19B7 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA7 DUP9 DUP3 DUP10 ADD PUSH2 0x189D JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1B37 JUMPI PUSH2 0x1B37 PUSH2 0x1AB8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1B7D JUMPI PUSH2 0x1B7D PUSH2 0x1AB8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1BD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP6 PUSH1 0x5 SHL DUP2 ADD SWAP2 POP DUP5 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1D8A JUMPI DUP3 DUP5 SUB DUP10 MSTORE DUP2 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP9 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1CA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 ADD PUSH1 0xC0 PUSH2 0x1CAE DUP3 PUSH2 0x1BC6 JUMP JUMPDEST ISZERO ISZERO DUP7 MSTORE PUSH2 0x1CBD DUP8 DUP4 ADD PUSH2 0x1BC6 JUMP JUMPDEST ISZERO ISZERO DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1CEF DUP3 DUP6 ADD PUSH2 0x1BDB JUMP JUMPDEST AND SWAP1 DUP8 ADD MSTORE PUSH1 0x80 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP8 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD CALLDATALOAD CALLDATASIZE DUP5 SWAP1 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 ADD DUP2 SLT PUSH2 0x1D35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP3 ADD DUP8 DUP2 ADD SWAP3 SWAP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP5 SGT ISZERO PUSH2 0x1D62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP3 DUP10 ADD MSTORE PUSH2 0x1D74 DUP4 DUP10 ADD DUP3 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP13 DUP10 ADD SWAP13 SWAP8 POP POP POP SWAP3 DUP7 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1C62 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x5 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x73656C663A000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x6 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x67756573743A0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E7C JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1E60 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x317 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1E56 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1F01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x317 DUP3 PUSH2 0x1BC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x317 DUP3 PUSH2 0x1BDB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1F76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x18DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2006 JUMPI PUSH2 0x2006 PUSH2 0x1FA6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x201D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x202A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2CB JUMPI PUSH2 0x2CB PUSH2 0x1FA6 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x205E PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x40 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1E56 JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x20C0 PUSH1 0x60 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x37B PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2CB JUMPI PUSH2 0x2CB PUSH2 0x1FA6 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2105 PUSH1 0x40 DUP4 ADD DUP6 DUP8 PUSH2 0x1BFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2129 PUSH1 0x40 DUP4 ADD DUP6 DUP8 PUSH2 0x1BFF JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2150 PUSH1 0x60 DUP4 ADD DUP7 DUP9 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP SWAP1 ISZERO ISZERO PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x2182 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x1BFF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x219D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x317 DUP2 PUSH2 0x1852 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP12 0xB9 0x5D XOR 0xE9 PUSH32 0x278AA47E0C04C20D5A6AF9BDB6D473C6D4051192CD96FC17866864736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "640:2693:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3127:204;;;;;;;;;;-1:-1:-1;3127:204:1;;;;;:::i;:::-;;:::i;:::-;;;611:14:22;;604:22;586:41;;574:2;559:18;3127:204:1;;;;;;;;5489:316:2;;;;;;;;;;-1:-1:-1;5489:316:2;;;;;:::i;:::-;;:::i;:::-;;;1646:66:22;1634:79;;;1616:98;;1604:2;1589:18;5489:316:2;1472:248:22;4525:332:2;;;;;;;;;;-1:-1:-1;4525:332:2;;;;;:::i;:::-;;:::i;6456:119::-;;;;;;;;;;-1:-1:-1;6456:119:2;;;;;:::i;:::-;;:::i;:::-;;811:95:14;;;;;;;;;;;;862:44;811:95;;;;;2778:25:22;;;2766:2;2751:18;811:95:14;2632:177:22;1290:262:1;;;;;;;;;;-1:-1:-1;1290:262:1;;;;;:::i;:::-;;:::i;890:292::-;;;;;;;;;;-1:-1:-1;890:292:1;;;;;:::i;:::-;;:::i;1675:1486:2:-;;;;;;;;;;-1:-1:-1;1675:1486:2;;;;;:::i;:::-;;:::i;:::-;;;;4827:25:22;;;4883:2;4868:18;;4861:34;;;;4911:18;;;4904:34;;;;4969:2;4954:18;;4947:34;5012:3;4997:19;;4990:35;4814:3;4799:19;1675:1486:2;4568:463:22;938:156:6;;;;;;;;;;-1:-1:-1;938:156:6;;;;;:::i;:::-;;:::i;456:276:4:-;;;;;;:::i;:::-;;:::i;:::-;;;6753:42:22;6741:55;;;6723:74;;6711:2;6696:18;456:276:4;6577:226:22;670:87:6;;;;;;;;;;;;;:::i;3127:204:1:-;3270:4;3289:37;3313:12;3289:23;:37::i;:::-;3282:44;3127:204;-1:-1:-1;;3127:204:1:o;5489:316:2:-;5608:6;5650:12;5667:40;5688:5;5695:11;;5667:20;:40::i;:::-;5649:58;;;5717:7;5713:65;;;-1:-1:-1;5741:30:2;;-1:-1:-1;5734:37:2;;5713:65;-1:-1:-1;5798:1:2;;-1:-1:-1;5489:316:2;;;;;;:::o;4525:332::-;4651:6;4693:12;4710:51;4741:5;;4731:16;;;;;;;:::i;:::-;;;;;;;;4749:11;;4710:20;:51::i;:::-;4692:69;;;4771:7;4767:63;;;-1:-1:-1;4795:28:2;;-1:-1:-1;4788:35:2;;4767:63;-1:-1:-1;4850:1:2;;-1:-1:-1;4525:332:2;;;;;;;:::o;6456:119::-;178:10:8;200:4;178:27;174:94;;222:39;;;;;235:10;222:39;;;7319:34:22;255:4:8;7369:18:22;;;7362:43;7231:18;;222:39:8;;;;;;;;174:94;6542:28:2::1;6559:10;6542:16;:28::i;:::-;6456:119:::0;:::o;1290:262:1:-;1401:14;1418:63;1474:4;;1454:25;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1444:36;;;;;;1418:25;:63::i;:::-;1401:80;;1520:27;1534:6;1542:4;;1520:13;:27::i;:::-;1364:188;1290:262;;:::o;890:292::-;1030:14;1047:64;1104:4;;1083:26;;;;;;;;;:::i;1047:64::-;1030:81;;1150:27;1164:6;1172:4;;1150:13;:27::i;:::-;993:189;890:292;;;;;:::o;1675:1486:2:-;1801:17;1824:14;1844:17;1867;1890:18;1919:20;1942:10;;1953:1;1942:13;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1942:13:2;;-1:-1:-1;1962:303:2;;2057:34;2083:7;2057:25;:34::i;:::-;2045:46;;2144;2168:9;2179:10;;2144:23;:46::i;:::-;2099:91;;-1:-1:-1;2099:91:2;;-1:-1:-1;2099:91:2;-1:-1:-1;2099:91:2;-1:-1:-1;2198:60:2;;-1:-1:-1;2198:60:2;1962:303;2275:29;;;;;2271:310;;2370:34;2396:7;2370:25;:34::i;:::-;2358:46;;2457:49;2484:9;2495:10;;2457:26;:49::i;2271:310::-;2591:33;;;;;2587:319;;2690:39;2721:7;2690:30;:39::i;2587:319::-;2916:29;;;;;2912:196;;3066:35;3081:7;3090:10;;3066:14;:35::i;:::-;3059:42;;;;;;;;;;;;;2912:196;3121:35;;;;;11707:66:22;11695:79;;3121:35:2;;;11677:98:22;11650:18;;3121:35:2;11533:248:22;1675:1486:2;;;;;;;;;;:::o;938:156:6:-;1002:7;1032:56;453:66;1080:6;1032:28;:56::i;456:276:4:-;550:12;178:10:8;200:4;178:27;174:94;;222:39;;;;;235:10;222:39;;;7319:34:22;255:4:8;7369:18:22;;;7362:43;7231:18;;222:39:8;7084:327:22;174:94:8;631:5:4::1;625:12;620:2;613:5;609:14;596:11;589:49;581:57:::0;-1:-1:-1;649:18:4::1;::::0;::::1;645:50;;689:5;676:19;;;;;;;;;;;:::i;645:50::-;706:21;::::0;6753:42:22;6741:55;;6723:74;;706:21:4::1;::::0;6711:2:22;6696:18;706:21:4::1;;;;;;;456:276:::0;;;:::o;670:87:6:-;718:7;740:12;750:1;740:9;:12::i;:::-;733:19;;670:87;:::o;942:233:4:-;1028:4;1044:48;;;;;1040:80;;-1:-1:-1;1109:4:4;;942:233;-1:-1:-1;942:233:4:o;1040:80::-;1133:37;1157:12;1133:23;:37::i;3480:386:2:-;3611:12;3629:17;3657;3676:14;3692:17;3760:38;3778:7;3787:10;;3760:17;:38::i;:::-;-1:-1:-1;3715:83:2;-1:-1:-1;3715:83:2;;-1:-1:-1;3715:83:2;-1:-1:-1;3715:83:2;-1:-1:-1;3814:19:2;;;;;;:47;;-1:-1:-1;2779:4:1;3837:24:2;3804:57;;3651:215;;;3480:386;;;;;;:::o;2824:93:1:-;2898:14;;;;;;;;;;;;;;1173:224:13;1279:107;;12792:66:22;1279:107:13;;;12780:79:22;1325:13:13;12875:11:22;;;12868:27;12946:66;1356:4:13;12933:2:22;12929:15;12925:88;12911:12;;;12904:110;13030:12;;;13023:28;;;1240:7:13;;13067:12:22;;1279:107:13;;;;;;;;;;;;;1262:130;;;;;;1255:137;;1173:224;;;:::o;1710:834:1:-;1847:4;1832:12;1864:676;1888:4;1884:1;:8;1864:676;;;1907:32;1942:4;;1947:1;1942:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1907:42;-1:-1:-1;1962:24:1;;;;1907:42;1962:24;:::i;:::-;1958:62;;;1995:25;;;;;;;;2778::22;;;2751:18;;1995:25:1;2632:177:22;1958:62:1;2048:20;;;;;2080:9;:20;2076:69;;;2122:1;2125:8;2135:9;2109:36;;;;;;;;13869:25:22;;;;13910:18;;;13903:34;;;;13953:18;;;13946:34;13842:18;;2109:36:1;13667:319:22;2076:69:1;2154:12;2169:148;2192:18;;;;;;;;:::i;:::-;2220:17;;;;2247:13;;:36;;2275:8;2247:36;;;2263:9;2247:36;2293:16;;;;:11;:16;:::i;:::-;2169:13;:148::i;:::-;2154:163;;2330:7;2326:208;;;2365:7;2354:22;2374:1;2354:22;;;;2778:25:22;;2766:2;2751:18;;2632:177;2354:22:1;;;;;;;;2326:208;;;2401:124;2425:25;;;;;;;;:::i;:::-;2462:7;2481:1;2494:21;:19;:21::i;:::-;2401:12;:124::i;:::-;1899:641;;;1894:3;;;;;:::i;:::-;;;;1864:676;;;;1799:745;1710:834;;;:::o;8892:642:13:-;8996:17;;;;9131:41;9145:10;9157:14;:10;9168:1;9157:10;;:14;:::i;:::-;9131:13;:41::i;:::-;622:9:20;656:13;;;1585:25:18;;1626:3;1622:14;683:2:20;676:14;;;715:2;702:16;;;656:13;;9379:1:13;2034:23:18;;;2021:37;2074:3;2070:14;676::20;;;;702:16;;;;1622:14:18;;9109:63:13;;-1:-1:-1;702:16:20;2070:14:18;-1:-1:-1;8892:642:13;-1:-1:-1;;;;8892:642:13:o;648:262:15:-;752:17;;;;854:51;878:10;890:14;:10;901:1;890:10;;:14;:::i;:::-;854:23;:51::i;:::-;847:58;;;;;;;;648:262;;;;;;;:::o;404:213:16:-;502:104;;12792:66:22;502:104:16;;;12780:79:22;463:7:16;12875:11:22;;;12868:27;;;12946:66;576:4:16;12933:2:22;12929:15;12925:88;12911:12;;;12904:110;13030:12;;;13023:28;;;463:7:16;13067:12:22;;502:104:16;12494:591:22;2320:2059:14;2428:17;;;;;3378:14:19;2563:1:14;3290:25:19;;3277:39;3336:3;3332:14;2428:17:14;2768:16;3378:14:19;3332;2768:16:14;:::i;:::-;2750:34;-1:-1:-1;2883:72:14;2908:7;2923:26;2750:34;2934:6;2923:10;;:26;:::i;2883:72::-;2791:164;;-1:-1:-1;2791:164:14;;-1:-1:-1;2791:164:14;-1:-1:-1;2791:164:14;-1:-1:-1;2791:164:14;-1:-1:-1;2966:18:14;;;2962:118;;;3027:26;3045:7;3038:6;3027:10;;:26;:::i;:::-;3055:9;3066:6;3001:72;;;;;;;;;;;;;;:::i;2962:118::-;3095:7;3086:16;;3283:1092;3290:26;;;3283:1092;;;3390:1:19;3378:14;;;3290:25;;3277:39;3336:3;3332:14;;-1:-1:-1;3444:16:14;3378:14:19;3332;3444:16:14;:::i;:::-;3434:26;;3469:22;3687:105;3714:34;3738:9;3714:23;:34::i;:::-;3758:10;;3769:6;3758:26;3776:7;3758:26;;;;;;;:::i;3687:105::-;3500:292;;-1:-1:-1;3500:292:14;;-1:-1:-1;3500:292:14;-1:-1:-1;3500:292:14;;-1:-1:-1;;3833:18:14;;;3829:122;;;3896:26;3914:7;3907:6;3896:10;;:26;:::i;:::-;3924:9;3935:6;3870:72;;;;;;;;;;;;;;:::i;3829:122::-;4216:10;4198:14;:28;4194:115;;4245:55;;;;;;;;16193:25:22;;;16234:18;;;16227:34;;;16166:18;;4245:55:14;16019:248:22;4194:115:14;4330:14;-1:-1:-1;4361:7:14;-1:-1:-1;4361:7:14;3283:1092;;;2540:1839;;;2320:2059;;;;;;;;;:::o;490:187:9:-;568:11;587;622:4;628:7;611:25;;;;;;;;16193::22;;;16249:2;16234:18;;16227:34;16181:2;16166:18;;16019:248;611:25:9;;;;;;;;;;;;;;601:36;;611:25;601:36;;;;661:10;;490:187;-1:-1:-1;;;;490:187:9:o;4140:231:3:-;4226:4;4242:46;;;;;4238:78;;-1:-1:-1;4305:4:3;;4140:231;-1:-1:-1;4140:231:3:o;4238:78::-;4329:37;4353:12;4329:23;:37::i;1525:353:20:-;1640:6;1688:4;1682:11;1732:12;1718;1713:3;1700:45;1859:1;1848;1826:12;1813:3;1799:4;1786:3;1772:4;1758:110;1753:115;1525:353;-1:-1:-1;;;;;;;1525:353:20:o;852:271::-;897:14;948:16;982:4;976:11;971:16;;1014:2;1011:1;1007:10;1048:4;1041:5;1037:16;1031:4;1024:30;1071:4;1068:1;1061:15;1108:4;1105:1;1098:5;1083:30;;;852:271;:::o;3644:286:3:-;3781:14;3777:149;;;3849:7;3843:14;3836:4;3827:7;3823:18;3816:42;3777:149;3894:7;3885:34;3903:6;3911:7;3885:34;;;;;;;:::i;:::-;;;;;;;;3644:286;;;;:::o;3525:4708:13:-;3635:14;3655:12;3696:14;3765:4458;3772:26;;;3765:4458;;;1475:1:19;1463:14;;;1390:25;;1377:39;1432:3;1428:14;3923:20:13;;;3919:402;;2205:2:19;2193:15;;;2046:25;;2033:39;2088:3;2084:14;;;;2118:2;2114:13;2129:42;2110:62;;;1873:23:13;;:49;;4231:4;:59;;4286:4;4231:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;4252:31:13;4224:66;;4302:8;;;;;;3919:402;4335:4;4331:679;;1475:1:19;1463:14;;;1390:25;;;1377:39;1432:3;1428:14;;4560:11:13;;4396:16;4598:72;4631:10;4643:26;4560:11;1463:14:19;4643:10:13;1390:25:19;4643:26:13;:::i;:::-;4598:32;:72::i;:::-;4764:20;;;;;;;;4691:7;;-1:-1:-1;4691:7:13;;4764:20;-1:-1:-1;1893:3:13;1873:23;;;;;1899;;;1873:49;4920:4;:59;;4975:4;4920:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;4941:31:13;4913:66;;4991:8;;;;;;;4331:679;625:1;5024:4;:30;5020:932;;5104:16;;2046:25:19;;;2033:39;2088:3;2084:14;;;;2118:2;2114:13;2129:42;2110:62;2205:2;2193:15;;5146:64:13;-1:-1:-1;5146:64:13;;-1:-1:-1;5146:64:13;-1:-1:-1;5256:12:13;3290:25:19;;;3277:39;3336:3;3332:14;3390:1;3378:14;;5280:46:13;;;;;;;;;;;;;5380:15;5407:4;5398:6;:13;5380:31;;5428:81;5464:10;5476:4;5482:10;;5493:6;5482:26;5500:7;5482:26;;;;;;;:::i;:::-;5428:35;:81::i;:::-;5423:190;;5555:10;5567:4;5573:26;5591:7;5584:6;5573:10;;:26;:::i;:::-;5532:68;;;;;;;;;;;;;;:::i;5423:190::-;5706:20;;;;;;;;;-1:-1:-1;5706:20:13;1893:3;1873:23;;;;;1899;;;1873:49;5862:4;:59;;5917:4;5862:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;5883:31:13;5855:66;;5933:8;;;;;;;;5020:932;667:1;5966:4;:17;5962:243;;4550:2:19;4536:17;;;4487:27;;4474:41;6115:4:13;:59;;6170:4;6115:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;6136:31:13;6108:66;;6186:8;;;;5962:243;711:1;6219:4;:19;6215:472;;3390:1:19;3378:14;;;;3290:25;;;3277:39;3336:3;3332:14;;6409:13:13;;;;6309:12;;6494:53;6508:10;6520:26;6409:13;3378:14:19;6520:10:13;3290:25:19;6520:26:13;:::i;6494:53::-;622:9:20;656:13;;;683:2;676:14;715:2;702:16;;;6560:17:13;;;;;-1:-1:-1;6649:7:13;;-1:-1:-1;6668:8:13;;-1:-1:-1;;;6668:8:13;6215:472;802:1;6701:4;:19;6697:979;;6864:22;1390:25:19;;;1377:39;1432:3;1428:14;1475:1;1463:14;;6898:55:13;-1:-1:-1;6898:55:13;;;-1:-1:-1;6966:25:13;2699::19;;;2686:39;2745:3;2741:14;2797:1;2785:14;;7003:59:13;-1:-1:-1;7003:59:13;;;-1:-1:-1;7075:12:13;3290:25:19;;;3277:39;3336:3;3332:14;3390:1;3378:14;;7099:46:13;;;;;;;;;;;;;7157:15;7184:4;7175:6;:13;7157:31;;7201:22;7225:20;7290:53;7304:10;7316;;7327:6;7316:26;7334:7;7316:26;;;;;;;:::i;7290:53::-;7364:7;;-1:-1:-1;7364:7:13;;7257:86;;-1:-1:-1;7257:86:13;-1:-1:-1;7388:35:13;;;7384:92;;7439:24;;;;7384:92;2976:73;;;20362:66:22;2976:73:13;;;;20350:79:22;;;;20445:12;;;20438:28;;;20482:12;;;20475:28;;;20519:12;;;;20512:28;;;2976:73:13;;;;;;;;;;20556:13:22;;;;2976:73:13;;;2966:84;;;;;7585:4;:59;;7640:4;7585:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;7606:31:13;7578:66;;7657:8;;;;;;;;;;6697:979;758:1;7690:4;:22;7686:485;;4550:2:19;4536:17;;;4487:27;;4474:41;7920:23:13;;;7916:82;;7968:17;7959:26;;7916:82;8010:12;8025:37;8052:9;8025:26;:37::i;:::-;8010:52;-1:-1:-1;8081:4:13;:59;;8136:4;8081:59;;;622:9:20;656:13;;;683:2;676:14;;;715:2;702:16;;8102:31:13;8074:66;;8152:8;;;;;7686:485;8188:26;;;;;;;;2778:25:22;;;2751:18;;8188:26:13;2632:177:22;3765:4458:13;3678:4551;3525:4708;;;;;;:::o;1296:160:14:-;862:44;1372:7;656:13:20;;;683:2;676:14;;;715:2;702:16;;1394:57:14;543:185:20;6015:300:2;6101:4;6124:45;;;6140:29;6124:45;;:103;;-1:-1:-1;6179:48:2;;;6195:32;6179:48;6124:103;6113:147;;;-1:-1:-1;6249:4:2;;6015:300;-1:-1:-1;6015:300:2:o;6113:147::-;725:31:5;709:47;;;;6273:37:2;613:148:5;1767:2316:21;1867:14;1914:2;1893:23;;1889:70;;1948:10;;1925:34;;;;;;;;;;;;:::i;1889:70::-;1965:21;1989:43;2010:21;2030:1;2010:10;:21;:::i;:::-;1226:23:18;;1213:37;1266:3;1262:14;;1071:215;1989:43:21;1965:67;;;-1:-1:-1;2115:2:21;1226:23:18;;1213:37;1266:3;1262:14;795:37;;2202:2:21;808:23:18;;795:37;3209:66:21;3196:79;;3192:135;;;3306:10;;3318:1;3292:28;;;;;;;;;;;;;:::i;3192:135::-;3337:1;:7;;3342:2;3337:7;;:18;;;;;3348:1;:7;;3353:2;3348:7;;3337:18;3333:74;;;3386:10;;3398:1;3372:28;;;;;;;;;;;;;:::i;3333:74::-;1253:1;3447:13;:32;3443:509;;3498:25;;;;;;;;;;;;18522::22;;;18595:4;18583:17;;18563:18;;;18556:45;;;;18617:18;;;18610:34;;;18660:18;;;18653:34;;;3498:25:21;;18494:19:22;;3498:25:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3489:34;;3443:509;;;1303:1;3608:13;:34;3604:348;;3690:59;;18940:66:22;3690:59:21;;;18928:79:22;19023:12;;;19016:28;;;3661:130:21;;19060:12:22;;3690:59:21;;;;;;;;;;;;;3680:70;;3690:59;3680:70;;;;3661:130;;;;;;;;;18522:25:22;18595:4;18583:17;;18563:18;;;18556:45;18617:18;;;18610:34;;;18660:18;;;18653:34;;;18494:19;;3661:130:21;18295:398:22;3604:348:21;3913:10;;3925:13;3940:4;3888:57;;;;;;;;;;;;;;:::i;3604:348::-;3999:22;;;3995:63;;4047:10;;4030:28;;;;;;;;;;;;:::i;3995:63::-;4065:13;;;;1767:2316;;;;;:::o;4411:951::-;4535:10;4557:22;;;4553:66;;4596:16;;;;;;;;;;;;;;4553:66;4625:21;4655:10;;4666:21;4686:1;4655:10;4666:21;:::i;:::-;4655:33;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;1253:1:21;4699:32;;;:70;;;1303:1;4735:13;:34;4699:70;4695:663;;;4873:7;4837:43;;:32;4851:5;4858:10;;4837:13;:32::i;:::-;:43;;;4829:51;;4695:663;;;1359:1;4898:13;:40;4894:464;;5060:40;;;;5101:5;5108:10;5119:1;5108:10;5121:21;5141:1;5108:10;5121:21;:::i;:::-;5108:35;;;;;;;:::i;:::-;5060:84;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5030:114;;:26;:114;;-1:-1:-1;4894:464:21;;;5318:10;;5330:13;5345:5;5293:58;;;;;;;;;;;;;;:::i;4894:464::-;4547:815;4411:951;;;;;;:::o;2227:182:13:-;2346:57;;20822:66:22;2346:57:13;;;20810:79:22;20905:12;;;20898:28;;;2314:7:13;;20942:12:22;;2346:57:13;20580:380:22;14:177;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:347::-;689:8;699:6;753:3;746:4;738:6;734:17;730:27;720:55;;771:1;768;761:12;720:55;-1:-1:-1;794:20:22;;837:18;826:30;;823:50;;;869:1;866;859:12;823:50;906:4;898:6;894:17;882:29;;958:3;951:4;942:6;934;930:19;926:30;923:39;920:59;;;975:1;972;965:12;920:59;638:347;;;;;:::o;990:477::-;1069:6;1077;1085;1138:2;1126:9;1117:7;1113:23;1109:32;1106:52;;;1154:1;1151;1144:12;1106:52;1190:9;1177:23;1167:33;;1251:2;1240:9;1236:18;1223:32;1278:18;1270:6;1267:30;1264:50;;;1310:1;1307;1300:12;1264:50;1349:58;1399:7;1390:6;1379:9;1375:22;1349:58;:::i;:::-;990:477;;1426:8;;-1:-1:-1;1323:84:22;;-1:-1:-1;;;;990:477:22:o;1725:717::-;1815:6;1823;1831;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1948:9;1935:23;1977:18;2018:2;2010:6;2007:14;2004:34;;;2034:1;2031;2024:12;2004:34;2073:58;2123:7;2114:6;2103:9;2099:22;2073:58;:::i;:::-;2150:8;;-1:-1:-1;2047:84:22;-1:-1:-1;2238:2:22;2223:18;;2210:32;;-1:-1:-1;2254:16:22;;;2251:36;;;2283:1;2280;2273:12;2251:36;;2322:60;2374:7;2363:8;2352:9;2348:24;2322:60;:::i;:::-;1725:717;;;;-1:-1:-1;2401:8:22;-1:-1:-1;;;;1725:717:22:o;2447:180::-;2506:6;2559:2;2547:9;2538:7;2534:23;2530:32;2527:52;;;2575:1;2572;2565:12;2527:52;-1:-1:-1;2598:23:22;;2447:180;-1:-1:-1;2447:180:22:o;2814:387::-;2897:8;2907:6;2961:3;2954:4;2946:6;2942:17;2938:27;2928:55;;2979:1;2976;2969:12;2928:55;-1:-1:-1;3002:20:22;;3045:18;3034:30;;3031:50;;;3077:1;3074;3067:12;3031:50;3114:4;3106:6;3102:17;3090:29;;3174:3;3167:4;3157:6;3154:1;3150:14;3142:6;3138:27;3134:38;3131:47;3128:67;;;3191:1;3188;3181:12;3206:488;3323:6;3331;3384:2;3372:9;3363:7;3359:23;3355:32;3352:52;;;3400:1;3397;3390:12;3352:52;3440:9;3427:23;3473:18;3465:6;3462:30;3459:50;;;3505:1;3502;3495:12;3459:50;3544:90;3626:7;3617:6;3606:9;3602:22;3544:90;:::i;:::-;3653:8;;3518:116;;-1:-1:-1;3206:488:22;-1:-1:-1;;;;3206:488:22:o;3699:864::-;3845:6;3853;3861;3869;3877;3930:2;3918:9;3909:7;3905:23;3901:32;3898:52;;;3946:1;3943;3936:12;3898:52;3986:9;3973:23;4015:18;4056:2;4048:6;4045:14;4042:34;;;4072:1;4069;4062:12;4042:34;4111:90;4193:7;4184:6;4173:9;4169:22;4111:90;:::i;:::-;4220:8;;-1:-1:-1;4085:116:22;-1:-1:-1;4302:2:22;4287:18;;4274:32;;-1:-1:-1;4359:2:22;4344:18;;4331:32;;-1:-1:-1;4375:16:22;;;4372:36;;;4404:1;4401;4394:12;4372:36;;4443:60;4495:7;4484:8;4473:9;4469:24;4443:60;:::i;:::-;3699:864;;;;-1:-1:-1;3699:864:22;;-1:-1:-1;4522:8:22;;4417:86;3699:864;-1:-1:-1;;;3699:864:22:o;5403:184::-;5455:77;5452:1;5445:88;5552:4;5549:1;5542:15;5576:4;5573:1;5566:15;5592:980;5660:6;5713:2;5701:9;5692:7;5688:23;5684:32;5681:52;;;5729:1;5726;5719:12;5681:52;5769:9;5756:23;5798:18;5839:2;5831:6;5828:14;5825:34;;;5855:1;5852;5845:12;5825:34;5893:6;5882:9;5878:22;5868:32;;5938:7;5931:4;5927:2;5923:13;5919:27;5909:55;;5960:1;5957;5950:12;5909:55;5996:2;5983:16;6018:2;6014;6011:10;6008:36;;;6024:18;;:::i;:::-;6158:2;6152:9;6220:4;6212:13;;6063:66;6208:22;;;6232:2;6204:31;6200:40;6188:53;;;6256:18;;;6276:22;;;6253:46;6250:72;;;6302:18;;:::i;:::-;6342:10;6338:2;6331:22;6377:2;6369:6;6362:18;6417:7;6412:2;6407;6403;6399:11;6395:20;6392:33;6389:53;;;6438:1;6435;6428:12;6389:53;6494:2;6489;6485;6481:11;6476:2;6468:6;6464:15;6451:46;6539:1;6517:15;;;6534:2;6513:24;6506:35;;;;-1:-1:-1;6521:6:22;5592:980;-1:-1:-1;;;;;5592:980:22:o;6808:271::-;6991:6;6983;6978:3;6965:33;6947:3;7017:16;;7042:13;;;7017:16;6808:271;-1:-1:-1;6808:271:22:o;7416:160::-;7481:20;;7537:13;;7530:21;7520:32;;7510:60;;7566:1;7563;7556:12;7510:60;7416:160;;;:::o;7581:196::-;7649:20;;7709:42;7698:54;;7688:65;;7678:93;;7767:1;7764;7757:12;7782:325;7870:6;7865:3;7858:19;7922:6;7915:5;7908:4;7903:3;7899:14;7886:43;;7974:1;7967:4;7958:6;7953:3;7949:16;7945:27;7938:38;7840:3;8096:4;8026:66;8021:2;8013:6;8009:15;8005:88;8000:3;7996:98;7992:109;7985:116;;7782:325;;;;:::o;8112:2028::-;8232:6;8227:3;8220:19;8202:3;8258:4;8299:2;8294:3;8290:12;8324:11;8351;8344:18;;8401:6;8398:1;8394:14;8387:5;8383:26;8371:38;;8432:5;8455:1;8465:1649;8479:6;8476:1;8473:13;8465:1649;;;8550:5;8544:4;8540:16;8535:3;8528:29;8609:6;8596:20;8695:66;8687:5;8671:14;8667:26;8663:99;8643:18;8639:124;8629:152;;8777:1;8774;8767:12;8629:152;8809:30;;8862:4;8906:24;8809:30;8906:24;:::i;:::-;8899:32;8892:40;8886:4;8879:54;8982:33;9011:2;9002:7;8998:16;8982:33;:::i;:::-;8975:41;8968:49;8953:13;;;8946:72;9041:4;9093:16;;;9080:30;9065:13;;;9058:53;9134:4;9215:42;9177:36;9196:16;;;9177:36;:::i;:::-;9173:85;9158:13;;;9151:108;9282:4;9334:16;;;9321:30;9306:13;;;9299:53;9375:4;9433:16;;;9420:30;9507:14;9503:28;;;9533:66;9499:101;9473:128;;9463:156;;9615:1;9612;9605:12;9463:156;9647:34;;;9759:16;;;;-1:-1:-1;9710:21:22;9804:18;9791:32;;9788:52;;;9836:1;9833;9826:12;9788:52;9889:8;9873:14;9869:29;9860:7;9856:43;9853:63;;;9912:1;9909;9902:12;9853:63;9951:2;9946;9940:4;9936:13;9929:25;9975:59;10030:2;10024:4;10020:13;10010:8;10001:7;9975:59;:::i;:::-;10092:12;;;;9967:67;-1:-1:-1;;;10057:15:22;;;;-1:-1:-1;;8501:1:22;8494:9;8465:1649;;;-1:-1:-1;10130:4:22;;8112:2028;-1:-1:-1;;;;;;;8112:2028:22:o;10145:594::-;10495:2;10484:9;10477:21;10534:1;10529:2;10518:9;10514:18;10507:29;10572:7;10567:2;10556:9;10552:18;10545:35;10618:3;10611:4;10600:9;10596:20;10589:33;10458:4;10639:94;10728:3;10717:9;10713:19;10705:6;10697;10639:94;:::i;10744:595::-;11094:2;11083:9;11076:21;11133:1;11128:2;11117:9;11113:18;11106:29;11171:8;11166:2;11155:9;11151:18;11144:36;11218:3;11211:4;11200:9;11196:20;11189:33;11057:4;11239:94;11328:3;11317:9;11313:19;11305:6;11297;11239:94;:::i;11344:184::-;11396:77;11393:1;11386:88;11493:4;11490:1;11483:15;11517:4;11514:1;11507:15;11786:481;11827:3;11865:5;11859:12;11892:6;11887:3;11880:19;11917:1;11927:162;11941:6;11938:1;11935:13;11927:162;;;12003:4;12059:13;;;12055:22;;12049:29;12031:11;;;12027:20;;12020:59;11956:12;11927:162;;;11931:3;12134:1;12127:4;12118:6;12113:3;12109:16;12105:27;12098:38;12256:4;12186:66;12181:2;12173:6;12169:15;12165:88;12160:3;12156:98;12152:109;12145:116;;;11786:481;;;;:::o;12272:217::-;12419:2;12408:9;12401:21;12382:4;12439:44;12479:2;12468:9;12464:18;12456:6;12439:44;:::i;13090:387::-;13187:4;13245:11;13232:25;13335:66;13324:8;13308:14;13304:29;13300:102;13280:18;13276:127;13266:155;;13417:1;13414;13407:12;13266:155;13438:33;;;;;13090:387;-1:-1:-1;;13090:387:22:o;13482:180::-;13538:6;13591:2;13579:9;13570:7;13566:23;13562:32;13559:52;;;13607:1;13604;13597:12;13559:52;13630:26;13646:9;13630:26;:::i;13991:186::-;14050:6;14103:2;14091:9;14082:7;14078:23;14074:32;14071:52;;;14119:1;14116;14109:12;14071:52;14142:29;14161:9;14142:29;:::i;14182:580::-;14259:4;14265:6;14325:11;14312:25;14415:66;14404:8;14388:14;14384:29;14380:102;14360:18;14356:127;14346:155;;14497:1;14494;14487:12;14346:155;14524:33;;14576:20;;;-1:-1:-1;14619:18:22;14608:30;;14605:50;;;14651:1;14648;14641:12;14605:50;14684:4;14672:17;;-1:-1:-1;14715:14:22;14711:27;;;14701:38;;14698:58;;;14752:1;14749;14742:12;14767:184;14819:77;14816:1;14809:88;14916:4;14913:1;14906:15;14940:4;14937:1;14930:15;14956:195;14995:3;15026:66;15019:5;15016:77;15013:103;;15096:18;;:::i;:::-;-1:-1:-1;15143:1:22;15132:13;;14956:195::o;15156:331::-;15261:9;15272;15314:8;15302:10;15299:24;15296:44;;;15336:1;15333;15326:12;15296:44;15365:6;15355:8;15352:20;15349:40;;;15385:1;15382;15375:12;15349:40;-1:-1:-1;;15411:23:22;;;15456:25;;;;;-1:-1:-1;15156:331:22:o;15492:125::-;15557:9;;;15578:10;;;15575:36;;;15591:18;;:::i;15622:392::-;15841:2;15830:9;15823:21;15804:4;15861:61;15918:2;15907:9;15903:18;15895:6;15887;15861:61;:::i;:::-;15953:2;15938:18;;15931:34;;;;-1:-1:-1;15996:2:22;15981:18;15974:34;15853:69;15622:392;-1:-1:-1;;15622:392:22:o;16525:288::-;16700:6;16689:9;16682:25;16743:2;16738;16727:9;16723:18;16716:30;16663:4;16763:44;16803:2;16792:9;16788:18;16780:6;16763:44;:::i;16818:441::-;17037:6;17026:9;17019:25;17092:42;17084:6;17080:55;17075:2;17064:9;17060:18;17053:83;17172:2;17167;17156:9;17152:18;17145:30;17000:4;17192:61;17249:2;17238:9;17234:18;17226:6;17218;17192:61;:::i;:::-;17184:69;16818:441;-1:-1:-1;;;;;;16818:441:22:o;17264:244::-;17421:2;17410:9;17403:21;17384:4;17441:61;17498:2;17487:9;17483:18;17475:6;17467;17441:61;:::i;17513:128::-;17580:9;;;17601:11;;;17598:37;;;17615:18;;:::i;17646:315::-;17831:2;17820:9;17813:21;17794:4;17851:61;17908:2;17897:9;17893:18;17885:6;17877;17851:61;:::i;:::-;17843:69;;17948:6;17943:2;17932:9;17928:18;17921:34;17646:315;;;;;;:::o;17966:324::-;18149:2;18138:9;18131:21;18112:4;18169:61;18226:2;18215:9;18211:18;18203:6;18195;18169:61;:::i;:::-;18161:69;;18278:4;18270:6;18266:17;18261:2;18250:9;18246:18;18239:45;17966:324;;;;;;:::o;19083:396::-;19290:2;19279:9;19272:21;19253:4;19310:61;19367:2;19356:9;19352:18;19344:6;19336;19310:61;:::i;:::-;19402:2;19387:18;;19380:34;;;;-1:-1:-1;19457:14:22;;19450:22;19445:2;19430:18;;;19423:50;19302:69;19083:396;-1:-1:-1;;19083:396:22:o;19484:321::-;19675:6;19664:9;19657:25;19718:2;19713;19702:9;19698:18;19691:30;19638:4;19738:61;19795:2;19784:9;19780:18;19772:6;19764;19738:61;:::i;:::-;19730:69;19484:321;-1:-1:-1;;;;;19484:321:22:o;19810:249::-;19879:6;19932:2;19920:9;19911:7;19907:23;19903:32;19900:52;;;19948:1;19945;19938:12;19900:52;19980:9;19974:16;19999:30;20023:5;19999:30;:::i" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "1734000", - "executionCost": "infinite", - "totalCost": "infinite" - }, - "external": { - "SET_IMAGE_HASH_TYPE_HASH()": "262", - "createContract(bytes)": "infinite", - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": "infinite", - "isValidSignature(bytes,bytes)": "infinite", - "isValidSignature(bytes32,bytes)": "infinite", - "nonce()": "2645", - "readNonce(uint256)": "2640", - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": "infinite", - "signatureRecovery(bytes32,bytes)": "infinite", - "supportsInterface(bytes4)": "infinite", - "updateImageHash(bytes32)": "357" - }, - "internal": { - "_executeGuest(bytes32,struct IModuleCalls.Transaction calldata[] calldata)": "infinite", - "_isValidImage(bytes32)": "infinite", - "_updateImageHash(bytes32)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "A0" - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 640, - "end": 3333, - "name": "MSTORE", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "CALLVALUE", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "1" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "REVERT", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "tag", - "source": 1, - "value": "1" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 200, - "end": 204, - "name": "ADDRESS", - "source": 7 - }, - { - "begin": 185, - "end": 205, - "name": "PUSH", - "source": 7, - "value": "80" - }, - { - "begin": 185, - "end": 205, - "name": "MSTORE", - "source": 7 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "80" - }, - { - "begin": 640, - "end": 3333, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH #[$]", - "source": 1, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [$]", - "source": 1, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "CODECOPY", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "ASSIGNIMMUTABLE", - "source": 1, - "value": "1055" - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH #[$]", - "source": 1, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "RETURN", - "source": 1 - } - ], - ".data": { - "0": { - ".auxdata": "a26469706673582212209bb95d18e97f278aa47e0c04c20d5a6af9bdb6d473c6d4051192cd96fc17866864736f6c63430008120033", - ".code": [ - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "80" - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 640, - "end": 3333, - "name": "MSTORE", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "4" - }, - { - "begin": 640, - "end": 3333, - "name": "CALLDATASIZE", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "LT", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "1" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "CALLDATALOAD", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "E0" - }, - { - "begin": 640, - "end": 3333, - "name": "SHR", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "61C2926C" - }, - { - "begin": 640, - "end": 3333, - "name": "GT", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "13" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "8C3F5563" - }, - { - "begin": 640, - "end": 3333, - "name": "GT", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "14" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "8C3F5563" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "10" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "90042BAF" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "11" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "AFFED0E0" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "12" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "REVERT", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "tag", - "source": 1, - "value": "14" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "61C2926C" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "7" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "7A9A1628" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "8" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "853C5068" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "9" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "REVERT", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "tag", - "source": 1, - "value": "13" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "20C13B0B" - }, - { - "begin": 640, - "end": 3333, - "name": "GT", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "15" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "20C13B0B" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "4" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "29561426" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "5" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "57C56D6B" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "6" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "REVERT", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "tag", - "source": 1, - "value": "15" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "1FFC9A7" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "2" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "1626BA7E" - }, - { - "begin": 640, - "end": 3333, - "name": "EQ", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH [tag]", - "source": 1, - "value": "3" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "tag", - "source": 1, - "value": "1" - }, - { - "begin": 640, - "end": 3333, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 640, - "end": 3333, - "name": "DUP1", - "source": 1 - }, - { - "begin": 640, - "end": 3333, - "name": "REVERT", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "tag", - "source": 1, - "value": "2" - }, - { - "begin": 3127, - "end": 3331, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "CALLVALUE", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "DUP1", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH [tag]", - "source": 1, - "value": "16" - }, - { - "begin": 3127, - "end": 3331, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 3127, - "end": 3331, - "name": "DUP1", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "REVERT", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "tag", - "source": 1, - "value": "16" - }, - { - "begin": 3127, - "end": 3331, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH [tag]", - "source": 1, - "value": "17" - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH [tag]", - "source": 1, - "value": "18" - }, - { - "begin": 3127, - "end": 3331, - "name": "CALLDATASIZE", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH", - "source": 1, - "value": "4" - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH [tag]", - "source": 1, - "value": "19" - }, - { - "begin": 3127, - "end": 3331, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "tag", - "source": 1, - "value": "18" - }, - { - "begin": 3127, - "end": 3331, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH [tag]", - "source": 1, - "value": "20" - }, - { - "begin": 3127, - "end": 3331, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "tag", - "source": 1, - "value": "17" - }, - { - "begin": 3127, - "end": 3331, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 3127, - "end": 3331, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 611, - "end": 625, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 611, - "end": 625, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 604, - "end": 626, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 586, - "end": 627, - "name": "DUP2", - "source": 22 - }, - { - "begin": 586, - "end": 627, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 574, - "end": 576, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 559, - "end": 577, - "name": "ADD", - "source": 22 - }, - { - "begin": 3127, - "end": 3331, - "name": "tag", - "source": 1, - "value": "21" - }, - { - "begin": 3127, - "end": 3331, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 3127, - "end": 3331, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "DUP1", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "SWAP2", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "SUB", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "RETURN", - "source": 1 - }, - { - "begin": 5489, - "end": 5805, - "name": "tag", - "source": 2, - "value": "3" - }, - { - "begin": 5489, - "end": 5805, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "CALLVALUE", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "DUP1", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "ISZERO", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH [tag]", - "source": 2, - "value": "23" - }, - { - "begin": 5489, - "end": 5805, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 5489, - "end": 5805, - "name": "DUP1", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "REVERT", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "tag", - "source": 2, - "value": "23" - }, - { - "begin": 5489, - "end": 5805, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH [tag]", - "source": 2, - "value": "24" - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH [tag]", - "source": 2, - "value": "25" - }, - { - "begin": 5489, - "end": 5805, - "name": "CALLDATASIZE", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH", - "source": 2, - "value": "4" - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH [tag]", - "source": 2, - "value": "26" - }, - { - "begin": 5489, - "end": 5805, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "tag", - "source": 2, - "value": "25" - }, - { - "begin": 5489, - "end": 5805, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH [tag]", - "source": 2, - "value": "27" - }, - { - "begin": 5489, - "end": 5805, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "tag", - "source": 2, - "value": "24" - }, - { - "begin": 5489, - "end": 5805, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH", - "source": 2, - "value": "40" - }, - { - "begin": 5489, - "end": 5805, - "name": "MLOAD", - "source": 2 - }, - { - "begin": 1646, - "end": 1712, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1634, - "end": 1713, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 1634, - "end": 1713, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 1634, - "end": 1713, - "name": "AND", - "source": 22 - }, - { - "begin": 1616, - "end": 1714, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1616, - "end": 1714, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 1604, - "end": 1606, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 1589, - "end": 1607, - "name": "ADD", - "source": 22 - }, - { - "begin": 5489, - "end": 5805, - "name": "PUSH [tag]", - "source": 2, - "value": "21" - }, - { - "begin": 1472, - "end": 1720, - "name": "JUMP", - "source": 22 - }, - { - "begin": 4525, - "end": 4857, - "name": "tag", - "source": 2, - "value": "4" - }, - { - "begin": 4525, - "end": 4857, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "CALLVALUE", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "DUP1", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "ISZERO", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "PUSH [tag]", - "source": 2, - "value": "30" - }, - { - "begin": 4525, - "end": 4857, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 4525, - "end": 4857, - "name": "DUP1", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "REVERT", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "tag", - "source": 2, - "value": "30" - }, - { - "begin": 4525, - "end": 4857, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4525, - "end": 4857, - "name": "PUSH [tag]", - "source": 2, - "value": "24" - }, - { - "begin": 4525, - "end": 4857, - "name": "PUSH [tag]", - "source": 2, - "value": "32" - }, - { - "begin": 4525, - "end": 4857, - "name": "CALLDATASIZE", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "PUSH", - "source": 2, - "value": "4" - }, - { - "begin": 4525, - "end": 4857, - "name": "PUSH [tag]", - "source": 2, - "value": "33" - }, - { - "begin": 4525, - "end": 4857, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "tag", - "source": 2, - "value": "32" - }, - { - "begin": 4525, - "end": 4857, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "PUSH [tag]", - "source": 2, - "value": "34" - }, - { - "begin": 4525, - "end": 4857, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "tag", - "source": 2, - "value": "5" - }, - { - "begin": 6456, - "end": 6575, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "CALLVALUE", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "DUP1", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "ISZERO", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "PUSH [tag]", - "source": 2, - "value": "36" - }, - { - "begin": 6456, - "end": 6575, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 6456, - "end": 6575, - "name": "DUP1", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "REVERT", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "tag", - "source": 2, - "value": "36" - }, - { - "begin": 6456, - "end": 6575, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6456, - "end": 6575, - "name": "PUSH [tag]", - "source": 2, - "value": "37" - }, - { - "begin": 6456, - "end": 6575, - "name": "PUSH [tag]", - "source": 2, - "value": "38" - }, - { - "begin": 6456, - "end": 6575, - "name": "CALLDATASIZE", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "PUSH", - "source": 2, - "value": "4" - }, - { - "begin": 6456, - "end": 6575, - "name": "PUSH [tag]", - "source": 2, - "value": "39" - }, - { - "begin": 6456, - "end": 6575, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "tag", - "source": 2, - "value": "38" - }, - { - "begin": 6456, - "end": 6575, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "PUSH [tag]", - "source": 2, - "value": "40" - }, - { - "begin": 6456, - "end": 6575, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "tag", - "source": 2, - "value": "37" - }, - { - "begin": 6456, - "end": 6575, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "STOP", - "source": 2 - }, - { - "begin": 811, - "end": 906, - "name": "tag", - "source": 14, - "value": "6" - }, - { - "begin": 811, - "end": 906, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "CALLVALUE", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "DUP1", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "ISZERO", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "PUSH [tag]", - "source": 14, - "value": "41" - }, - { - "begin": 811, - "end": 906, - "name": "JUMPI", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "PUSH", - "source": 14, - "value": "0" - }, - { - "begin": 811, - "end": 906, - "name": "DUP1", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "REVERT", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "tag", - "source": 14, - "value": "41" - }, - { - "begin": 811, - "end": 906, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "POP", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "PUSH [tag]", - "source": 14, - "value": "42" - }, - { - "begin": 862, - "end": 906, - "name": "PUSH", - "source": 14, - "value": "8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1" - }, - { - "begin": 811, - "end": 906, - "name": "DUP2", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "JUMP", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "tag", - "source": 14, - "value": "42" - }, - { - "begin": 811, - "end": 906, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 811, - "end": 906, - "name": "PUSH", - "source": 14, - "value": "40" - }, - { - "begin": 811, - "end": 906, - "name": "MLOAD", - "source": 14 - }, - { - "begin": 2778, - "end": 2803, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 2778, - "end": 2803, - "name": "DUP2", - "source": 22 - }, - { - "begin": 2778, - "end": 2803, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2766, - "end": 2768, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 2751, - "end": 2769, - "name": "ADD", - "source": 22 - }, - { - "begin": 811, - "end": 906, - "name": "PUSH [tag]", - "source": 14, - "value": "21" - }, - { - "begin": 2632, - "end": 2809, - "name": "JUMP", - "source": 22 - }, - { - "begin": 1290, - "end": 1552, - "name": "tag", - "source": 1, - "value": "7" - }, - { - "begin": 1290, - "end": 1552, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "CALLVALUE", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "DUP1", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "PUSH [tag]", - "source": 1, - "value": "46" - }, - { - "begin": 1290, - "end": 1552, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 1290, - "end": 1552, - "name": "DUP1", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "REVERT", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "tag", - "source": 1, - "value": "46" - }, - { - "begin": 1290, - "end": 1552, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1290, - "end": 1552, - "name": "PUSH [tag]", - "source": 1, - "value": "37" - }, - { - "begin": 1290, - "end": 1552, - "name": "PUSH [tag]", - "source": 1, - "value": "48" - }, - { - "begin": 1290, - "end": 1552, - "name": "CALLDATASIZE", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "PUSH", - "source": 1, - "value": "4" - }, - { - "begin": 1290, - "end": 1552, - "name": "PUSH [tag]", - "source": 1, - "value": "49" - }, - { - "begin": 1290, - "end": 1552, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "tag", - "source": 1, - "value": "48" - }, - { - "begin": 1290, - "end": 1552, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "PUSH [tag]", - "source": 1, - "value": "50" - }, - { - "begin": 1290, - "end": 1552, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "tag", - "source": 1, - "value": "8" - }, - { - "begin": 890, - "end": 1182, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "CALLVALUE", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "DUP1", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "PUSH [tag]", - "source": 1, - "value": "51" - }, - { - "begin": 890, - "end": 1182, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 890, - "end": 1182, - "name": "DUP1", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "REVERT", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "tag", - "source": 1, - "value": "51" - }, - { - "begin": 890, - "end": 1182, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 890, - "end": 1182, - "name": "PUSH [tag]", - "source": 1, - "value": "37" - }, - { - "begin": 890, - "end": 1182, - "name": "PUSH [tag]", - "source": 1, - "value": "53" - }, - { - "begin": 890, - "end": 1182, - "name": "CALLDATASIZE", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "PUSH", - "source": 1, - "value": "4" - }, - { - "begin": 890, - "end": 1182, - "name": "PUSH [tag]", - "source": 1, - "value": "54" - }, - { - "begin": 890, - "end": 1182, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "tag", - "source": 1, - "value": "53" - }, - { - "begin": 890, - "end": 1182, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "PUSH [tag]", - "source": 1, - "value": "55" - }, - { - "begin": 890, - "end": 1182, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1675, - "end": 3161, - "name": "tag", - "source": 2, - "value": "9" - }, - { - "begin": 1675, - "end": 3161, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "CALLVALUE", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "DUP1", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "ISZERO", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH [tag]", - "source": 2, - "value": "56" - }, - { - "begin": 1675, - "end": 3161, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 1675, - "end": 3161, - "name": "DUP1", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "REVERT", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "tag", - "source": 2, - "value": "56" - }, - { - "begin": 1675, - "end": 3161, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH [tag]", - "source": 2, - "value": "57" - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH [tag]", - "source": 2, - "value": "58" - }, - { - "begin": 1675, - "end": 3161, - "name": "CALLDATASIZE", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH", - "source": 2, - "value": "4" - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH [tag]", - "source": 2, - "value": "26" - }, - { - "begin": 1675, - "end": 3161, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "tag", - "source": 2, - "value": "58" - }, - { - "begin": 1675, - "end": 3161, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH [tag]", - "source": 2, - "value": "59" - }, - { - "begin": 1675, - "end": 3161, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "tag", - "source": 2, - "value": "57" - }, - { - "begin": 1675, - "end": 3161, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH", - "source": 2, - "value": "40" - }, - { - "begin": 1675, - "end": 3161, - "name": "DUP1", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "MLOAD", - "source": 2 - }, - { - "begin": 4827, - "end": 4852, - "name": "SWAP6", - "source": 22 - }, - { - "begin": 4827, - "end": 4852, - "name": "DUP7", - "source": 22 - }, - { - "begin": 4827, - "end": 4852, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 4883, - "end": 4885, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 4868, - "end": 4886, - "name": "DUP7", - "source": 22 - }, - { - "begin": 4868, - "end": 4886, - "name": "ADD", - "source": 22 - }, - { - "begin": 4861, - "end": 4895, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 4861, - "end": 4895, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 4861, - "end": 4895, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 4861, - "end": 4895, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 4911, - "end": 4929, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 4911, - "end": 4929, - "name": "DUP5", - "source": 22 - }, - { - "begin": 4911, - "end": 4929, - "name": "ADD", - "source": 22 - }, - { - "begin": 4904, - "end": 4938, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 4904, - "end": 4938, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 4904, - "end": 4938, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 4904, - "end": 4938, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 4969, - "end": 4971, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 4954, - "end": 4972, - "name": "DUP4", - "source": 22 - }, - { - "begin": 4954, - "end": 4972, - "name": "ADD", - "source": 22 - }, - { - "begin": 4947, - "end": 4981, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 5012, - "end": 5015, - "name": "PUSH", - "source": 22, - "value": "80" - }, - { - "begin": 4997, - "end": 5016, - "name": "DUP3", - "source": 22 - }, - { - "begin": 4997, - "end": 5016, - "name": "ADD", - "source": 22 - }, - { - "begin": 4990, - "end": 5025, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 4814, - "end": 4817, - "name": "PUSH", - "source": 22, - "value": "A0" - }, - { - "begin": 4799, - "end": 4818, - "name": "ADD", - "source": 22 - }, - { - "begin": 1675, - "end": 3161, - "name": "PUSH [tag]", - "source": 2, - "value": "21" - }, - { - "begin": 4568, - "end": 5031, - "name": "JUMP", - "source": 22 - }, - { - "begin": 938, - "end": 1094, - "name": "tag", - "source": 6, - "value": "10" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "CALLVALUE", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "DUP1", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "ISZERO", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "62" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPI", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 938, - "end": 1094, - "name": "DUP1", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "REVERT", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "tag", - "source": 6, - "value": "62" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "42" - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "64" - }, - { - "begin": 938, - "end": 1094, - "name": "CALLDATASIZE", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH", - "source": 6, - "value": "4" - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "39" - }, - { - "begin": 938, - "end": 1094, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "tag", - "source": 6, - "value": "64" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "66" - }, - { - "begin": 938, - "end": 1094, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 456, - "end": 732, - "name": "tag", - "source": 4, - "value": "11" - }, - { - "begin": 456, - "end": 732, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "69" - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "70" - }, - { - "begin": 456, - "end": 732, - "name": "CALLDATASIZE", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH", - "source": 4, - "value": "4" - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "71" - }, - { - "begin": 456, - "end": 732, - "jumpType": "[in]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "tag", - "source": 4, - "value": "70" - }, - { - "begin": 456, - "end": 732, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "72" - }, - { - "begin": 456, - "end": 732, - "jumpType": "[in]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "tag", - "source": 4, - "value": "69" - }, - { - "begin": 456, - "end": 732, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 456, - "end": 732, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 6753, - "end": 6795, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 6741, - "end": 6796, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 6741, - "end": 6796, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 6741, - "end": 6796, - "name": "AND", - "source": 22 - }, - { - "begin": 6723, - "end": 6797, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6723, - "end": 6797, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 6711, - "end": 6713, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 6696, - "end": 6714, - "name": "ADD", - "source": 22 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "21" - }, - { - "begin": 6577, - "end": 6803, - "name": "JUMP", - "source": 22 - }, - { - "begin": 670, - "end": 757, - "name": "tag", - "source": 6, - "value": "12" - }, - { - "begin": 670, - "end": 757, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "CALLVALUE", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "DUP1", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "ISZERO", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "PUSH [tag]", - "source": 6, - "value": "75" - }, - { - "begin": 670, - "end": 757, - "name": "JUMPI", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 670, - "end": 757, - "name": "DUP1", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "REVERT", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "tag", - "source": 6, - "value": "75" - }, - { - "begin": 670, - "end": 757, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "POP", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "PUSH [tag]", - "source": 6, - "value": "42" - }, - { - "begin": 670, - "end": 757, - "name": "PUSH [tag]", - "source": 6, - "value": "77" - }, - { - "begin": 670, - "end": 757, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 3127, - "end": 3331, - "name": "tag", - "source": 1, - "value": "20" - }, - { - "begin": 3127, - "end": 3331, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 3270, - "end": 3274, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 3289, - "end": 3326, - "name": "PUSH [tag]", - "source": 1, - "value": "80" - }, - { - "begin": 3313, - "end": 3325, - "name": "DUP3", - "source": 1 - }, - { - "begin": 3289, - "end": 3312, - "name": "PUSH [tag]", - "source": 1, - "value": "81" - }, - { - "begin": 3289, - "end": 3326, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 3289, - "end": 3326, - "name": "tag", - "source": 1, - "value": "80" - }, - { - "begin": 3289, - "end": 3326, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 3282, - "end": 3326, - "name": "SWAP3", - "source": 1 - }, - { - "begin": 3127, - "end": 3331, - "name": "SWAP2", - "source": 1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3127, - "end": 3331, - "jumpType": "[out]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 5489, - "end": 5805, - "name": "tag", - "source": 2, - "value": "27" - }, - { - "begin": 5489, - "end": 5805, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 5608, - "end": 5614, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 5650, - "end": 5662, - "name": "DUP1", - "source": 2 - }, - { - "begin": 5667, - "end": 5707, - "name": "PUSH [tag]", - "source": 2, - "value": "83" - }, - { - "begin": 5688, - "end": 5693, - "name": "DUP6", - "source": 2 - }, - { - "begin": 5695, - "end": 5706, - "name": "DUP6", - "source": 2 - }, - { - "begin": 5695, - "end": 5706, - "name": "DUP6", - "source": 2 - }, - { - "begin": 5667, - "end": 5687, - "name": "PUSH [tag]", - "source": 2, - "value": "84" - }, - { - "begin": 5667, - "end": 5707, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 5667, - "end": 5707, - "name": "tag", - "source": 2, - "value": "83" - }, - { - "begin": 5667, - "end": 5707, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 5649, - "end": 5707, - "name": "POP", - "source": 2 - }, - { - "begin": 5649, - "end": 5707, - "name": "SWAP1", - "source": 2 - }, - { - "begin": 5649, - "end": 5707, - "name": "POP", - "source": 2 - }, - { - "begin": 5717, - "end": 5724, - "name": "DUP1", - "source": 2 - }, - { - "begin": 5713, - "end": 5778, - "name": "ISZERO", - "source": 2 - }, - { - "begin": 5713, - "end": 5778, - "name": "PUSH [tag]", - "source": 2, - "value": "85" - }, - { - "begin": 5713, - "end": 5778, - "name": "JUMPI", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5741, - "end": 5771, - "name": "PUSH", - "source": 2, - "value": "1626BA7E00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 5741, - "end": 5771, - "name": "SWAP1", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5734, - "end": 5771, - "name": "PUSH [tag]", - "source": 2, - "value": "82" - }, - { - "begin": 5734, - "end": 5771, - "name": "JUMP", - "source": 2 - }, - { - "begin": 5713, - "end": 5778, - "name": "tag", - "source": 2, - "value": "85" - }, - { - "begin": 5713, - "end": 5778, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5798, - "end": 5799, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 5798, - "end": 5799, - "name": "SWAP1", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5489, - "end": 5805, - "name": "tag", - "source": 2, - "value": "82" - }, - { - "begin": 5489, - "end": 5805, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "SWAP4", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "SWAP3", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "POP", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "POP", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "name": "POP", - "source": 2 - }, - { - "begin": 5489, - "end": 5805, - "jumpType": "[out]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "tag", - "source": 2, - "value": "34" - }, - { - "begin": 4525, - "end": 4857, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 4651, - "end": 4657, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 4693, - "end": 4705, - "name": "DUP1", - "source": 2 - }, - { - "begin": 4710, - "end": 4761, - "name": "PUSH [tag]", - "source": 2, - "value": "87" - }, - { - "begin": 4741, - "end": 4746, - "name": "DUP7", - "source": 2 - }, - { - "begin": 4741, - "end": 4746, - "name": "DUP7", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "PUSH", - "source": 2, - "value": "40" - }, - { - "begin": 4731, - "end": 4747, - "name": "MLOAD", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "PUSH [tag]", - "source": 2, - "value": "88" - }, - { - "begin": 4731, - "end": 4747, - "name": "SWAP3", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "SWAP2", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "SWAP1", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "PUSH [tag]", - "source": 2, - "value": "89" - }, - { - "begin": 4731, - "end": 4747, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "tag", - "source": 2, - "value": "88" - }, - { - "begin": 4731, - "end": 4747, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "PUSH", - "source": 2, - "value": "40" - }, - { - "begin": 4731, - "end": 4747, - "name": "MLOAD", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "DUP1", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "SWAP2", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "SUB", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "SWAP1", - "source": 2 - }, - { - "begin": 4731, - "end": 4747, - "name": "KECCAK256", - "source": 2 - }, - { - "begin": 4749, - "end": 4760, - "name": "DUP6", - "source": 2 - }, - { - "begin": 4749, - "end": 4760, - "name": "DUP6", - "source": 2 - }, - { - "begin": 4710, - "end": 4730, - "name": "PUSH [tag]", - "source": 2, - "value": "84" - }, - { - "begin": 4710, - "end": 4761, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 4710, - "end": 4761, - "name": "tag", - "source": 2, - "value": "87" - }, - { - "begin": 4710, - "end": 4761, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 4692, - "end": 4761, - "name": "POP", - "source": 2 - }, - { - "begin": 4692, - "end": 4761, - "name": "SWAP1", - "source": 2 - }, - { - "begin": 4692, - "end": 4761, - "name": "POP", - "source": 2 - }, - { - "begin": 4771, - "end": 4778, - "name": "DUP1", - "source": 2 - }, - { - "begin": 4767, - "end": 4830, - "name": "ISZERO", - "source": 2 - }, - { - "begin": 4767, - "end": 4830, - "name": "PUSH [tag]", - "source": 2, - "value": "90" - }, - { - "begin": 4767, - "end": 4830, - "name": "JUMPI", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4795, - "end": 4823, - "name": "PUSH", - "source": 2, - "value": "20C13B0B00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 4795, - "end": 4823, - "name": "SWAP1", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4788, - "end": 4823, - "name": "PUSH [tag]", - "source": 2, - "value": "86" - }, - { - "begin": 4788, - "end": 4823, - "name": "JUMP", - "source": 2 - }, - { - "begin": 4767, - "end": 4830, - "name": "tag", - "source": 2, - "value": "90" - }, - { - "begin": 4767, - "end": 4830, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4850, - "end": 4851, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 4850, - "end": 4851, - "name": "SWAP1", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4525, - "end": 4857, - "name": "tag", - "source": 2, - "value": "86" - }, - { - "begin": 4525, - "end": 4857, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "SWAP5", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "SWAP4", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "POP", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "POP", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "POP", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "name": "POP", - "source": 2 - }, - { - "begin": 4525, - "end": 4857, - "jumpType": "[out]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "tag", - "source": 2, - "value": "40" - }, - { - "begin": 6456, - "end": 6575, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 178, - "end": 188, - "name": "CALLER", - "source": 8 - }, - { - "begin": 200, - "end": 204, - "name": "ADDRESS", - "source": 8 - }, - { - "begin": 178, - "end": 205, - "name": "EQ", - "source": 8 - }, - { - "begin": 174, - "end": 268, - "name": "PUSH [tag]", - "source": 8, - "value": "92" - }, - { - "begin": 174, - "end": 268, - "name": "JUMPI", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "40" - }, - { - "begin": 222, - "end": 261, - "name": "MLOAD", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "E125889400000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 222, - "end": 261, - "name": "DUP2", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "MSTORE", - "source": 8 - }, - { - "begin": 235, - "end": 245, - "name": "CALLER", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "4" - }, - { - "begin": 222, - "end": 261, - "name": "DUP3", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "ADD", - "source": 8 - }, - { - "begin": 7319, - "end": 7353, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 255, - "end": 259, - "name": "ADDRESS", - "source": 8 - }, - { - "begin": 7369, - "end": 7387, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 7369, - "end": 7387, - "name": "DUP3", - "source": 22 - }, - { - "begin": 7369, - "end": 7387, - "name": "ADD", - "source": 22 - }, - { - "begin": 7362, - "end": 7405, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 7231, - "end": 7249, - "name": "PUSH", - "source": 22, - "value": "44" - }, - { - "begin": 7231, - "end": 7249, - "name": "ADD", - "source": 22 - }, - { - "begin": 222, - "end": 261, - "name": "tag", - "source": 8, - "value": "93" - }, - { - "begin": 222, - "end": 261, - "name": "JUMPDEST", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "40" - }, - { - "begin": 222, - "end": 261, - "name": "MLOAD", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "DUP1", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "SWAP2", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "SUB", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "SWAP1", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "REVERT", - "source": 8 - }, - { - "begin": 174, - "end": 268, - "name": "tag", - "source": 8, - "value": "92" - }, - { - "begin": 174, - "end": 268, - "name": "JUMPDEST", - "source": 8 - }, - { - "begin": 6542, - "end": 6570, - "modifierDepth": 1, - "name": "PUSH [tag]", - "source": 2, - "value": "96" - }, - { - "begin": 6559, - "end": 6569, - "modifierDepth": 1, - "name": "DUP2", - "source": 2 - }, - { - "begin": 6542, - "end": 6558, - "modifierDepth": 1, - "name": "PUSH [tag]", - "source": 2, - "value": "97" - }, - { - "begin": 6542, - "end": 6570, - "jumpType": "[in]", - "modifierDepth": 1, - "name": "JUMP", - "source": 2 - }, - { - "begin": 6542, - "end": 6570, - "modifierDepth": 1, - "name": "tag", - "source": 2, - "value": "96" - }, - { - "begin": 6542, - "end": 6570, - "modifierDepth": 1, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "name": "POP", - "source": 2 - }, - { - "begin": 6456, - "end": 6575, - "jumpType": "[out]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 1290, - "end": 1552, - "name": "tag", - "source": 1, - "value": "50" - }, - { - "begin": 1290, - "end": 1552, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1401, - "end": 1415, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 1418, - "end": 1481, - "name": "PUSH [tag]", - "source": 1, - "value": "99" - }, - { - "begin": 1474, - "end": 1478, - "name": "DUP4", - "source": 1 - }, - { - "begin": 1474, - "end": 1478, - "name": "DUP4", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 1454, - "end": 1479, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "PUSH", - "source": 1, - "value": "20" - }, - { - "begin": 1454, - "end": 1479, - "name": "ADD", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "PUSH [tag]", - "source": 1, - "value": "100" - }, - { - "begin": 1454, - "end": 1479, - "name": "SWAP3", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "SWAP2", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "PUSH [tag]", - "source": 1, - "value": "101" - }, - { - "begin": 1454, - "end": 1479, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "tag", - "source": 1, - "value": "100" - }, - { - "begin": 1454, - "end": 1479, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 1454, - "end": 1479, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "PUSH", - "source": 1, - "value": "20" - }, - { - "begin": 1454, - "end": 1479, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "DUP4", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "SUB", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "SUB", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "MSTORE", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1454, - "end": 1479, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 1454, - "end": 1479, - "name": "MSTORE", - "source": 1 - }, - { - "begin": 1444, - "end": 1480, - "name": "DUP1", - "source": 1 - }, - { - "begin": 1444, - "end": 1480, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 1444, - "end": 1480, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1444, - "end": 1480, - "name": "PUSH", - "source": 1, - "value": "20" - }, - { - "begin": 1444, - "end": 1480, - "name": "ADD", - "source": 1 - }, - { - "begin": 1444, - "end": 1480, - "name": "KECCAK256", - "source": 1 - }, - { - "begin": 1418, - "end": 1443, - "name": "PUSH [tag]", - "source": 1, - "value": "102" - }, - { - "begin": 1418, - "end": 1481, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1418, - "end": 1481, - "name": "tag", - "source": 1, - "value": "99" - }, - { - "begin": 1418, - "end": 1481, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1401, - "end": 1481, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1401, - "end": 1481, - "name": "POP", - "source": 1 - }, - { - "begin": 1520, - "end": 1547, - "name": "PUSH [tag]", - "source": 1, - "value": "103" - }, - { - "begin": 1534, - "end": 1540, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1542, - "end": 1546, - "name": "DUP5", - "source": 1 - }, - { - "begin": 1542, - "end": 1546, - "name": "DUP5", - "source": 1 - }, - { - "begin": 1520, - "end": 1533, - "name": "PUSH [tag]", - "source": 1, - "value": "104" - }, - { - "begin": 1520, - "end": 1547, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1520, - "end": 1547, - "name": "tag", - "source": 1, - "value": "103" - }, - { - "begin": 1520, - "end": 1547, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1364, - "end": 1552, - "name": "POP", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "POP", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "name": "POP", - "source": 1 - }, - { - "begin": 1290, - "end": 1552, - "jumpType": "[out]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "tag", - "source": 1, - "value": "55" - }, - { - "begin": 890, - "end": 1182, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1030, - "end": 1044, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 1047, - "end": 1111, - "name": "PUSH [tag]", - "source": 1, - "value": "106" - }, - { - "begin": 1104, - "end": 1108, - "name": "DUP7", - "source": 1 - }, - { - "begin": 1104, - "end": 1108, - "name": "DUP7", - "source": 1 - }, - { - "begin": 1083, - "end": 1109, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 1083, - "end": 1109, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 1083, - "end": 1109, - "name": "PUSH", - "source": 1, - "value": "20" - }, - { - "begin": 1083, - "end": 1109, - "name": "ADD", - "source": 1 - }, - { - "begin": 1083, - "end": 1109, - "name": "PUSH [tag]", - "source": 1, - "value": "100" - }, - { - "begin": 1083, - "end": 1109, - "name": "SWAP3", - "source": 1 - }, - { - "begin": 1083, - "end": 1109, - "name": "SWAP2", - "source": 1 - }, - { - "begin": 1083, - "end": 1109, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1083, - "end": 1109, - "name": "PUSH [tag]", - "source": 1, - "value": "108" - }, - { - "begin": 1083, - "end": 1109, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1047, - "end": 1111, - "name": "tag", - "source": 1, - "value": "106" - }, - { - "begin": 1047, - "end": 1111, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1030, - "end": 1111, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1030, - "end": 1111, - "name": "POP", - "source": 1 - }, - { - "begin": 1150, - "end": 1177, - "name": "PUSH [tag]", - "source": 1, - "value": "109" - }, - { - "begin": 1164, - "end": 1170, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1172, - "end": 1176, - "name": "DUP8", - "source": 1 - }, - { - "begin": 1172, - "end": 1176, - "name": "DUP8", - "source": 1 - }, - { - "begin": 1150, - "end": 1163, - "name": "PUSH [tag]", - "source": 1, - "value": "104" - }, - { - "begin": 1150, - "end": 1177, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1150, - "end": 1177, - "name": "tag", - "source": 1, - "value": "109" - }, - { - "begin": 1150, - "end": 1177, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 993, - "end": 1182, - "name": "POP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "POP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "POP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "POP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "POP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "name": "POP", - "source": 1 - }, - { - "begin": 890, - "end": 1182, - "jumpType": "[out]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1675, - "end": 3161, - "name": "tag", - "source": 2, - "value": "59" - }, - { - "begin": 1675, - "end": 3161, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 1801, - "end": 1818, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 1824, - "end": 1838, - "name": "DUP1", - "source": 2 - }, - { - "begin": 1844, - "end": 1861, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 1867, - "end": 1884, - "name": "DUP1", - "source": 2 - }, - { - "begin": 1890, - "end": 1908, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 1919, - "end": 1939, - "name": "DUP1", - "source": 2 - }, - { - "begin": 1942, - "end": 1952, - "name": "DUP8", - "source": 2 - }, - { - "begin": 1942, - "end": 1952, - "name": "DUP8", - "source": 2 - }, - { - "begin": 1953, - "end": 1954, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 1942, - "end": 1955, - "name": "DUP2", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "DUP2", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "LT", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "PUSH [tag]", - "source": 2, - "value": "112" - }, - { - "begin": 1942, - "end": 1955, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "PUSH [tag]", - "source": 2, - "value": "112" - }, - { - "begin": 1942, - "end": 1955, - "name": "PUSH [tag]", - "source": 2, - "value": "113" - }, - { - "begin": 1942, - "end": 1955, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "tag", - "source": 2, - "value": "112" - }, - { - "begin": 1942, - "end": 1955, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "SWAP1", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "SWAP2", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "ADD", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "CALLDATALOAD", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "PUSH", - "source": 2, - "value": "FF00000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1942, - "end": 1955, - "name": "AND", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "SWAP2", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1942, - "end": 1955, - "name": "DUP2", - "source": 2 - }, - { - "begin": 1942, - "end": 1955, - "name": "SWAP1", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1962, - "end": 2265, - "name": "PUSH [tag]", - "source": 2, - "value": "114" - }, - { - "begin": 1962, - "end": 2265, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 2057, - "end": 2091, - "name": "PUSH [tag]", - "source": 2, - "value": "115" - }, - { - "begin": 2083, - "end": 2090, - "name": "DUP10", - "source": 2 - }, - { - "begin": 2057, - "end": 2082, - "name": "PUSH [tag]", - "source": 2, - "value": "102" - }, - { - "begin": 2057, - "end": 2091, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 2057, - "end": 2091, - "name": "tag", - "source": 2, - "value": "115" - }, - { - "begin": 2057, - "end": 2091, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 2045, - "end": 2091, - "name": "SWAP3", - "source": 2 - }, - { - "begin": 2045, - "end": 2091, - "name": "POP", - "source": 2 - }, - { - "begin": 2144, - "end": 2190, - "name": "PUSH [tag]", - "source": 2, - "value": "116" - }, - { - "begin": 2168, - "end": 2177, - "name": "DUP4", - "source": 2 - }, - { - "begin": 2179, - "end": 2189, - "name": "DUP10", - "source": 2 - }, - { - "begin": 2179, - "end": 2189, - "name": "DUP10", - "source": 2 - }, - { - "begin": 2144, - "end": 2167, - "name": "PUSH [tag]", - "source": 2, - "value": "117" - }, - { - "begin": 2144, - "end": 2190, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 2144, - "end": 2190, - "name": "tag", - "source": 2, - "value": "116" - }, - { - "begin": 2144, - "end": 2190, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 2099, - "end": 2190, - "name": "SWAP3", - "source": 2 - }, - { - "begin": 2099, - "end": 2190, - "name": "SWAP9", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2099, - "end": 2190, - "name": "SWAP1", - "source": 2 - }, - { - "begin": 2099, - "end": 2190, - "name": "SWAP7", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2099, - "end": 2190, - "name": "SWAP5", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2099, - "end": 2190, - "name": "SWAP2", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2198, - "end": 2258, - "name": "PUSH [tag]", - "source": 2, - "value": "110" - }, - { - "begin": 2198, - "end": 2258, - "name": "SWAP1", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2198, - "end": 2258, - "name": "JUMP", - "source": 2 - }, - { - "begin": 1962, - "end": 2265, - "name": "tag", - "source": 2, - "value": "114" - }, - { - "begin": 1962, - "end": 2265, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 2275, - "end": 2304, - "name": "PUSH", - "source": 2, - "value": "FF00000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 2275, - "end": 2304, - "name": "DUP2", - "source": 2 - }, - { - "begin": 2275, - "end": 2304, - "name": "DUP2", - "source": 2 - }, - { - "begin": 2275, - "end": 2304, - "name": "AND", - "source": 2 - }, - { - "begin": 2275, - "end": 2304, - "name": "ADD", - "source": 2 - }, - { - "begin": 2271, - "end": 2581, - "name": "PUSH [tag]", - "source": 2, - "value": "118" - }, - { - "begin": 2271, - "end": 2581, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 2370, - "end": 2404, - "name": "PUSH [tag]", - "source": 2, - "value": "119" - }, - { - "begin": 2396, - "end": 2403, - "name": "DUP10", - "source": 2 - }, - { - "begin": 2370, - "end": 2395, - "name": "PUSH [tag]", - "source": 2, - "value": "102" - }, - { - "begin": 2370, - "end": 2404, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 2370, - "end": 2404, - "name": "tag", - "source": 2, - "value": "119" - }, - { - "begin": 2370, - "end": 2404, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 2358, - "end": 2404, - "name": "SWAP3", - "source": 2 - }, - { - "begin": 2358, - "end": 2404, - "name": "POP", - "source": 2 - }, - { - "begin": 2457, - "end": 2506, - "name": "PUSH [tag]", - "source": 2, - "value": "116" - }, - { - "begin": 2484, - "end": 2493, - "name": "DUP4", - "source": 2 - }, - { - "begin": 2495, - "end": 2505, - "name": "DUP10", - "source": 2 - }, - { - "begin": 2495, - "end": 2505, - "name": "DUP10", - "source": 2 - }, - { - "begin": 2457, - "end": 2483, - "name": "PUSH [tag]", - "source": 2, - "value": "121" - }, - { - "begin": 2457, - "end": 2506, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 2271, - "end": 2581, - "name": "tag", - "source": 2, - "value": "118" - }, - { - "begin": 2271, - "end": 2581, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 2591, - "end": 2624, - "name": "PUSH", - "source": 2, - "value": "FE00000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 2591, - "end": 2624, - "name": "PUSH", - "source": 2, - "value": "FF00000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 2591, - "end": 2624, - "name": "DUP3", - "source": 2 - }, - { - "begin": 2591, - "end": 2624, - "name": "AND", - "source": 2 - }, - { - "begin": 2591, - "end": 2624, - "name": "ADD", - "source": 2 - }, - { - "begin": 2587, - "end": 2906, - "name": "PUSH [tag]", - "source": 2, - "value": "122" - }, - { - "begin": 2587, - "end": 2906, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 2690, - "end": 2729, - "name": "PUSH [tag]", - "source": 2, - "value": "119" - }, - { - "begin": 2721, - "end": 2728, - "name": "DUP10", - "source": 2 - }, - { - "begin": 2690, - "end": 2720, - "name": "PUSH [tag]", - "source": 2, - "value": "124" - }, - { - "begin": 2690, - "end": 2729, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 2587, - "end": 2906, - "name": "tag", - "source": 2, - "value": "122" - }, - { - "begin": 2587, - "end": 2906, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 2916, - "end": 2945, - "name": "PUSH", - "source": 2, - "value": "FD00000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 2916, - "end": 2945, - "name": "PUSH", - "source": 2, - "value": "FF00000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 2916, - "end": 2945, - "name": "DUP3", - "source": 2 - }, - { - "begin": 2916, - "end": 2945, - "name": "AND", - "source": 2 - }, - { - "begin": 2916, - "end": 2945, - "name": "ADD", - "source": 2 - }, - { - "begin": 2912, - "end": 3108, - "name": "PUSH [tag]", - "source": 2, - "value": "126" - }, - { - "begin": 2912, - "end": 3108, - "name": "JUMPI", - "source": 2 - }, - { - "begin": 3066, - "end": 3101, - "name": "PUSH [tag]", - "source": 2, - "value": "127" - }, - { - "begin": 3081, - "end": 3088, - "name": "DUP10", - "source": 2 - }, - { - "begin": 3090, - "end": 3100, - "name": "DUP10", - "source": 2 - }, - { - "begin": 3090, - "end": 3100, - "name": "DUP10", - "source": 2 - }, - { - "begin": 3066, - "end": 3080, - "name": "PUSH [tag]", - "source": 2, - "value": "128" - }, - { - "begin": 3066, - "end": 3101, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 3066, - "end": 3101, - "name": "tag", - "source": 2, - "value": "127" - }, - { - "begin": 3066, - "end": 3101, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "SWAP6", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "POP", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "SWAP6", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "POP", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "SWAP6", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "POP", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "SWAP6", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "POP", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "SWAP6", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "POP", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "POP", - "source": 2 - }, - { - "begin": 3059, - "end": 3101, - "name": "PUSH [tag]", - "source": 2, - "value": "110" - }, - { - "begin": 3059, - "end": 3101, - "name": "JUMP", - "source": 2 - }, - { - "begin": 2912, - "end": 3108, - "name": "tag", - "source": 2, - "value": "126" - }, - { - "begin": 2912, - "end": 3108, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 3121, - "end": 3156, - "name": "PUSH", - "source": 2, - "value": "40" - }, - { - "begin": 3121, - "end": 3156, - "name": "MLOAD", - "source": 2 - }, - { - "begin": 3121, - "end": 3156, - "name": "PUSH", - "source": 2, - "value": "6085CD8200000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 3121, - "end": 3156, - "name": "DUP2", - "source": 2 - }, - { - "begin": 3121, - "end": 3156, - "name": "MSTORE", - "source": 2 - }, - { - "begin": 11707, - "end": 11773, - "name": "PUSH", - "source": 22, - "value": "FF00000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 11695, - "end": 11774, - "name": "DUP3", - "source": 22 - }, - { - "begin": 11695, - "end": 11774, - "name": "AND", - "source": 22 - }, - { - "begin": 3121, - "end": 3156, - "name": "PUSH", - "source": 2, - "value": "4" - }, - { - "begin": 3121, - "end": 3156, - "name": "DUP3", - "source": 2 - }, - { - "begin": 3121, - "end": 3156, - "name": "ADD", - "source": 2 - }, - { - "begin": 11677, - "end": 11775, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11650, - "end": 11668, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 11650, - "end": 11668, - "name": "ADD", - "source": 22 - }, - { - "begin": 3121, - "end": 3156, - "name": "PUSH [tag]", - "source": 2, - "value": "93" - }, - { - "begin": 11533, - "end": 11781, - "name": "JUMP", - "source": 22 - }, - { - "begin": 1675, - "end": 3161, - "name": "tag", - "source": 2, - "value": "110" - }, - { - "begin": 1675, - "end": 3161, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "SWAP4", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "SWAP8", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "SWAP3", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "SWAP7", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "POP", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "SWAP4", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "POP", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "SWAP4", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "name": "POP", - "source": 2 - }, - { - "begin": 1675, - "end": 3161, - "jumpType": "[out]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 938, - "end": 1094, - "name": "tag", - "source": 6, - "value": "66" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 1002, - "end": 1009, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 1032, - "end": 1088, - "name": "PUSH [tag]", - "source": 6, - "value": "80" - }, - { - "begin": 453, - "end": 519, - "name": "PUSH", - "source": 6, - "value": "8D0BF1FD623D628C741362C1289948E57B3E2905218C676D3E69ABEE36D6AE2E" - }, - { - "begin": 1080, - "end": 1086, - "name": "DUP4", - "source": 6 - }, - { - "begin": 1032, - "end": 1060, - "name": "PUSH [tag]", - "source": 6, - "value": "133" - }, - { - "begin": 1032, - "end": 1088, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 456, - "end": 732, - "name": "tag", - "source": 4, - "value": "72" - }, - { - "begin": 456, - "end": 732, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 550, - "end": 562, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 178, - "end": 188, - "name": "CALLER", - "source": 8 - }, - { - "begin": 200, - "end": 204, - "name": "ADDRESS", - "source": 8 - }, - { - "begin": 178, - "end": 205, - "name": "EQ", - "source": 8 - }, - { - "begin": 174, - "end": 268, - "name": "PUSH [tag]", - "source": 8, - "value": "135" - }, - { - "begin": 174, - "end": 268, - "name": "JUMPI", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "40" - }, - { - "begin": 222, - "end": 261, - "name": "MLOAD", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "E125889400000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 222, - "end": 261, - "name": "DUP2", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "MSTORE", - "source": 8 - }, - { - "begin": 235, - "end": 245, - "name": "CALLER", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "4" - }, - { - "begin": 222, - "end": 261, - "name": "DUP3", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "ADD", - "source": 8 - }, - { - "begin": 7319, - "end": 7353, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 255, - "end": 259, - "name": "ADDRESS", - "source": 8 - }, - { - "begin": 7369, - "end": 7387, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 7369, - "end": 7387, - "name": "DUP3", - "source": 22 - }, - { - "begin": 7369, - "end": 7387, - "name": "ADD", - "source": 22 - }, - { - "begin": 7362, - "end": 7405, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 7231, - "end": 7249, - "name": "PUSH", - "source": 22, - "value": "44" - }, - { - "begin": 7231, - "end": 7249, - "name": "ADD", - "source": 22 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH [tag]", - "source": 8, - "value": "93" - }, - { - "begin": 7084, - "end": 7411, - "name": "JUMP", - "source": 22 - }, - { - "begin": 174, - "end": 268, - "name": "tag", - "source": 8, - "value": "135" - }, - { - "begin": 174, - "end": 268, - "name": "JUMPDEST", - "source": 8 - }, - { - "begin": 631, - "end": 636, - "modifierDepth": 1, - "name": "DUP2", - "source": 4 - }, - { - "begin": 625, - "end": 637, - "modifierDepth": 1, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 620, - "end": 622, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "20" - }, - { - "begin": 613, - "end": 618, - "modifierDepth": 1, - "name": "DUP4", - "source": 4 - }, - { - "begin": 609, - "end": 623, - "modifierDepth": 1, - "name": "ADD", - "source": 4 - }, - { - "begin": 596, - "end": 607, - "modifierDepth": 1, - "name": "CALLVALUE", - "source": 4 - }, - { - "begin": 589, - "end": 638, - "modifierDepth": 1, - "name": "CREATE", - "source": 4 - }, - { - "begin": 581, - "end": 638, - "name": "SWAP1", - "source": 4 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 649, - "end": 667, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 649, - "end": 667, - "name": "DUP2", - "source": 4 - }, - { - "begin": 649, - "end": 667, - "modifierDepth": 1, - "name": "AND", - "source": 4 - }, - { - "begin": 645, - "end": 695, - "modifierDepth": 1, - "name": "PUSH [tag]", - "source": 4, - "value": "138" - }, - { - "begin": 645, - "end": 695, - "modifierDepth": 1, - "name": "JUMPI", - "source": 4 - }, - { - "begin": 689, - "end": 694, - "modifierDepth": 1, - "name": "DUP2", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "D25719100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "DUP2", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "MSTORE", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "4" - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "ADD", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH [tag]", - "source": 4, - "value": "93" - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH [tag]", - "source": 4, - "value": "140" - }, - { - "begin": 676, - "end": 695, - "jumpType": "[in]", - "modifierDepth": 1, - "name": "JUMP", - "source": 4 - }, - { - "begin": 645, - "end": 695, - "modifierDepth": 1, - "name": "tag", - "source": 4, - "value": "138" - }, - { - "begin": 645, - "end": 695, - "modifierDepth": 1, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 706, - "end": 727, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 6753, - "end": 6795, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 6741, - "end": 6796, - "name": "DUP3", - "source": 22 - }, - { - "begin": 6741, - "end": 6796, - "name": "AND", - "source": 22 - }, - { - "begin": 6723, - "end": 6797, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6723, - "end": 6797, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "A506AD4E7F05ECEBA62A023C3219E5BD98A615F4FA87E2AFB08A2DA5CF62BF0C" - }, - { - "begin": 706, - "end": 727, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 6711, - "end": 6713, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 6696, - "end": 6714, - "name": "ADD", - "source": 22 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "DUP1", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "SUB", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "LOG1", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "POP", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "jumpType": "[out]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 670, - "end": 757, - "name": "tag", - "source": 6, - "value": "77" - }, - { - "begin": 670, - "end": 757, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 718, - "end": 725, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 740, - "end": 752, - "name": "PUSH [tag]", - "source": 6, - "value": "143" - }, - { - "begin": 750, - "end": 751, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 740, - "end": 749, - "name": "PUSH [tag]", - "source": 6, - "value": "66" - }, - { - "begin": 740, - "end": 752, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 740, - "end": 752, - "name": "tag", - "source": 6, - "value": "143" - }, - { - "begin": 740, - "end": 752, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 733, - "end": 752, - "name": "SWAP1", - "source": 6 - }, - { - "begin": 733, - "end": 752, - "name": "POP", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "SWAP1", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "jumpType": "[out]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 942, - "end": 1175, - "name": "tag", - "source": 4, - "value": "81" - }, - { - "begin": 942, - "end": 1175, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 1028, - "end": 1032, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 1044, - "end": 1092, - "name": "PUSH", - "source": 4, - "value": "6FFBD45100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1044, - "end": 1092, - "name": "PUSH", - "source": 4, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1044, - "end": 1092, - "name": "DUP4", - "source": 4 - }, - { - "begin": 1044, - "end": 1092, - "name": "AND", - "source": 4 - }, - { - "begin": 1044, - "end": 1092, - "name": "ADD", - "source": 4 - }, - { - "begin": 1040, - "end": 1120, - "name": "PUSH [tag]", - "source": 4, - "value": "145" - }, - { - "begin": 1040, - "end": 1120, - "name": "JUMPI", - "source": 4 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1109, - "end": 1113, - "name": "PUSH", - "source": 4, - "value": "1" - }, - { - "begin": 1109, - "end": 1113, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "SWAP1", - "source": 4 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 942, - "end": 1175, - "jumpType": "[out]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 1040, - "end": 1120, - "name": "tag", - "source": 4, - "value": "145" - }, - { - "begin": 1040, - "end": 1120, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 1133, - "end": 1170, - "name": "PUSH [tag]", - "source": 4, - "value": "80" - }, - { - "begin": 1157, - "end": 1169, - "name": "DUP3", - "source": 4 - }, - { - "begin": 1133, - "end": 1156, - "name": "PUSH [tag]", - "source": 4, - "value": "147" - }, - { - "begin": 1133, - "end": 1170, - "jumpType": "[in]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 3480, - "end": 3866, - "name": "tag", - "source": 2, - "value": "84" - }, - { - "begin": 3480, - "end": 3866, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 3611, - "end": 3623, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 3629, - "end": 3646, - "name": "DUP1", - "source": 2 - }, - { - "begin": 3657, - "end": 3674, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 3676, - "end": 3690, - "name": "DUP1", - "source": 2 - }, - { - "begin": 3692, - "end": 3709, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 3760, - "end": 3798, - "name": "PUSH [tag]", - "source": 2, - "value": "149" - }, - { - "begin": 3778, - "end": 3785, - "name": "DUP9", - "source": 2 - }, - { - "begin": 3787, - "end": 3797, - "name": "DUP9", - "source": 2 - }, - { - "begin": 3787, - "end": 3797, - "name": "DUP9", - "source": 2 - }, - { - "begin": 3760, - "end": 3777, - "name": "PUSH [tag]", - "source": 2, - "value": "59" - }, - { - "begin": 3760, - "end": 3798, - "jumpType": "[in]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 3760, - "end": 3798, - "name": "tag", - "source": 2, - "value": "149" - }, - { - "begin": 3760, - "end": 3798, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3715, - "end": 3798, - "name": "SWAP7", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3715, - "end": 3798, - "name": "SWAP2", - "source": 2 - }, - { - "begin": 3715, - "end": 3798, - "name": "SWAP5", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3715, - "end": 3798, - "name": "SWAP3", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3715, - "end": 3798, - "name": "SWAP1", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3814, - "end": 3833, - "name": "DUP3", - "source": 2 - }, - { - "begin": 3814, - "end": 3833, - "name": "DUP3", - "source": 2 - }, - { - "begin": 3814, - "end": 3833, - "name": "LT", - "source": 2 - }, - { - "begin": 3814, - "end": 3833, - "name": "DUP1", - "source": 2 - }, - { - "begin": 3814, - "end": 3833, - "name": "ISZERO", - "source": 2 - }, - { - "begin": 3814, - "end": 3833, - "name": "SWAP1", - "source": 2 - }, - { - "begin": 3814, - "end": 3861, - "name": "PUSH [tag]", - "source": 2, - "value": "151" - }, - { - "begin": 3814, - "end": 3861, - "name": "JUMPI", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2779, - "end": 2783, - "name": "PUSH", - "source": 1, - "value": "1" - }, - { - "begin": 3837, - "end": 3861, - "name": "tag", - "source": 2, - "value": "151" - }, - { - "begin": 3837, - "end": 3861, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 3804, - "end": 3861, - "name": "SWAP5", - "source": 2 - }, - { - "begin": 3804, - "end": 3861, - "name": "POP", - "source": 2 - }, - { - "begin": 3651, - "end": 3866, - "name": "POP", - "source": 2 - }, - { - "begin": 3651, - "end": 3866, - "name": "POP", - "source": 2 - }, - { - "begin": 3651, - "end": 3866, - "name": "POP", - "source": 2 - }, - { - "begin": 3480, - "end": 3866, - "name": "SWAP4", - "source": 2 - }, - { - "begin": 3480, - "end": 3866, - "name": "POP", - "source": 2 - }, - { - "begin": 3480, - "end": 3866, - "name": "SWAP4", - "source": 2 - }, - { - "begin": 3480, - "end": 3866, - "name": "SWAP2", - "source": 2 - }, - { - "begin": 3480, - "end": 3866, - "name": "POP", - "source": 2 - }, - { - "begin": 3480, - "end": 3866, - "name": "POP", - "source": 2 - }, - { - "begin": 3480, - "end": 3866, - "jumpType": "[out]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 2824, - "end": 2917, - "name": "tag", - "source": 1, - "value": "97" - }, - { - "begin": 2824, - "end": 2917, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 2898, - "end": 2912, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "PUSH", - "source": 1, - "value": "A038794000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 2898, - "end": 2912, - "name": "DUP2", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "MSTORE", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "PUSH", - "source": 1, - "value": "4" - }, - { - "begin": 2898, - "end": 2912, - "name": "ADD", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 2898, - "end": 2912, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "DUP1", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "SWAP2", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "SUB", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 2898, - "end": 2912, - "name": "REVERT", - "source": 1 - }, - { - "begin": 1173, - "end": 1397, - "name": "tag", - "source": 13, - "value": "102" - }, - { - "begin": 1173, - "end": 1397, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "PUSH", - "source": 13, - "value": "40" - }, - { - "begin": 1279, - "end": 1386, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 12792, - "end": 12858, - "name": "PUSH", - "source": 22, - "value": "1901000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1279, - "end": 1386, - "name": "PUSH", - "source": 13, - "value": "20" - }, - { - "begin": 1279, - "end": 1386, - "name": "DUP3", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "ADD", - "source": 13 - }, - { - "begin": 12780, - "end": 12859, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 1325, - "end": 1338, - "name": "CHAINID", - "source": 13 - }, - { - "begin": 12875, - "end": 12886, - "name": "PUSH", - "source": 22, - "value": "22" - }, - { - "begin": 12875, - "end": 12886, - "name": "DUP3", - "source": 22 - }, - { - "begin": 12875, - "end": 12886, - "name": "ADD", - "source": 22 - }, - { - "begin": 12868, - "end": 12895, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 12946, - "end": 13012, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000" - }, - { - "begin": 1356, - "end": 1360, - "name": "ADDRESS", - "source": 13 - }, - { - "begin": 12933, - "end": 12935, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 12929, - "end": 12944, - "name": "SHL", - "source": 22 - }, - { - "begin": 12925, - "end": 13013, - "name": "AND", - "source": 22 - }, - { - "begin": 12911, - "end": 12923, - "name": "PUSH", - "source": 22, - "value": "42" - }, - { - "begin": 12911, - "end": 12923, - "name": "DUP3", - "source": 22 - }, - { - "begin": 12911, - "end": 12923, - "name": "ADD", - "source": 22 - }, - { - "begin": 12904, - "end": 13014, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 13030, - "end": 13042, - "name": "PUSH", - "source": 22, - "value": "56" - }, - { - "begin": 13030, - "end": 13042, - "name": "DUP2", - "source": 22 - }, - { - "begin": 13030, - "end": 13042, - "name": "ADD", - "source": 22 - }, - { - "begin": 13023, - "end": 13051, - "name": "DUP3", - "source": 22 - }, - { - "begin": 13023, - "end": 13051, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 13023, - "end": 13051, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 1240, - "end": 1247, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 1240, - "end": 1247, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 13067, - "end": 13079, - "name": "PUSH", - "source": 22, - "value": "76" - }, - { - "begin": 13067, - "end": 13079, - "name": "ADD", - "source": 22 - }, - { - "begin": 1279, - "end": 1386, - "name": "tag", - "source": 13, - "value": "155" - }, - { - "begin": 1279, - "end": 1386, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "PUSH", - "source": 13, - "value": "40" - }, - { - "begin": 1279, - "end": 1386, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "PUSH", - "source": 13, - "value": "20" - }, - { - "begin": 1279, - "end": 1386, - "name": "DUP2", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "DUP4", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "SUB", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "SUB", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "DUP2", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 1279, - "end": 1386, - "name": "PUSH", - "source": 13, - "value": "40" - }, - { - "begin": 1279, - "end": 1386, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 1262, - "end": 1392, - "name": "DUP1", - "source": 13 - }, - { - "begin": 1262, - "end": 1392, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 1262, - "end": 1392, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 1262, - "end": 1392, - "name": "PUSH", - "source": 13, - "value": "20" - }, - { - "begin": 1262, - "end": 1392, - "name": "ADD", - "source": 13 - }, - { - "begin": 1262, - "end": 1392, - "name": "KECCAK256", - "source": 13 - }, - { - "begin": 1255, - "end": 1392, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 1255, - "end": 1392, - "name": "POP", - "source": 13 - }, - { - "begin": 1173, - "end": 1397, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 1173, - "end": 1397, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 1173, - "end": 1397, - "name": "POP", - "source": 13 - }, - { - "begin": 1173, - "end": 1397, - "jumpType": "[out]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 1710, - "end": 2544, - "name": "tag", - "source": 1, - "value": "104" - }, - { - "begin": 1710, - "end": 2544, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1847, - "end": 1851, - "name": "DUP1", - "source": 1 - }, - { - "begin": 1832, - "end": 1844, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 1864, - "end": 2540, - "name": "tag", - "source": 1, - "value": "158" - }, - { - "begin": 1864, - "end": 2540, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1888, - "end": 1892, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1884, - "end": 1885, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1884, - "end": 1892, - "name": "LT", - "source": 1 - }, - { - "begin": 1864, - "end": 2540, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 1864, - "end": 2540, - "name": "PUSH [tag]", - "source": 1, - "value": "159" - }, - { - "begin": 1864, - "end": 2540, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 1907, - "end": 1939, - "name": "CALLDATASIZE", - "source": 1 - }, - { - "begin": 1942, - "end": 1946, - "name": "DUP5", - "source": 1 - }, - { - "begin": 1942, - "end": 1946, - "name": "DUP5", - "source": 1 - }, - { - "begin": 1947, - "end": 1948, - "name": "DUP4", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "LT", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "PUSH [tag]", - "source": 1, - "value": "162" - }, - { - "begin": 1942, - "end": 1949, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "PUSH [tag]", - "source": 1, - "value": "162" - }, - { - "begin": 1942, - "end": 1949, - "name": "PUSH [tag]", - "source": 1, - "value": "113" - }, - { - "begin": 1942, - "end": 1949, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "tag", - "source": 1, - "value": "162" - }, - { - "begin": 1942, - "end": 1949, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "POP", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "PUSH", - "source": 1, - "value": "20" - }, - { - "begin": 1942, - "end": 1949, - "name": "MUL", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "ADD", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "PUSH [tag]", - "source": 1, - "value": "163" - }, - { - "begin": 1942, - "end": 1949, - "name": "SWAP2", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "PUSH [tag]", - "source": 1, - "value": "164" - }, - { - "begin": 1942, - "end": 1949, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1942, - "end": 1949, - "name": "tag", - "source": 1, - "value": "163" - }, - { - "begin": 1942, - "end": 1949, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1907, - "end": 1949, - "name": "SWAP1", - "source": 1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1962, - "end": 1986, - "name": "PUSH [tag]", - "source": 1, - "value": "165" - }, - { - "begin": 1962, - "end": 1986, - "name": "PUSH", - "source": 1, - "value": "20" - }, - { - "begin": 1962, - "end": 1986, - "name": "DUP3", - "source": 1 - }, - { - "begin": 1962, - "end": 1986, - "name": "ADD", - "source": 1 - }, - { - "begin": 1907, - "end": 1949, - "name": "DUP3", - "source": 1 - }, - { - "begin": 1962, - "end": 1986, - "name": "PUSH [tag]", - "source": 1, - "value": "166" - }, - { - "begin": 1962, - "end": 1986, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1962, - "end": 1986, - "name": "tag", - "source": 1, - "value": "165" - }, - { - "begin": 1962, - "end": 1986, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1958, - "end": 2020, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 1958, - "end": 2020, - "name": "PUSH [tag]", - "source": 1, - "value": "167" - }, - { - "begin": 1958, - "end": 2020, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 1995, - "end": 2020, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 1995, - "end": 2020, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 1995, - "end": 2020, - "name": "PUSH", - "source": 1, - "value": "230D1CCC00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1995, - "end": 2020, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1995, - "end": 2020, - "name": "MSTORE", - "source": 1 - }, - { - "begin": 1995, - "end": 2020, - "name": "PUSH", - "source": 1, - "value": "4" - }, - { - "begin": 1995, - "end": 2020, - "name": "DUP2", - "source": 1 - }, - { - "begin": 1995, - "end": 2020, - "name": "ADD", - "source": 1 - }, - { - "begin": 2778, - "end": 2803, - "name": "DUP4", - "source": 22 - }, - { - "begin": 2778, - "end": 2803, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 2778, - "end": 2803, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2751, - "end": 2769, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 2751, - "end": 2769, - "name": "ADD", - "source": 22 - }, - { - "begin": 1995, - "end": 2020, - "name": "PUSH [tag]", - "source": 1, - "value": "93" - }, - { - "begin": 2632, - "end": 2809, - "name": "JUMP", - "source": 22 - }, - { - "begin": 1958, - "end": 2020, - "name": "tag", - "source": 1, - "value": "167" - }, - { - "begin": 1958, - "end": 2020, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2048, - "end": 2068, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 2048, - "end": 2068, - "name": "DUP2", - "source": 1 - }, - { - "begin": 2048, - "end": 2068, - "name": "ADD", - "source": 1 - }, - { - "begin": 2048, - "end": 2068, - "name": "CALLDATALOAD", - "source": 1 - }, - { - "begin": 2048, - "end": 2068, - "name": "DUP1", - "source": 1 - }, - { - "begin": 2080, - "end": 2089, - "name": "GAS", - "source": 1 - }, - { - "begin": 2080, - "end": 2100, - "name": "LT", - "source": 1 - }, - { - "begin": 2076, - "end": 2145, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 2076, - "end": 2145, - "name": "PUSH [tag]", - "source": 1, - "value": "169" - }, - { - "begin": 2076, - "end": 2145, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 2122, - "end": 2123, - "name": "DUP3", - "source": 1 - }, - { - "begin": 2125, - "end": 2133, - "name": "DUP2", - "source": 1 - }, - { - "begin": 2135, - "end": 2144, - "name": "GAS", - "source": 1 - }, - { - "begin": 2109, - "end": 2145, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 2109, - "end": 2145, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 2109, - "end": 2145, - "name": "PUSH", - "source": 1, - "value": "2BB3E3BA00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 2109, - "end": 2145, - "name": "DUP2", - "source": 1 - }, - { - "begin": 2109, - "end": 2145, - "name": "MSTORE", - "source": 1 - }, - { - "begin": 2109, - "end": 2145, - "name": "PUSH", - "source": 1, - "value": "4" - }, - { - "begin": 2109, - "end": 2145, - "name": "DUP2", - "source": 1 - }, - { - "begin": 2109, - "end": 2145, - "name": "ADD", - "source": 1 - }, - { - "begin": 13869, - "end": 13894, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 13869, - "end": 13894, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 13869, - "end": 13894, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 13869, - "end": 13894, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 13910, - "end": 13928, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 13910, - "end": 13928, - "name": "DUP4", - "source": 22 - }, - { - "begin": 13910, - "end": 13928, - "name": "ADD", - "source": 22 - }, - { - "begin": 13903, - "end": 13937, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 13903, - "end": 13937, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 13903, - "end": 13937, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 13903, - "end": 13937, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 13953, - "end": 13971, - "name": "PUSH", - "source": 22, - "value": "44" - }, - { - "begin": 13953, - "end": 13971, - "name": "DUP3", - "source": 22 - }, - { - "begin": 13953, - "end": 13971, - "name": "ADD", - "source": 22 - }, - { - "begin": 13946, - "end": 13980, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 13842, - "end": 13860, - "name": "PUSH", - "source": 22, - "value": "64" - }, - { - "begin": 13842, - "end": 13860, - "name": "ADD", - "source": 22 - }, - { - "begin": 2109, - "end": 2145, - "name": "PUSH [tag]", - "source": 1, - "value": "93" - }, - { - "begin": 13667, - "end": 13986, - "name": "JUMP", - "source": 22 - }, - { - "begin": 2076, - "end": 2145, - "name": "tag", - "source": 1, - "value": "169" - }, - { - "begin": 2076, - "end": 2145, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2154, - "end": 2166, - "name": "PUSH", - "source": 1, - "value": "0" - }, - { - "begin": 2169, - "end": 2317, - "name": "PUSH [tag]", - "source": 1, - "value": "172" - }, - { - "begin": 2192, - "end": 2210, - "name": "PUSH [tag]", - "source": 1, - "value": "173" - }, - { - "begin": 2192, - "end": 2210, - "name": "PUSH", - "source": 1, - "value": "80" - }, - { - "begin": 2192, - "end": 2210, - "name": "DUP6", - "source": 1 - }, - { - "begin": 2192, - "end": 2210, - "name": "ADD", - "source": 1 - }, - { - "begin": 2192, - "end": 2210, - "name": "PUSH", - "source": 1, - "value": "60" - }, - { - "begin": 2192, - "end": 2210, - "name": "DUP7", - "source": 1 - }, - { - "begin": 2192, - "end": 2210, - "name": "ADD", - "source": 1 - }, - { - "begin": 2192, - "end": 2210, - "name": "PUSH [tag]", - "source": 1, - "value": "174" - }, - { - "begin": 2192, - "end": 2210, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 2192, - "end": 2210, - "name": "tag", - "source": 1, - "value": "173" - }, - { - "begin": 2192, - "end": 2210, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2220, - "end": 2237, - "name": "PUSH", - "source": 1, - "value": "80" - }, - { - "begin": 2220, - "end": 2237, - "name": "DUP6", - "source": 1 - }, - { - "begin": 2220, - "end": 2237, - "name": "ADD", - "source": 1 - }, - { - "begin": 2220, - "end": 2237, - "name": "CALLDATALOAD", - "source": 1 - }, - { - "begin": 2247, - "end": 2260, - "name": "DUP5", - "source": 1 - }, - { - "begin": 2247, - "end": 2260, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 2247, - "end": 2283, - "name": "PUSH [tag]", - "source": 1, - "value": "175" - }, - { - "begin": 2247, - "end": 2283, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 2275, - "end": 2283, - "name": "DUP5", - "source": 1 - }, - { - "begin": 2247, - "end": 2283, - "name": "PUSH [tag]", - "source": 1, - "value": "176" - }, - { - "begin": 2247, - "end": 2283, - "name": "JUMP", - "source": 1 - }, - { - "begin": 2247, - "end": 2283, - "name": "tag", - "source": 1, - "value": "175" - }, - { - "begin": 2247, - "end": 2283, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2263, - "end": 2272, - "name": "GAS", - "source": 1 - }, - { - "begin": 2247, - "end": 2283, - "name": "tag", - "source": 1, - "value": "176" - }, - { - "begin": 2247, - "end": 2283, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2293, - "end": 2309, - "name": "PUSH [tag]", - "source": 1, - "value": "177" - }, - { - "begin": 2293, - "end": 2309, - "name": "PUSH", - "source": 1, - "value": "A0" - }, - { - "begin": 2293, - "end": 2309, - "name": "DUP9", - "source": 1 - }, - { - "begin": 2293, - "end": 2309, - "name": "ADD", - "source": 1 - }, - { - "begin": 2293, - "end": 2304, - "name": "DUP9", - "source": 1 - }, - { - "begin": 2293, - "end": 2309, - "name": "PUSH [tag]", - "source": 1, - "value": "178" - }, - { - "begin": 2293, - "end": 2309, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 2293, - "end": 2309, - "name": "tag", - "source": 1, - "value": "177" - }, - { - "begin": 2293, - "end": 2309, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2169, - "end": 2182, - "name": "PUSH [tag]", - "source": 1, - "value": "179" - }, - { - "begin": 2169, - "end": 2317, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 2169, - "end": 2317, - "name": "tag", - "source": 1, - "value": "172" - }, - { - "begin": 2169, - "end": 2317, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2154, - "end": 2317, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 2154, - "end": 2317, - "name": "POP", - "source": 1 - }, - { - "begin": 2330, - "end": 2337, - "name": "DUP1", - "source": 1 - }, - { - "begin": 2326, - "end": 2534, - "name": "ISZERO", - "source": 1 - }, - { - "begin": 2326, - "end": 2534, - "name": "PUSH [tag]", - "source": 1, - "value": "180" - }, - { - "begin": 2326, - "end": 2534, - "name": "JUMPI", - "source": 1 - }, - { - "begin": 2365, - "end": 2372, - "name": "DUP8", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "PUSH", - "source": 1, - "value": "5C4EEB02DABF8976016AB414D617F9A162936DCACE3CDEF8C69EF6E262AD5AE7" - }, - { - "begin": 2374, - "end": 2375, - "name": "DUP6", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 2354, - "end": 2376, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "PUSH [tag]", - "source": 1, - "value": "181" - }, - { - "begin": 2354, - "end": 2376, - "name": "SWAP2", - "source": 1 - }, - { - "begin": 2778, - "end": 2803, - "name": "DUP2", - "source": 22 - }, - { - "begin": 2778, - "end": 2803, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2766, - "end": 2768, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 2751, - "end": 2769, - "name": "ADD", - "source": 22 - }, - { - "begin": 2751, - "end": 2769, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 2632, - "end": 2809, - "name": "JUMP", - "source": 22 - }, - { - "begin": 2354, - "end": 2376, - "name": "tag", - "source": 1, - "value": "181" - }, - { - "begin": 2354, - "end": 2376, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 2354, - "end": 2376, - "name": "MLOAD", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "DUP1", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "SWAP2", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "SUB", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 2354, - "end": 2376, - "name": "LOG2", - "source": 1 - }, - { - "begin": 2326, - "end": 2534, - "name": "PUSH [tag]", - "source": 1, - "value": "183" - }, - { - "begin": 2326, - "end": 2534, - "name": "JUMP", - "source": 1 - }, - { - "begin": 2326, - "end": 2534, - "name": "tag", - "source": 1, - "value": "180" - }, - { - "begin": 2326, - "end": 2534, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2401, - "end": 2525, - "name": "PUSH [tag]", - "source": 1, - "value": "183" - }, - { - "begin": 2425, - "end": 2450, - "name": "PUSH [tag]", - "source": 1, - "value": "184" - }, - { - "begin": 2425, - "end": 2450, - "name": "PUSH", - "source": 1, - "value": "40" - }, - { - "begin": 2425, - "end": 2450, - "name": "DUP6", - "source": 1 - }, - { - "begin": 2425, - "end": 2450, - "name": "ADD", - "source": 1 - }, - { - "begin": 2425, - "end": 2450, - "name": "PUSH", - "source": 1, - "value": "20" - }, - { - "begin": 2425, - "end": 2450, - "name": "DUP7", - "source": 1 - }, - { - "begin": 2425, - "end": 2450, - "name": "ADD", - "source": 1 - }, - { - "begin": 2425, - "end": 2450, - "name": "PUSH [tag]", - "source": 1, - "value": "166" - }, - { - "begin": 2425, - "end": 2450, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 2425, - "end": 2450, - "name": "tag", - "source": 1, - "value": "184" - }, - { - "begin": 2425, - "end": 2450, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2462, - "end": 2469, - "name": "DUP10", - "source": 1 - }, - { - "begin": 2481, - "end": 2482, - "name": "DUP7", - "source": 1 - }, - { - "begin": 2494, - "end": 2515, - "name": "PUSH [tag]", - "source": 1, - "value": "185" - }, - { - "begin": 2494, - "end": 2513, - "name": "PUSH [tag]", - "source": 1, - "value": "186" - }, - { - "begin": 2494, - "end": 2515, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 2494, - "end": 2515, - "name": "tag", - "source": 1, - "value": "185" - }, - { - "begin": 2494, - "end": 2515, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 2401, - "end": 2413, - "name": "PUSH [tag]", - "source": 1, - "value": "187" - }, - { - "begin": 2401, - "end": 2525, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 2401, - "end": 2525, - "name": "tag", - "source": 1, - "value": "183" - }, - { - "begin": 2401, - "end": 2525, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1899, - "end": 2540, - "name": "POP", - "source": 1 - }, - { - "begin": 1899, - "end": 2540, - "name": "POP", - "source": 1 - }, - { - "begin": 1899, - "end": 2540, - "name": "POP", - "source": 1 - }, - { - "begin": 1894, - "end": 1897, - "name": "DUP1", - "source": 1 - }, - { - "begin": 1894, - "end": 1897, - "name": "DUP1", - "source": 1 - }, - { - "begin": 1894, - "end": 1897, - "name": "PUSH [tag]", - "source": 1, - "value": "188" - }, - { - "begin": 1894, - "end": 1897, - "name": "SWAP1", - "source": 1 - }, - { - "begin": 1894, - "end": 1897, - "name": "PUSH [tag]", - "source": 1, - "value": "189" - }, - { - "begin": 1894, - "end": 1897, - "jumpType": "[in]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 1894, - "end": 1897, - "name": "tag", - "source": 1, - "value": "188" - }, - { - "begin": 1894, - "end": 1897, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1894, - "end": 1897, - "name": "SWAP2", - "source": 1 - }, - { - "begin": 1894, - "end": 1897, - "name": "POP", - "source": 1 - }, - { - "begin": 1894, - "end": 1897, - "name": "POP", - "source": 1 - }, - { - "begin": 1864, - "end": 2540, - "name": "PUSH [tag]", - "source": 1, - "value": "158" - }, - { - "begin": 1864, - "end": 2540, - "name": "JUMP", - "source": 1 - }, - { - "begin": 1864, - "end": 2540, - "name": "tag", - "source": 1, - "value": "159" - }, - { - "begin": 1864, - "end": 2540, - "name": "JUMPDEST", - "source": 1 - }, - { - "begin": 1864, - "end": 2540, - "name": "POP", - "source": 1 - }, - { - "begin": 1799, - "end": 2544, - "name": "POP", - "source": 1 - }, - { - "begin": 1710, - "end": 2544, - "name": "POP", - "source": 1 - }, - { - "begin": 1710, - "end": 2544, - "name": "POP", - "source": 1 - }, - { - "begin": 1710, - "end": 2544, - "name": "POP", - "source": 1 - }, - { - "begin": 1710, - "end": 2544, - "jumpType": "[out]", - "name": "JUMP", - "source": 1 - }, - { - "begin": 8892, - "end": 9534, - "name": "tag", - "source": 13, - "value": "117" - }, - { - "begin": 8892, - "end": 9534, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 8996, - "end": 9013, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 8996, - "end": 9013, - "name": "DUP1", - "source": 13 - }, - { - "begin": 8996, - "end": 9013, - "name": "DUP1", - "source": 13 - }, - { - "begin": 8996, - "end": 9013, - "name": "DUP1", - "source": 13 - }, - { - "begin": 9131, - "end": 9172, - "name": "PUSH [tag]", - "source": 13, - "value": "191" - }, - { - "begin": 9145, - "end": 9155, - "name": "DUP8", - "source": 13 - }, - { - "begin": 9157, - "end": 9171, - "name": "PUSH [tag]", - "source": 13, - "value": "192" - }, - { - "begin": 9157, - "end": 9167, - "name": "DUP8", - "source": 13 - }, - { - "begin": 9168, - "end": 9169, - "name": "PUSH", - "source": 13, - "value": "6" - }, - { - "begin": 9157, - "end": 9167, - "name": "DUP2", - "source": 13 - }, - { - "begin": 9157, - "end": 9167, - "name": "DUP12", - "source": 13 - }, - { - "begin": 9157, - "end": 9171, - "name": "PUSH [tag]", - "source": 13, - "value": "193" - }, - { - "begin": 9157, - "end": 9171, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 9157, - "end": 9171, - "name": "tag", - "source": 13, - "value": "192" - }, - { - "begin": 9157, - "end": 9171, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 9131, - "end": 9144, - "name": "PUSH [tag]", - "source": 13, - "value": "194" - }, - { - "begin": 9131, - "end": 9172, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 9131, - "end": 9172, - "name": "tag", - "source": 13, - "value": "191" - }, - { - "begin": 9131, - "end": 9172, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 622, - "end": 631, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP2", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 1585, - "end": 1610, - "name": "DUP8", - "source": 18 - }, - { - "begin": 1585, - "end": 1610, - "name": "CALLDATALOAD", - "source": 18 - }, - { - "begin": 1626, - "end": 1629, - "name": "PUSH", - "source": 18, - "value": "F0" - }, - { - "begin": 1622, - "end": 1636, - "name": "SHR", - "source": 18 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "DUP2", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "DUP2", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "DUP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "DUP5", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP5", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 9379, - "end": 9380, - "name": "PUSH", - "source": 13, - "value": "2" - }, - { - "begin": 2034, - "end": 2057, - "name": "SWAP1", - "source": 18 - }, - { - "begin": 2034, - "end": 2057, - "name": "SWAP11", - "source": 18 - }, - { - "begin": 2034, - "end": 2057, - "name": "ADD", - "source": 18 - }, - { - "begin": 2021, - "end": 2058, - "name": "CALLDATALOAD", - "source": 18 - }, - { - "begin": 2074, - "end": 2077, - "name": "PUSH", - "source": 18, - "value": "E0" - }, - { - "begin": 2070, - "end": 2084, - "name": "SHR", - "source": 18 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "DUP2", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "SWAP9", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "SWAP2", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 1622, - "end": 1636, - "name": "SWAP1", - "source": 18 - }, - { - "begin": 1622, - "end": 1636, - "name": "SWAP10", - "source": 18 - }, - { - "begin": 9109, - "end": 9172, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 9109, - "end": 9172, - "name": "SWAP9", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 702, - "end": 718, - "name": "SWAP7", - "source": 20 - }, - { - "begin": 2070, - "end": 2084, - "name": "SWAP6", - "source": 18 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 8892, - "end": 9534, - "name": "SWAP4", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 8892, - "end": 9534, - "jumpType": "[out]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 648, - "end": 910, - "name": "tag", - "source": 15, - "value": "121" - }, - { - "begin": 648, - "end": 910, - "name": "JUMPDEST", - "source": 15 - }, - { - "begin": 752, - "end": 769, - "name": "PUSH", - "source": 15, - "value": "0" - }, - { - "begin": 752, - "end": 769, - "name": "DUP1", - "source": 15 - }, - { - "begin": 752, - "end": 769, - "name": "DUP1", - "source": 15 - }, - { - "begin": 752, - "end": 769, - "name": "DUP1", - "source": 15 - }, - { - "begin": 854, - "end": 905, - "name": "PUSH [tag]", - "source": 15, - "value": "203" - }, - { - "begin": 878, - "end": 888, - "name": "DUP8", - "source": 15 - }, - { - "begin": 890, - "end": 904, - "name": "PUSH [tag]", - "source": 15, - "value": "204" - }, - { - "begin": 890, - "end": 900, - "name": "DUP8", - "source": 15 - }, - { - "begin": 901, - "end": 902, - "name": "PUSH", - "source": 15, - "value": "1" - }, - { - "begin": 890, - "end": 900, - "name": "DUP2", - "source": 15 - }, - { - "begin": 890, - "end": 900, - "name": "DUP12", - "source": 15 - }, - { - "begin": 890, - "end": 904, - "name": "PUSH [tag]", - "source": 15, - "value": "193" - }, - { - "begin": 890, - "end": 904, - "jumpType": "[in]", - "name": "JUMP", - "source": 15 - }, - { - "begin": 890, - "end": 904, - "name": "tag", - "source": 15, - "value": "204" - }, - { - "begin": 890, - "end": 904, - "name": "JUMPDEST", - "source": 15 - }, - { - "begin": 854, - "end": 877, - "name": "PUSH [tag]", - "source": 15, - "value": "117" - }, - { - "begin": 854, - "end": 905, - "jumpType": "[in]", - "name": "JUMP", - "source": 15 - }, - { - "begin": 854, - "end": 905, - "name": "tag", - "source": 15, - "value": "203" - }, - { - "begin": 854, - "end": 905, - "name": "JUMPDEST", - "source": 15 - }, - { - "begin": 847, - "end": 905, - "name": "SWAP4", - "source": 15 - }, - { - "begin": 847, - "end": 905, - "name": "POP", - "source": 15 - }, - { - "begin": 847, - "end": 905, - "name": "SWAP4", - "source": 15 - }, - { - "begin": 847, - "end": 905, - "name": "POP", - "source": 15 - }, - { - "begin": 847, - "end": 905, - "name": "SWAP4", - "source": 15 - }, - { - "begin": 847, - "end": 905, - "name": "POP", - "source": 15 - }, - { - "begin": 847, - "end": 905, - "name": "SWAP4", - "source": 15 - }, - { - "begin": 847, - "end": 905, - "name": "POP", - "source": 15 - }, - { - "begin": 648, - "end": 910, - "name": "SWAP4", - "source": 15 - }, - { - "begin": 648, - "end": 910, - "name": "POP", - "source": 15 - }, - { - "begin": 648, - "end": 910, - "name": "SWAP4", - "source": 15 - }, - { - "begin": 648, - "end": 910, - "name": "POP", - "source": 15 - }, - { - "begin": 648, - "end": 910, - "name": "SWAP4", - "source": 15 - }, - { - "begin": 648, - "end": 910, - "name": "POP", - "source": 15 - }, - { - "begin": 648, - "end": 910, - "name": "SWAP4", - "source": 15 - }, - { - "begin": 648, - "end": 910, - "jumpType": "[out]", - "name": "JUMP", - "source": 15 - }, - { - "begin": 404, - "end": 617, - "name": "tag", - "source": 16, - "value": "124" - }, - { - "begin": 404, - "end": 617, - "name": "JUMPDEST", - "source": 16 - }, - { - "begin": 502, - "end": 606, - "name": "PUSH", - "source": 16, - "value": "40" - }, - { - "begin": 502, - "end": 606, - "name": "MLOAD", - "source": 16 - }, - { - "begin": 12792, - "end": 12858, - "name": "PUSH", - "source": 22, - "value": "1901000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 502, - "end": 606, - "name": "PUSH", - "source": 16, - "value": "20" - }, - { - "begin": 502, - "end": 606, - "name": "DUP3", - "source": 16 - }, - { - "begin": 502, - "end": 606, - "name": "ADD", - "source": 16 - }, - { - "begin": 12780, - "end": 12859, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 463, - "end": 470, - "name": "PUSH", - "source": 16, - "value": "0" - }, - { - "begin": 12875, - "end": 12886, - "name": "PUSH", - "source": 22, - "value": "22" - }, - { - "begin": 12875, - "end": 12886, - "name": "DUP3", - "source": 22 - }, - { - "begin": 12875, - "end": 12886, - "name": "ADD", - "source": 22 - }, - { - "begin": 12868, - "end": 12895, - "name": "DUP2", - "source": 22 - }, - { - "begin": 12868, - "end": 12895, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 12868, - "end": 12895, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 12946, - "end": 13012, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000" - }, - { - "begin": 576, - "end": 580, - "name": "ADDRESS", - "source": 16 - }, - { - "begin": 12933, - "end": 12935, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 12929, - "end": 12944, - "name": "SHL", - "source": 22 - }, - { - "begin": 12925, - "end": 13013, - "name": "AND", - "source": 22 - }, - { - "begin": 12911, - "end": 12923, - "name": "PUSH", - "source": 22, - "value": "42" - }, - { - "begin": 12911, - "end": 12923, - "name": "DUP4", - "source": 22 - }, - { - "begin": 12911, - "end": 12923, - "name": "ADD", - "source": 22 - }, - { - "begin": 12904, - "end": 13014, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 13030, - "end": 13042, - "name": "PUSH", - "source": 22, - "value": "56" - }, - { - "begin": 13030, - "end": 13042, - "name": "DUP3", - "source": 22 - }, - { - "begin": 13030, - "end": 13042, - "name": "ADD", - "source": 22 - }, - { - "begin": 13023, - "end": 13051, - "name": "DUP4", - "source": 22 - }, - { - "begin": 13023, - "end": 13051, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 13023, - "end": 13051, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 463, - "end": 470, - "name": "SWAP1", - "source": 16 - }, - { - "begin": 13067, - "end": 13079, - "name": "PUSH", - "source": 22, - "value": "76" - }, - { - "begin": 13067, - "end": 13079, - "name": "ADD", - "source": 22 - }, - { - "begin": 502, - "end": 606, - "name": "PUSH [tag]", - "source": 16, - "value": "155" - }, - { - "begin": 12494, - "end": 13085, - "name": "JUMP", - "source": 22 - }, - { - "begin": 2320, - "end": 4379, - "name": "tag", - "source": 14, - "value": "128" - }, - { - "begin": 2320, - "end": 4379, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 2428, - "end": 2445, - "name": "PUSH", - "source": 14, - "value": "0" - }, - { - "begin": 2428, - "end": 2445, - "name": "DUP1", - "source": 14 - }, - { - "begin": 2428, - "end": 2445, - "name": "DUP1", - "source": 14 - }, - { - "begin": 2428, - "end": 2445, - "name": "DUP1", - "source": 14 - }, - { - "begin": 2428, - "end": 2445, - "name": "DUP1", - "source": 14 - }, - { - "begin": 3378, - "end": 3392, - "name": "PUSH", - "source": 19, - "value": "4" - }, - { - "begin": 2563, - "end": 2564, - "name": "PUSH", - "source": 14, - "value": "1" - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP9", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "ADD", - "source": 19 - }, - { - "begin": 3277, - "end": 3316, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 3336, - "end": 3339, - "name": "PUSH", - "source": 19, - "value": "E8" - }, - { - "begin": 3332, - "end": 3346, - "name": "SHR", - "source": 19 - }, - { - "begin": 2428, - "end": 2445, - "name": "DUP3", - "source": 14 - }, - { - "begin": 2768, - "end": 2784, - "name": "PUSH [tag]", - "source": 14, - "value": "210" - }, - { - "begin": 3378, - "end": 3392, - "name": "DUP4", - "source": 19 - }, - { - "begin": 3332, - "end": 3346, - "name": "DUP4", - "source": 19 - }, - { - "begin": 2768, - "end": 2784, - "name": "PUSH [tag]", - "source": 14, - "value": "211" - }, - { - "begin": 2768, - "end": 2784, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 2768, - "end": 2784, - "name": "tag", - "source": 14, - "value": "210" - }, - { - "begin": 2768, - "end": 2784, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 2750, - "end": 2784, - "name": "SWAP1", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2883, - "end": 2955, - "name": "PUSH [tag]", - "source": 14, - "value": "212" - }, - { - "begin": 2908, - "end": 2915, - "name": "DUP12", - "source": 14 - }, - { - "begin": 2923, - "end": 2949, - "name": "PUSH [tag]", - "source": 14, - "value": "58" - }, - { - "begin": 2750, - "end": 2784, - "name": "DUP4", - "source": 14 - }, - { - "begin": 2934, - "end": 2940, - "name": "DUP7", - "source": 14 - }, - { - "begin": 2923, - "end": 2933, - "name": "DUP14", - "source": 14 - }, - { - "begin": 2923, - "end": 2933, - "name": "DUP16", - "source": 14 - }, - { - "begin": 2923, - "end": 2949, - "name": "PUSH [tag]", - "source": 14, - "value": "193" - }, - { - "begin": 2923, - "end": 2949, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 2883, - "end": 2955, - "name": "tag", - "source": 14, - "value": "212" - }, - { - "begin": 2883, - "end": 2955, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 2791, - "end": 2955, - "name": "SWAP4", - "source": 14 - }, - { - "begin": 2791, - "end": 2955, - "name": "SWAP12", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2791, - "end": 2955, - "name": "SWAP2", - "source": 14 - }, - { - "begin": 2791, - "end": 2955, - "name": "SWAP10", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2791, - "end": 2955, - "name": "SWAP8", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2791, - "end": 2955, - "name": "SWAP6", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2791, - "end": 2955, - "name": "SWAP4", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2966, - "end": 2984, - "name": "DUP8", - "source": 14 - }, - { - "begin": 2966, - "end": 2984, - "name": "DUP8", - "source": 14 - }, - { - "begin": 2966, - "end": 2984, - "name": "LT", - "source": 14 - }, - { - "begin": 2962, - "end": 3080, - "name": "ISZERO", - "source": 14 - }, - { - "begin": 2962, - "end": 3080, - "name": "PUSH [tag]", - "source": 14, - "value": "214" - }, - { - "begin": 2962, - "end": 3080, - "name": "JUMPI", - "source": 14 - }, - { - "begin": 3027, - "end": 3053, - "name": "PUSH [tag]", - "source": 14, - "value": "215" - }, - { - "begin": 3045, - "end": 3052, - "name": "DUP2", - "source": 14 - }, - { - "begin": 3038, - "end": 3044, - "name": "DUP5", - "source": 14 - }, - { - "begin": 3027, - "end": 3037, - "name": "DUP12", - "source": 14 - }, - { - "begin": 3027, - "end": 3037, - "name": "DUP14", - "source": 14 - }, - { - "begin": 3027, - "end": 3053, - "name": "PUSH [tag]", - "source": 14, - "value": "193" - }, - { - "begin": 3027, - "end": 3053, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 3027, - "end": 3053, - "name": "tag", - "source": 14, - "value": "215" - }, - { - "begin": 3027, - "end": 3053, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 3055, - "end": 3064, - "name": "DUP10", - "source": 14 - }, - { - "begin": 3066, - "end": 3072, - "name": "DUP10", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "PUSH", - "source": 14, - "value": "40" - }, - { - "begin": 3001, - "end": 3073, - "name": "MLOAD", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "PUSH", - "source": 14, - "value": "B006ABA000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 3001, - "end": 3073, - "name": "DUP2", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "MSTORE", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "PUSH", - "source": 14, - "value": "4" - }, - { - "begin": 3001, - "end": 3073, - "name": "ADD", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "PUSH [tag]", - "source": 14, - "value": "93" - }, - { - "begin": 3001, - "end": 3073, - "name": "SWAP5", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "SWAP4", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "SWAP3", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "SWAP2", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "SWAP1", - "source": 14 - }, - { - "begin": 3001, - "end": 3073, - "name": "PUSH [tag]", - "source": 14, - "value": "217" - }, - { - "begin": 3001, - "end": 3073, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 2962, - "end": 3080, - "name": "tag", - "source": 14, - "value": "214" - }, - { - "begin": 2962, - "end": 3080, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 3095, - "end": 3102, - "name": "DUP1", - "source": 14 - }, - { - "begin": 3086, - "end": 3102, - "name": "SWAP3", - "source": 14 - }, - { - "begin": 3086, - "end": 3102, - "name": "POP", - "source": 14 - }, - { - "begin": 3283, - "end": 4375, - "name": "tag", - "source": 14, - "value": "218" - }, - { - "begin": 3283, - "end": 4375, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 3290, - "end": 3316, - "name": "DUP9", - "source": 14 - }, - { - "begin": 3290, - "end": 3316, - "name": "DUP4", - "source": 14 - }, - { - "begin": 3290, - "end": 3316, - "name": "LT", - "source": 14 - }, - { - "begin": 3283, - "end": 4375, - "name": "ISZERO", - "source": 14 - }, - { - "begin": 3283, - "end": 4375, - "name": "PUSH [tag]", - "source": 14, - "value": "219" - }, - { - "begin": 3283, - "end": 4375, - "name": "JUMPI", - "source": 14 - }, - { - "begin": 3390, - "end": 3391, - "name": "PUSH", - "source": 19, - "value": "3" - }, - { - "begin": 3378, - "end": 3392, - "name": "DUP4", - "source": 19 - }, - { - "begin": 3378, - "end": 3392, - "name": "ADD", - "source": 19 - }, - { - "begin": 3378, - "end": 3392, - "name": "SWAP3", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP11", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "ADD", - "source": 19 - }, - { - "begin": 3277, - "end": 3316, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 3336, - "end": 3339, - "name": "PUSH", - "source": 19, - "value": "E8" - }, - { - "begin": 3332, - "end": 3346, - "name": "SHR", - "source": 19 - }, - { - "begin": 3332, - "end": 3346, - "name": "SWAP2", - "source": 19 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3444, - "end": 3460, - "name": "PUSH [tag]", - "source": 14, - "value": "221" - }, - { - "begin": 3378, - "end": 3392, - "name": "DUP4", - "source": 19 - }, - { - "begin": 3332, - "end": 3346, - "name": "DUP4", - "source": 19 - }, - { - "begin": 3444, - "end": 3460, - "name": "PUSH [tag]", - "source": 14, - "value": "211" - }, - { - "begin": 3444, - "end": 3460, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 3444, - "end": 3460, - "name": "tag", - "source": 14, - "value": "221" - }, - { - "begin": 3444, - "end": 3460, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 3434, - "end": 3460, - "name": "SWAP1", - "source": 14 - }, - { - "begin": 3434, - "end": 3460, - "name": "POP", - "source": 14 - }, - { - "begin": 3469, - "end": 3491, - "name": "PUSH", - "source": 14, - "value": "0" - }, - { - "begin": 3687, - "end": 3792, - "name": "PUSH [tag]", - "source": 14, - "value": "222" - }, - { - "begin": 3714, - "end": 3748, - "name": "PUSH [tag]", - "source": 14, - "value": "223" - }, - { - "begin": 3738, - "end": 3747, - "name": "DUP9", - "source": 14 - }, - { - "begin": 3714, - "end": 3737, - "name": "PUSH [tag]", - "source": 14, - "value": "224" - }, - { - "begin": 3714, - "end": 3748, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 3714, - "end": 3748, - "name": "tag", - "source": 14, - "value": "223" - }, - { - "begin": 3714, - "end": 3748, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 3758, - "end": 3768, - "name": "DUP13", - "source": 14 - }, - { - "begin": 3758, - "end": 3768, - "name": "DUP13", - "source": 14 - }, - { - "begin": 3769, - "end": 3775, - "name": "DUP8", - "source": 14 - }, - { - "begin": 3758, - "end": 3784, - "name": "SWAP1", - "source": 14 - }, - { - "begin": 3776, - "end": 3783, - "name": "DUP7", - "source": 14 - }, - { - "begin": 3758, - "end": 3784, - "name": "SWAP3", - "source": 14 - }, - { - "begin": 3758, - "end": 3784, - "name": "PUSH [tag]", - "source": 14, - "value": "58" - }, - { - "begin": 3758, - "end": 3784, - "name": "SWAP4", - "source": 14 - }, - { - "begin": 3758, - "end": 3784, - "name": "SWAP3", - "source": 14 - }, - { - "begin": 3758, - "end": 3784, - "name": "SWAP2", - "source": 14 - }, - { - "begin": 3758, - "end": 3784, - "name": "SWAP1", - "source": 14 - }, - { - "begin": 3758, - "end": 3784, - "name": "PUSH [tag]", - "source": 14, - "value": "193" - }, - { - "begin": 3758, - "end": 3784, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 3687, - "end": 3792, - "name": "tag", - "source": 14, - "value": "222" - }, - { - "begin": 3687, - "end": 3792, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 3500, - "end": 3792, - "name": "SWAP4", - "source": 14 - }, - { - "begin": 3500, - "end": 3792, - "name": "SWAP13", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3500, - "end": 3792, - "name": "SWAP2", - "source": 14 - }, - { - "begin": 3500, - "end": 3792, - "name": "SWAP11", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3500, - "end": 3792, - "name": "SWAP9", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3500, - "end": 3792, - "name": "SWAP1", - "source": 14 - }, - { - "begin": 3500, - "end": 3792, - "name": "SWAP2", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3833, - "end": 3851, - "name": "DUP9", - "source": 14 - }, - { - "begin": 3833, - "end": 3851, - "name": "DUP9", - "source": 14 - }, - { - "begin": 3833, - "end": 3851, - "name": "LT", - "source": 14 - }, - { - "begin": 3829, - "end": 3951, - "name": "ISZERO", - "source": 14 - }, - { - "begin": 3829, - "end": 3951, - "name": "PUSH [tag]", - "source": 14, - "value": "226" - }, - { - "begin": 3829, - "end": 3951, - "name": "JUMPI", - "source": 14 - }, - { - "begin": 3896, - "end": 3922, - "name": "PUSH [tag]", - "source": 14, - "value": "227" - }, - { - "begin": 3914, - "end": 3921, - "name": "DUP3", - "source": 14 - }, - { - "begin": 3907, - "end": 3913, - "name": "DUP6", - "source": 14 - }, - { - "begin": 3896, - "end": 3906, - "name": "DUP13", - "source": 14 - }, - { - "begin": 3896, - "end": 3906, - "name": "DUP15", - "source": 14 - }, - { - "begin": 3896, - "end": 3922, - "name": "PUSH [tag]", - "source": 14, - "value": "193" - }, - { - "begin": 3896, - "end": 3922, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 3896, - "end": 3922, - "name": "tag", - "source": 14, - "value": "227" - }, - { - "begin": 3896, - "end": 3922, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 3924, - "end": 3933, - "name": "DUP11", - "source": 14 - }, - { - "begin": 3935, - "end": 3941, - "name": "DUP11", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "PUSH", - "source": 14, - "value": "40" - }, - { - "begin": 3870, - "end": 3942, - "name": "MLOAD", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "PUSH", - "source": 14, - "value": "B006ABA000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 3870, - "end": 3942, - "name": "DUP2", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "MSTORE", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "PUSH", - "source": 14, - "value": "4" - }, - { - "begin": 3870, - "end": 3942, - "name": "ADD", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "PUSH [tag]", - "source": 14, - "value": "93" - }, - { - "begin": 3870, - "end": 3942, - "name": "SWAP5", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "SWAP4", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "SWAP3", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "SWAP2", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "SWAP1", - "source": 14 - }, - { - "begin": 3870, - "end": 3942, - "name": "PUSH [tag]", - "source": 14, - "value": "217" - }, - { - "begin": 3870, - "end": 3942, - "jumpType": "[in]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 3829, - "end": 3951, - "name": "tag", - "source": 14, - "value": "226" - }, - { - "begin": 3829, - "end": 3951, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 4216, - "end": 4226, - "name": "DUP5", - "source": 14 - }, - { - "begin": 4198, - "end": 4212, - "name": "DUP2", - "source": 14 - }, - { - "begin": 4198, - "end": 4226, - "name": "LT", - "source": 14 - }, - { - "begin": 4194, - "end": 4309, - "name": "PUSH [tag]", - "source": 14, - "value": "229" - }, - { - "begin": 4194, - "end": 4309, - "name": "JUMPI", - "source": 14 - }, - { - "begin": 4245, - "end": 4300, - "name": "PUSH", - "source": 14, - "value": "40" - }, - { - "begin": 4245, - "end": 4300, - "name": "MLOAD", - "source": 14 - }, - { - "begin": 4245, - "end": 4300, - "name": "PUSH", - "source": 14, - "value": "37DAF62B00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 4245, - "end": 4300, - "name": "DUP2", - "source": 14 - }, - { - "begin": 4245, - "end": 4300, - "name": "MSTORE", - "source": 14 - }, - { - "begin": 4245, - "end": 4300, - "name": "PUSH", - "source": 14, - "value": "4" - }, - { - "begin": 4245, - "end": 4300, - "name": "DUP2", - "source": 14 - }, - { - "begin": 4245, - "end": 4300, - "name": "ADD", - "source": 14 - }, - { - "begin": 16193, - "end": 16218, - "name": "DUP3", - "source": 22 - }, - { - "begin": 16193, - "end": 16218, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 16193, - "end": 16218, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 16234, - "end": 16252, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 16234, - "end": 16252, - "name": "DUP2", - "source": 22 - }, - { - "begin": 16234, - "end": 16252, - "name": "ADD", - "source": 22 - }, - { - "begin": 16227, - "end": 16261, - "name": "DUP7", - "source": 22 - }, - { - "begin": 16227, - "end": 16261, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 16227, - "end": 16261, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 16166, - "end": 16184, - "name": "PUSH", - "source": 22, - "value": "44" - }, - { - "begin": 16166, - "end": 16184, - "name": "ADD", - "source": 22 - }, - { - "begin": 4245, - "end": 4300, - "name": "PUSH [tag]", - "source": 14, - "value": "93" - }, - { - "begin": 16019, - "end": 16267, - "name": "JUMP", - "source": 22 - }, - { - "begin": 4194, - "end": 4309, - "name": "tag", - "source": 14, - "value": "229" - }, - { - "begin": 4194, - "end": 4309, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 4330, - "end": 4344, - "name": "SWAP4", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4361, - "end": 4368, - "name": "SWAP2", - "source": 14 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4361, - "end": 4368, - "name": "DUP2", - "source": 14 - }, - { - "begin": 3283, - "end": 4375, - "name": "PUSH [tag]", - "source": 14, - "value": "218" - }, - { - "begin": 3283, - "end": 4375, - "name": "JUMP", - "source": 14 - }, - { - "begin": 3283, - "end": 4375, - "name": "tag", - "source": 14, - "value": "219" - }, - { - "begin": 3283, - "end": 4375, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 2540, - "end": 4379, - "name": "POP", - "source": 14 - }, - { - "begin": 2540, - "end": 4379, - "name": "POP", - "source": 14 - }, - { - "begin": 2540, - "end": 4379, - "name": "POP", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "SWAP4", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "SWAP8", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "SWAP3", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "SWAP7", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "POP", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "SWAP4", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "POP", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "SWAP4", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "name": "POP", - "source": 14 - }, - { - "begin": 2320, - "end": 4379, - "jumpType": "[out]", - "name": "JUMP", - "source": 14 - }, - { - "begin": 490, - "end": 677, - "name": "tag", - "source": 9, - "value": "133" - }, - { - "begin": 490, - "end": 677, - "name": "JUMPDEST", - "source": 9 - }, - { - "begin": 568, - "end": 579, - "name": "PUSH", - "source": 9, - "value": "0" - }, - { - "begin": 587, - "end": 598, - "name": "DUP1", - "source": 9 - }, - { - "begin": 622, - "end": 626, - "name": "DUP4", - "source": 9 - }, - { - "begin": 628, - "end": 635, - "name": "DUP4", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "40" - }, - { - "begin": 611, - "end": 636, - "name": "MLOAD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "20" - }, - { - "begin": 611, - "end": 636, - "name": "ADD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH [tag]", - "source": 9, - "value": "233" - }, - { - "begin": 611, - "end": 636, - "name": "SWAP3", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SWAP2", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SWAP1", - "source": 9 - }, - { - "begin": 16193, - "end": 16218, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 16193, - "end": 16218, - "name": "DUP3", - "source": 22 - }, - { - "begin": 16193, - "end": 16218, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 16249, - "end": 16251, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 16234, - "end": 16252, - "name": "DUP3", - "source": 22 - }, - { - "begin": 16234, - "end": 16252, - "name": "ADD", - "source": 22 - }, - { - "begin": 16227, - "end": 16261, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 16181, - "end": 16183, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 16166, - "end": 16184, - "name": "ADD", - "source": 22 - }, - { - "begin": 16166, - "end": 16184, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 16019, - "end": 16267, - "name": "JUMP", - "source": 22 - }, - { - "begin": 611, - "end": 636, - "name": "tag", - "source": 9, - "value": "233" - }, - { - "begin": 611, - "end": 636, - "name": "JUMPDEST", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "40" - }, - { - "begin": 611, - "end": 636, - "name": "DUP1", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "MLOAD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 611, - "end": 636, - "name": "DUP2", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "DUP5", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SUB", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "ADD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "DUP2", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "MSTORE", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SWAP2", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SWAP1", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "MSTORE", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "DUP1", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "MLOAD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "20" - }, - { - "begin": 601, - "end": 637, - "name": "SWAP1", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "SWAP2", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "ADD", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "KECCAK256", - "source": 9 - }, - { - "begin": 661, - "end": 671, - "name": "SLOAD", - "source": 9 - }, - { - "begin": 661, - "end": 671, - "name": "SWAP5", - "source": 9 - }, - { - "begin": 490, - "end": 677, - "name": "SWAP4", - "source": 9 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 490, - "end": 677, - "jumpType": "[out]", - "name": "JUMP", - "source": 9 - }, - { - "begin": 4140, - "end": 4371, - "name": "tag", - "source": 3, - "value": "147" - }, - { - "begin": 4140, - "end": 4371, - "name": "JUMPDEST", - "source": 3 - }, - { - "begin": 4226, - "end": 4230, - "name": "PUSH", - "source": 3, - "value": "0" - }, - { - "begin": 4242, - "end": 4288, - "name": "PUSH", - "source": 3, - "value": "E4A77BBC00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 4242, - "end": 4288, - "name": "PUSH", - "source": 3, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 4242, - "end": 4288, - "name": "DUP4", - "source": 3 - }, - { - "begin": 4242, - "end": 4288, - "name": "AND", - "source": 3 - }, - { - "begin": 4242, - "end": 4288, - "name": "ADD", - "source": 3 - }, - { - "begin": 4238, - "end": 4316, - "name": "PUSH [tag]", - "source": 3, - "value": "236" - }, - { - "begin": 4238, - "end": 4316, - "name": "JUMPI", - "source": 3 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4305, - "end": 4309, - "name": "PUSH", - "source": 3, - "value": "1" - }, - { - "begin": 4305, - "end": 4309, - "name": "SWAP2", - "source": 3 - }, - { - "begin": 4140, - "end": 4371, - "name": "SWAP1", - "source": 3 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4140, - "end": 4371, - "jumpType": "[out]", - "name": "JUMP", - "source": 3 - }, - { - "begin": 4238, - "end": 4316, - "name": "tag", - "source": 3, - "value": "236" - }, - { - "begin": 4238, - "end": 4316, - "name": "JUMPDEST", - "source": 3 - }, - { - "begin": 4329, - "end": 4366, - "name": "PUSH [tag]", - "source": 3, - "value": "80" - }, - { - "begin": 4353, - "end": 4365, - "name": "DUP3", - "source": 3 - }, - { - "begin": 4329, - "end": 4352, - "name": "PUSH [tag]", - "source": 3, - "value": "238" - }, - { - "begin": 4329, - "end": 4366, - "jumpType": "[in]", - "name": "JUMP", - "source": 3 - }, - { - "begin": 1525, - "end": 1878, - "name": "tag", - "source": 20, - "value": "179" - }, - { - "begin": 1525, - "end": 1878, - "name": "JUMPDEST", - "source": 20 - }, - { - "begin": 1640, - "end": 1646, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 1688, - "end": 1692, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 1682, - "end": 1693, - "name": "MLOAD", - "source": 20 - }, - { - "begin": 1732, - "end": 1744, - "name": "DUP3", - "source": 20 - }, - { - "begin": 1718, - "end": 1730, - "name": "DUP5", - "source": 20 - }, - { - "begin": 1713, - "end": 1716, - "name": "DUP3", - "source": 20 - }, - { - "begin": 1700, - "end": 1745, - "name": "CALLDATACOPY", - "source": 20 - }, - { - "begin": 1859, - "end": 1860, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 1848, - "end": 1849, - "name": "DUP1", - "source": 20 - }, - { - "begin": 1826, - "end": 1838, - "name": "DUP5", - "source": 20 - }, - { - "begin": 1813, - "end": 1816, - "name": "DUP4", - "source": 20 - }, - { - "begin": 1799, - "end": 1803, - "name": "DUP10", - "source": 20 - }, - { - "begin": 1786, - "end": 1789, - "name": "DUP12", - "source": 20 - }, - { - "begin": 1772, - "end": 1776, - "name": "DUP11", - "source": 20 - }, - { - "begin": 1758, - "end": 1868, - "name": "CALL", - "source": 20 - }, - { - "begin": 1753, - "end": 1868, - "name": "SWAP8", - "source": 20 - }, - { - "begin": 1525, - "end": 1878, - "name": "SWAP7", - "source": 20 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1525, - "end": 1878, - "jumpType": "[out]", - "name": "JUMP", - "source": 20 - }, - { - "begin": 852, - "end": 1123, - "name": "tag", - "source": 20, - "value": "186" - }, - { - "begin": 852, - "end": 1123, - "name": "JUMPDEST", - "source": 20 - }, - { - "begin": 897, - "end": 911, - "name": "PUSH", - "source": 20, - "value": "60" - }, - { - "begin": 948, - "end": 964, - "name": "RETURNDATASIZE", - "source": 20 - }, - { - "begin": 982, - "end": 986, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 976, - "end": 987, - "name": "MLOAD", - "source": 20 - }, - { - "begin": 971, - "end": 987, - "name": "SWAP2", - "source": 20 - }, - { - "begin": 971, - "end": 987, - "name": "POP", - "source": 20 - }, - { - "begin": 1014, - "end": 1016, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 1011, - "end": 1012, - "name": "DUP3", - "source": 20 - }, - { - "begin": 1007, - "end": 1017, - "name": "ADD", - "source": 20 - }, - { - "begin": 1048, - "end": 1052, - "name": "DUP2", - "source": 20 - }, - { - "begin": 1041, - "end": 1046, - "name": "DUP2", - "source": 20 - }, - { - "begin": 1037, - "end": 1053, - "name": "ADD", - "source": 20 - }, - { - "begin": 1031, - "end": 1035, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 1024, - "end": 1054, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 1071, - "end": 1075, - "name": "DUP2", - "source": 20 - }, - { - "begin": 1068, - "end": 1069, - "name": "DUP4", - "source": 20 - }, - { - "begin": 1061, - "end": 1076, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 1108, - "end": 1112, - "name": "DUP2", - "source": 20 - }, - { - "begin": 1105, - "end": 1106, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 1098, - "end": 1103, - "name": "DUP3", - "source": 20 - }, - { - "begin": 1083, - "end": 1113, - "name": "RETURNDATACOPY", - "source": 20 - }, - { - "begin": 1083, - "end": 1113, - "name": "POP", - "source": 20 - }, - { - "begin": 1083, - "end": 1113, - "name": "POP", - "source": 20 - }, - { - "begin": 852, - "end": 1123, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 852, - "end": 1123, - "jumpType": "[out]", - "name": "JUMP", - "source": 20 - }, - { - "begin": 3644, - "end": 3930, - "name": "tag", - "source": 3, - "value": "187" - }, - { - "begin": 3644, - "end": 3930, - "name": "JUMPDEST", - "source": 3 - }, - { - "begin": 3781, - "end": 3795, - "name": "DUP4", - "source": 3 - }, - { - "begin": 3777, - "end": 3926, - "name": "ISZERO", - "source": 3 - }, - { - "begin": 3777, - "end": 3926, - "name": "PUSH [tag]", - "source": 3, - "value": "243" - }, - { - "begin": 3777, - "end": 3926, - "name": "JUMPI", - "source": 3 - }, - { - "begin": 3849, - "end": 3856, - "name": "DUP1", - "source": 3 - }, - { - "begin": 3843, - "end": 3857, - "name": "MLOAD", - "source": 3 - }, - { - "begin": 3836, - "end": 3840, - "name": "PUSH", - "source": 3, - "value": "20" - }, - { - "begin": 3827, - "end": 3834, - "name": "DUP3", - "source": 3 - }, - { - "begin": 3823, - "end": 3841, - "name": "ADD", - "source": 3 - }, - { - "begin": 3816, - "end": 3858, - "name": "REVERT", - "source": 3 - }, - { - "begin": 3777, - "end": 3926, - "name": "tag", - "source": 3, - "value": "243" - }, - { - "begin": 3777, - "end": 3926, - "name": "JUMPDEST", - "source": 3 - }, - { - "begin": 3894, - "end": 3901, - "name": "DUP3", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "PUSH", - "source": 3, - "value": "AB46C69F7F32E1BF09B0725853DA82A211E5402A0600296AB499A2FB5EA3B419" - }, - { - "begin": 3903, - "end": 3909, - "name": "DUP4", - "source": 3 - }, - { - "begin": 3911, - "end": 3918, - "name": "DUP4", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "PUSH", - "source": 3, - "value": "40" - }, - { - "begin": 3885, - "end": 3919, - "name": "MLOAD", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "PUSH [tag]", - "source": 3, - "value": "245" - }, - { - "begin": 3885, - "end": 3919, - "name": "SWAP3", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "SWAP2", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "SWAP1", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "PUSH [tag]", - "source": 3, - "value": "246" - }, - { - "begin": 3885, - "end": 3919, - "jumpType": "[in]", - "name": "JUMP", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "tag", - "source": 3, - "value": "245" - }, - { - "begin": 3885, - "end": 3919, - "name": "JUMPDEST", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "PUSH", - "source": 3, - "value": "40" - }, - { - "begin": 3885, - "end": 3919, - "name": "MLOAD", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "DUP1", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "SWAP2", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "SUB", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "SWAP1", - "source": 3 - }, - { - "begin": 3885, - "end": 3919, - "name": "LOG2", - "source": 3 - }, - { - "begin": 3644, - "end": 3930, - "name": "POP", - "source": 3 - }, - { - "begin": 3644, - "end": 3930, - "name": "POP", - "source": 3 - }, - { - "begin": 3644, - "end": 3930, - "name": "POP", - "source": 3 - }, - { - "begin": 3644, - "end": 3930, - "name": "POP", - "source": 3 - }, - { - "begin": 3644, - "end": 3930, - "jumpType": "[out]", - "name": "JUMP", - "source": 3 - }, - { - "begin": 3525, - "end": 8233, - "name": "tag", - "source": 13, - "value": "194" - }, - { - "begin": 3525, - "end": 8233, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 3635, - "end": 3649, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 3655, - "end": 3667, - "name": "DUP1", - "source": 13 - }, - { - "begin": 3696, - "end": 3710, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 3765, - "end": 8223, - "name": "tag", - "source": 13, - "value": "248" - }, - { - "begin": 3765, - "end": 8223, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 3772, - "end": 3798, - "name": "DUP4", - "source": 13 - }, - { - "begin": 3772, - "end": 3798, - "name": "DUP2", - "source": 13 - }, - { - "begin": 3772, - "end": 3798, - "name": "LT", - "source": 13 - }, - { - "begin": 3765, - "end": 8223, - "name": "ISZERO", - "source": 13 - }, - { - "begin": 3765, - "end": 8223, - "name": "PUSH [tag]", - "source": 13, - "value": "249" - }, - { - "begin": 3765, - "end": 8223, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 1475, - "end": 1476, - "name": "PUSH", - "source": 19, - "value": "1" - }, - { - "begin": 1463, - "end": 1477, - "name": "DUP2", - "source": 19 - }, - { - "begin": 1463, - "end": 1477, - "name": "ADD", - "source": 19 - }, - { - "begin": 1463, - "end": 1477, - "name": "SWAP1", - "source": 19 - }, - { - "begin": 1390, - "end": 1415, - "name": "DUP6", - "source": 19 - }, - { - "begin": 1390, - "end": 1415, - "name": "ADD", - "source": 19 - }, - { - "begin": 1377, - "end": 1416, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 1432, - "end": 1435, - "name": "PUSH", - "source": 19, - "value": "F8" - }, - { - "begin": 1428, - "end": 1442, - "name": "SHR", - "source": 19 - }, - { - "begin": 3923, - "end": 3943, - "name": "PUSH", - "source": 13, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 3923, - "end": 3943, - "name": "DUP2", - "source": 13 - }, - { - "begin": 3923, - "end": 3943, - "name": "ADD", - "source": 13 - }, - { - "begin": 3919, - "end": 4321, - "name": "PUSH [tag]", - "source": 13, - "value": "252" - }, - { - "begin": 3919, - "end": 4321, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 2205, - "end": 2207, - "name": "PUSH", - "source": 19, - "value": "15" - }, - { - "begin": 2193, - "end": 2208, - "name": "DUP3", - "source": 19 - }, - { - "begin": 2193, - "end": 2208, - "name": "ADD", - "source": 19 - }, - { - "begin": 2193, - "end": 2208, - "name": "SWAP2", - "source": 19 - }, - { - "begin": 2046, - "end": 2071, - "name": "DUP7", - "source": 19 - }, - { - "begin": 2046, - "end": 2071, - "name": "ADD", - "source": 19 - }, - { - "begin": 2033, - "end": 2072, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 2088, - "end": 2091, - "name": "PUSH", - "source": 19, - "value": "F8" - }, - { - "begin": 2084, - "end": 2098, - "name": "DUP2", - "source": 19 - }, - { - "begin": 2084, - "end": 2098, - "name": "SWAP1", - "source": 19 - }, - { - "begin": 2084, - "end": 2098, - "name": "SHR", - "source": 19 - }, - { - "begin": 2084, - "end": 2098, - "name": "SWAP1", - "source": 19 - }, - { - "begin": 2118, - "end": 2120, - "name": "PUSH", - "source": 19, - "value": "58" - }, - { - "begin": 2114, - "end": 2127, - "name": "SHR", - "source": 19 - }, - { - "begin": 2129, - "end": 2171, - "name": "PUSH", - "source": 19, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 2110, - "end": 2172, - "name": "DUP2", - "source": 19 - }, - { - "begin": 2110, - "end": 2172, - "name": "AND", - "source": 19 - }, - { - "begin": 2110, - "end": 2172, - "name": "SWAP1", - "source": 19 - }, - { - "begin": 1873, - "end": 1896, - "name": "PUSH", - "source": 13, - "value": "FF0000000000000000000000000000000000000000" - }, - { - "begin": 1873, - "end": 1896, - "name": "AND", - "source": 13 - }, - { - "begin": 1873, - "end": 1922, - "name": "DUP2", - "source": 13 - }, - { - "begin": 1873, - "end": 1922, - "name": "OR", - "source": 13 - }, - { - "begin": 4231, - "end": 4235, - "name": "DUP6", - "source": 13 - }, - { - "begin": 4231, - "end": 4290, - "name": "PUSH [tag]", - "source": 13, - "value": "257" - }, - { - "begin": 4231, - "end": 4290, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 4286, - "end": 4290, - "name": "DUP1", - "source": 13 - }, - { - "begin": 4231, - "end": 4290, - "name": "PUSH [tag]", - "source": 13, - "value": "259" - }, - { - "begin": 4231, - "end": 4290, - "name": "JUMP", - "source": 13 - }, - { - "begin": 4231, - "end": 4290, - "name": "tag", - "source": 13, - "value": "257" - }, - { - "begin": 4231, - "end": 4290, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 622, - "end": 631, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "DUP7", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP2", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "DUP3", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 4252, - "end": 4283, - "name": "tag", - "source": 13, - "value": "259" - }, - { - "begin": 4252, - "end": 4283, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 4224, - "end": 4290, - "name": "SWAP6", - "source": 13 - }, - { - "begin": 4224, - "end": 4290, - "name": "POP", - "source": 13 - }, - { - "begin": 4302, - "end": 4310, - "name": "POP", - "source": 13 - }, - { - "begin": 4302, - "end": 4310, - "name": "POP", - "source": 13 - }, - { - "begin": 4302, - "end": 4310, - "name": "POP", - "source": 13 - }, - { - "begin": 4302, - "end": 4310, - "name": "POP", - "source": 13 - }, - { - "begin": 4302, - "end": 4310, - "name": "PUSH [tag]", - "source": 13, - "value": "248" - }, - { - "begin": 4302, - "end": 4310, - "name": "JUMP", - "source": 13 - }, - { - "begin": 3919, - "end": 4321, - "name": "tag", - "source": 13, - "value": "252" - }, - { - "begin": 3919, - "end": 4321, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 4335, - "end": 4339, - "name": "DUP1", - "source": 13 - }, - { - "begin": 4331, - "end": 5010, - "name": "PUSH [tag]", - "source": 13, - "value": "260" - }, - { - "begin": 4331, - "end": 5010, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 1475, - "end": 1476, - "name": "PUSH", - "source": 19, - "value": "1" - }, - { - "begin": 1463, - "end": 1477, - "name": "DUP3", - "source": 19 - }, - { - "begin": 1463, - "end": 1477, - "name": "ADD", - "source": 19 - }, - { - "begin": 1463, - "end": 1477, - "name": "SWAP2", - "source": 19 - }, - { - "begin": 1390, - "end": 1415, - "name": "DUP7", - "source": 19 - }, - { - "begin": 1390, - "end": 1415, - "name": "DUP2", - "source": 19 - }, - { - "begin": 1390, - "end": 1415, - "name": "ADD", - "source": 19 - }, - { - "begin": 1377, - "end": 1416, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 1432, - "end": 1435, - "name": "PUSH", - "source": 19, - "value": "F8" - }, - { - "begin": 1428, - "end": 1442, - "name": "SHR", - "source": 19 - }, - { - "begin": 1428, - "end": 1442, - "name": "SWAP1", - "source": 19 - }, - { - "begin": 4560, - "end": 4571, - "name": "PUSH", - "source": 13, - "value": "43" - }, - { - "begin": 4560, - "end": 4571, - "name": "ADD", - "source": 13 - }, - { - "begin": 4396, - "end": 4412, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 4598, - "end": 4670, - "name": "PUSH [tag]", - "source": 13, - "value": "262" - }, - { - "begin": 4631, - "end": 4641, - "name": "DUP11", - "source": 13 - }, - { - "begin": 4643, - "end": 4669, - "name": "PUSH [tag]", - "source": 13, - "value": "263" - }, - { - "begin": 4560, - "end": 4571, - "name": "DUP5", - "source": 13 - }, - { - "begin": 1463, - "end": 1477, - "name": "DUP9", - "source": 19 - }, - { - "begin": 4643, - "end": 4653, - "name": "DUP13", - "source": 13 - }, - { - "begin": 1390, - "end": 1415, - "name": "DUP15", - "source": 19 - }, - { - "begin": 4643, - "end": 4669, - "name": "PUSH [tag]", - "source": 13, - "value": "193" - }, - { - "begin": 4643, - "end": 4669, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 4643, - "end": 4669, - "name": "tag", - "source": 13, - "value": "263" - }, - { - "begin": 4643, - "end": 4669, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 4598, - "end": 4630, - "name": "PUSH [tag]", - "source": 13, - "value": "264" - }, - { - "begin": 4598, - "end": 4670, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 4598, - "end": 4670, - "name": "tag", - "source": 13, - "value": "262" - }, - { - "begin": 4598, - "end": 4670, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 4764, - "end": 4784, - "name": "PUSH", - "source": 13, - "value": "FF" - }, - { - "begin": 4764, - "end": 4784, - "name": "DUP5", - "source": 13 - }, - { - "begin": 4764, - "end": 4784, - "name": "AND", - "source": 13 - }, - { - "begin": 4764, - "end": 4784, - "name": "SWAP8", - "source": 13 - }, - { - "begin": 4764, - "end": 4784, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 4764, - "end": 4784, - "name": "SWAP8", - "source": 13 - }, - { - "begin": 4764, - "end": 4784, - "name": "ADD", - "source": 13 - }, - { - "begin": 4764, - "end": 4784, - "name": "SWAP7", - "source": 13 - }, - { - "begin": 4691, - "end": 4698, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 4691, - "end": 4698, - "name": "SWAP5", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4691, - "end": 4698, - "name": "DUP5", - "source": 13 - }, - { - "begin": 4691, - "end": 4698, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 4764, - "end": 4784, - "name": "SWAP1", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1893, - "end": 1896, - "name": "PUSH", - "source": 13, - "value": "A0" - }, - { - "begin": 1873, - "end": 1896, - "name": "DUP4", - "source": 13 - }, - { - "begin": 1873, - "end": 1896, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 1873, - "end": 1896, - "name": "SHL", - "source": 13 - }, - { - "begin": 1873, - "end": 1896, - "name": "PUSH", - "source": 13, - "value": "FF0000000000000000000000000000000000000000" - }, - { - "begin": 1873, - "end": 1896, - "name": "AND", - "source": 13 - }, - { - "begin": 1899, - "end": 1922, - "name": "PUSH", - "source": 13, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1899, - "end": 1922, - "name": "DUP3", - "source": 13 - }, - { - "begin": 1899, - "end": 1922, - "name": "AND", - "source": 13 - }, - { - "begin": 1873, - "end": 1922, - "name": "OR", - "source": 13 - }, - { - "begin": 4920, - "end": 4924, - "name": "DUP7", - "source": 13 - }, - { - "begin": 4920, - "end": 4979, - "name": "PUSH [tag]", - "source": 13, - "value": "266" - }, - { - "begin": 4920, - "end": 4979, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 4975, - "end": 4979, - "name": "DUP1", - "source": 13 - }, - { - "begin": 4920, - "end": 4979, - "name": "PUSH [tag]", - "source": 13, - "value": "268" - }, - { - "begin": 4920, - "end": 4979, - "name": "JUMP", - "source": 13 - }, - { - "begin": 4920, - "end": 4979, - "name": "tag", - "source": 13, - "value": "266" - }, - { - "begin": 4920, - "end": 4979, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 622, - "end": 631, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "DUP8", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP2", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "DUP3", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 4941, - "end": 4972, - "name": "tag", - "source": 13, - "value": "268" - }, - { - "begin": 4941, - "end": 4972, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 4913, - "end": 4979, - "name": "SWAP7", - "source": 13 - }, - { - "begin": 4913, - "end": 4979, - "name": "POP", - "source": 13 - }, - { - "begin": 4991, - "end": 4999, - "name": "POP", - "source": 13 - }, - { - "begin": 4991, - "end": 4999, - "name": "POP", - "source": 13 - }, - { - "begin": 4991, - "end": 4999, - "name": "POP", - "source": 13 - }, - { - "begin": 4991, - "end": 4999, - "name": "POP", - "source": 13 - }, - { - "begin": 4991, - "end": 4999, - "name": "POP", - "source": 13 - }, - { - "begin": 4991, - "end": 4999, - "name": "PUSH [tag]", - "source": 13, - "value": "248" - }, - { - "begin": 4991, - "end": 4999, - "name": "JUMP", - "source": 13 - }, - { - "begin": 4331, - "end": 5010, - "name": "tag", - "source": 13, - "value": "260" - }, - { - "begin": 4331, - "end": 5010, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 625, - "end": 626, - "name": "PUSH", - "source": 13, - "value": "2" - }, - { - "begin": 5024, - "end": 5028, - "name": "DUP2", - "source": 13 - }, - { - "begin": 5024, - "end": 5054, - "name": "SUB", - "source": 13 - }, - { - "begin": 5020, - "end": 5952, - "name": "PUSH [tag]", - "source": 13, - "value": "269" - }, - { - "begin": 5020, - "end": 5952, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 5104, - "end": 5120, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 5104, - "end": 5120, - "name": "DUP1", - "source": 13 - }, - { - "begin": 2046, - "end": 2071, - "name": "DUP8", - "source": 19 - }, - { - "begin": 2046, - "end": 2071, - "name": "DUP5", - "source": 19 - }, - { - "begin": 2046, - "end": 2071, - "name": "ADD", - "source": 19 - }, - { - "begin": 2033, - "end": 2072, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 2088, - "end": 2091, - "name": "PUSH", - "source": 19, - "value": "F8" - }, - { - "begin": 2084, - "end": 2098, - "name": "DUP2", - "source": 19 - }, - { - "begin": 2084, - "end": 2098, - "name": "SWAP1", - "source": 19 - }, - { - "begin": 2084, - "end": 2098, - "name": "SHR", - "source": 19 - }, - { - "begin": 2084, - "end": 2098, - "name": "SWAP1", - "source": 19 - }, - { - "begin": 2118, - "end": 2120, - "name": "PUSH", - "source": 19, - "value": "58" - }, - { - "begin": 2114, - "end": 2127, - "name": "SHR", - "source": 19 - }, - { - "begin": 2129, - "end": 2171, - "name": "PUSH", - "source": 19, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 2110, - "end": 2172, - "name": "AND", - "source": 19 - }, - { - "begin": 2205, - "end": 2207, - "name": "PUSH", - "source": 19, - "value": "15" - }, - { - "begin": 2193, - "end": 2208, - "name": "DUP7", - "source": 19 - }, - { - "begin": 2193, - "end": 2208, - "name": "ADD", - "source": 19 - }, - { - "begin": 5146, - "end": 5210, - "name": "SWAP6", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5146, - "end": 5210, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 5146, - "end": 5210, - "name": "SWAP3", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5146, - "end": 5210, - "name": "SWAP1", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5256, - "end": 5268, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP9", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP6", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "ADD", - "source": 19 - }, - { - "begin": 3277, - "end": 3316, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 3336, - "end": 3339, - "name": "PUSH", - "source": 19, - "value": "E8" - }, - { - "begin": 3332, - "end": 3346, - "name": "SHR", - "source": 19 - }, - { - "begin": 3390, - "end": 3391, - "name": "PUSH", - "source": 19, - "value": "3" - }, - { - "begin": 3378, - "end": 3392, - "name": "DUP7", - "source": 19 - }, - { - "begin": 3378, - "end": 3392, - "name": "ADD", - "source": 19 - }, - { - "begin": 5280, - "end": 5326, - "name": "DUP2", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "PUSH", - "source": 13, - "value": "FFFFFF" - }, - { - "begin": 5280, - "end": 5326, - "name": "AND", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "POP", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "DUP1", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "SWAP7", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "POP", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "DUP2", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "SWAP3", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "POP", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "POP", - "source": 13 - }, - { - "begin": 5280, - "end": 5326, - "name": "POP", - "source": 13 - }, - { - "begin": 5380, - "end": 5395, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 5407, - "end": 5411, - "name": "DUP2", - "source": 13 - }, - { - "begin": 5398, - "end": 5404, - "name": "DUP7", - "source": 13 - }, - { - "begin": 5398, - "end": 5411, - "name": "ADD", - "source": 13 - }, - { - "begin": 5380, - "end": 5411, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 5380, - "end": 5411, - "name": "POP", - "source": 13 - }, - { - "begin": 5428, - "end": 5509, - "name": "PUSH [tag]", - "source": 13, - "value": "272" - }, - { - "begin": 5464, - "end": 5474, - "name": "DUP12", - "source": 13 - }, - { - "begin": 5476, - "end": 5480, - "name": "DUP5", - "source": 13 - }, - { - "begin": 5482, - "end": 5492, - "name": "DUP13", - "source": 13 - }, - { - "begin": 5482, - "end": 5492, - "name": "DUP13", - "source": 13 - }, - { - "begin": 5493, - "end": 5499, - "name": "DUP11", - "source": 13 - }, - { - "begin": 5482, - "end": 5508, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 5500, - "end": 5507, - "name": "DUP7", - "source": 13 - }, - { - "begin": 5482, - "end": 5508, - "name": "SWAP3", - "source": 13 - }, - { - "begin": 5482, - "end": 5508, - "name": "PUSH [tag]", - "source": 13, - "value": "273" - }, - { - "begin": 5482, - "end": 5508, - "name": "SWAP4", - "source": 13 - }, - { - "begin": 5482, - "end": 5508, - "name": "SWAP3", - "source": 13 - }, - { - "begin": 5482, - "end": 5508, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 5482, - "end": 5508, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 5482, - "end": 5508, - "name": "PUSH [tag]", - "source": 13, - "value": "193" - }, - { - "begin": 5482, - "end": 5508, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 5482, - "end": 5508, - "name": "tag", - "source": 13, - "value": "273" - }, - { - "begin": 5482, - "end": 5508, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 5428, - "end": 5463, - "name": "PUSH [tag]", - "source": 13, - "value": "274" - }, - { - "begin": 5428, - "end": 5509, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 5428, - "end": 5509, - "name": "tag", - "source": 13, - "value": "272" - }, - { - "begin": 5428, - "end": 5509, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 5423, - "end": 5613, - "name": "PUSH [tag]", - "source": 13, - "value": "275" - }, - { - "begin": 5423, - "end": 5613, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 5555, - "end": 5565, - "name": "DUP11", - "source": 13 - }, - { - "begin": 5567, - "end": 5571, - "name": "DUP4", - "source": 13 - }, - { - "begin": 5573, - "end": 5599, - "name": "PUSH [tag]", - "source": 13, - "value": "276" - }, - { - "begin": 5591, - "end": 5598, - "name": "DUP4", - "source": 13 - }, - { - "begin": 5584, - "end": 5590, - "name": "DUP10", - "source": 13 - }, - { - "begin": 5573, - "end": 5583, - "name": "DUP14", - "source": 13 - }, - { - "begin": 5573, - "end": 5583, - "name": "DUP16", - "source": 13 - }, - { - "begin": 5573, - "end": 5599, - "name": "PUSH [tag]", - "source": 13, - "value": "193" - }, - { - "begin": 5573, - "end": 5599, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 5573, - "end": 5599, - "name": "tag", - "source": 13, - "value": "276" - }, - { - "begin": 5573, - "end": 5599, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "PUSH", - "source": 13, - "value": "40" - }, - { - "begin": 5532, - "end": 5600, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "PUSH", - "source": 13, - "value": "9A94623200000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 5532, - "end": 5600, - "name": "DUP2", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "PUSH", - "source": 13, - "value": "4" - }, - { - "begin": 5532, - "end": 5600, - "name": "ADD", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "PUSH [tag]", - "source": 13, - "value": "93" - }, - { - "begin": 5532, - "end": 5600, - "name": "SWAP5", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "SWAP4", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "SWAP3", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 5532, - "end": 5600, - "name": "PUSH [tag]", - "source": 13, - "value": "278" - }, - { - "begin": 5532, - "end": 5600, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 5423, - "end": 5613, - "name": "tag", - "source": 13, - "value": "275" - }, - { - "begin": 5423, - "end": 5613, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 5706, - "end": 5726, - "name": "PUSH", - "source": 13, - "value": "FF" - }, - { - "begin": 5706, - "end": 5726, - "name": "DUP5", - "source": 13 - }, - { - "begin": 5706, - "end": 5726, - "name": "AND", - "source": 13 - }, - { - "begin": 5706, - "end": 5726, - "name": "SWAP8", - "source": 13 - }, - { - "begin": 5706, - "end": 5726, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 5706, - "end": 5726, - "name": "SWAP8", - "source": 13 - }, - { - "begin": 5706, - "end": 5726, - "name": "ADD", - "source": 13 - }, - { - "begin": 5706, - "end": 5726, - "name": "SWAP7", - "source": 13 - }, - { - "begin": 5706, - "end": 5726, - "name": "SWAP5", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5706, - "end": 5726, - "name": "DUP5", - "source": 13 - }, - { - "begin": 1893, - "end": 1896, - "name": "PUSH", - "source": 13, - "value": "A0" - }, - { - "begin": 1873, - "end": 1896, - "name": "DUP5", - "source": 13 - }, - { - "begin": 1873, - "end": 1896, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 1873, - "end": 1896, - "name": "SHL", - "source": 13 - }, - { - "begin": 1873, - "end": 1896, - "name": "PUSH", - "source": 13, - "value": "FF0000000000000000000000000000000000000000" - }, - { - "begin": 1873, - "end": 1896, - "name": "AND", - "source": 13 - }, - { - "begin": 1899, - "end": 1922, - "name": "PUSH", - "source": 13, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1899, - "end": 1922, - "name": "DUP5", - "source": 13 - }, - { - "begin": 1899, - "end": 1922, - "name": "AND", - "source": 13 - }, - { - "begin": 1873, - "end": 1922, - "name": "OR", - "source": 13 - }, - { - "begin": 5862, - "end": 5866, - "name": "DUP8", - "source": 13 - }, - { - "begin": 5862, - "end": 5921, - "name": "PUSH [tag]", - "source": 13, - "value": "280" - }, - { - "begin": 5862, - "end": 5921, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 5917, - "end": 5921, - "name": "DUP1", - "source": 13 - }, - { - "begin": 5862, - "end": 5921, - "name": "PUSH [tag]", - "source": 13, - "value": "282" - }, - { - "begin": 5862, - "end": 5921, - "name": "JUMP", - "source": 13 - }, - { - "begin": 5862, - "end": 5921, - "name": "tag", - "source": 13, - "value": "280" - }, - { - "begin": 5862, - "end": 5921, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 622, - "end": 631, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "DUP9", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP2", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "DUP3", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 5883, - "end": 5914, - "name": "tag", - "source": 13, - "value": "282" - }, - { - "begin": 5883, - "end": 5914, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 5855, - "end": 5921, - "name": "SWAP8", - "source": 13 - }, - { - "begin": 5855, - "end": 5921, - "name": "POP", - "source": 13 - }, - { - "begin": 5933, - "end": 5941, - "name": "POP", - "source": 13 - }, - { - "begin": 5933, - "end": 5941, - "name": "POP", - "source": 13 - }, - { - "begin": 5933, - "end": 5941, - "name": "POP", - "source": 13 - }, - { - "begin": 5933, - "end": 5941, - "name": "POP", - "source": 13 - }, - { - "begin": 5933, - "end": 5941, - "name": "POP", - "source": 13 - }, - { - "begin": 5933, - "end": 5941, - "name": "POP", - "source": 13 - }, - { - "begin": 5933, - "end": 5941, - "name": "PUSH [tag]", - "source": 13, - "value": "248" - }, - { - "begin": 5933, - "end": 5941, - "name": "JUMP", - "source": 13 - }, - { - "begin": 5020, - "end": 5952, - "name": "tag", - "source": 13, - "value": "269" - }, - { - "begin": 5020, - "end": 5952, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 667, - "end": 668, - "name": "PUSH", - "source": 13, - "value": "3" - }, - { - "begin": 5966, - "end": 5970, - "name": "DUP2", - "source": 13 - }, - { - "begin": 5966, - "end": 5983, - "name": "SUB", - "source": 13 - }, - { - "begin": 5962, - "end": 6205, - "name": "PUSH [tag]", - "source": 13, - "value": "283" - }, - { - "begin": 5962, - "end": 6205, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 4550, - "end": 4552, - "name": "PUSH", - "source": 19, - "value": "20" - }, - { - "begin": 4536, - "end": 4553, - "name": "DUP3", - "source": 19 - }, - { - "begin": 4536, - "end": 4553, - "name": "ADD", - "source": 19 - }, - { - "begin": 4536, - "end": 4553, - "name": "SWAP2", - "source": 19 - }, - { - "begin": 4487, - "end": 4514, - "name": "DUP7", - "source": 19 - }, - { - "begin": 4487, - "end": 4514, - "name": "ADD", - "source": 19 - }, - { - "begin": 4474, - "end": 4515, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 6115, - "end": 6119, - "name": "DUP4", - "source": 13 - }, - { - "begin": 6115, - "end": 6174, - "name": "PUSH [tag]", - "source": 13, - "value": "286" - }, - { - "begin": 6115, - "end": 6174, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 6170, - "end": 6174, - "name": "DUP1", - "source": 13 - }, - { - "begin": 6115, - "end": 6174, - "name": "PUSH [tag]", - "source": 13, - "value": "288" - }, - { - "begin": 6115, - "end": 6174, - "name": "JUMP", - "source": 13 - }, - { - "begin": 6115, - "end": 6174, - "name": "tag", - "source": 13, - "value": "286" - }, - { - "begin": 6115, - "end": 6174, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 622, - "end": 631, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "DUP5", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP2", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "DUP3", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 6136, - "end": 6167, - "name": "tag", - "source": 13, - "value": "288" - }, - { - "begin": 6136, - "end": 6167, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 6108, - "end": 6174, - "name": "SWAP4", - "source": 13 - }, - { - "begin": 6108, - "end": 6174, - "name": "POP", - "source": 13 - }, - { - "begin": 6186, - "end": 6194, - "name": "POP", - "source": 13 - }, - { - "begin": 6186, - "end": 6194, - "name": "POP", - "source": 13 - }, - { - "begin": 6186, - "end": 6194, - "name": "PUSH [tag]", - "source": 13, - "value": "248" - }, - { - "begin": 6186, - "end": 6194, - "name": "JUMP", - "source": 13 - }, - { - "begin": 5962, - "end": 6205, - "name": "tag", - "source": 13, - "value": "283" - }, - { - "begin": 5962, - "end": 6205, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 711, - "end": 712, - "name": "PUSH", - "source": 13, - "value": "4" - }, - { - "begin": 6219, - "end": 6223, - "name": "DUP2", - "source": 13 - }, - { - "begin": 6219, - "end": 6238, - "name": "SUB", - "source": 13 - }, - { - "begin": 6215, - "end": 6687, - "name": "PUSH [tag]", - "source": 13, - "value": "289" - }, - { - "begin": 6215, - "end": 6687, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 3390, - "end": 3391, - "name": "PUSH", - "source": 19, - "value": "3" - }, - { - "begin": 3378, - "end": 3392, - "name": "DUP1", - "source": 19 - }, - { - "begin": 3378, - "end": 3392, - "name": "DUP4", - "source": 19 - }, - { - "begin": 3378, - "end": 3392, - "name": "ADD", - "source": 19 - }, - { - "begin": 3378, - "end": 3392, - "name": "SWAP3", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP8", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP2", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "ADD", - "source": 19 - }, - { - "begin": 3277, - "end": 3316, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 3336, - "end": 3339, - "name": "PUSH", - "source": 19, - "value": "E8" - }, - { - "begin": 3332, - "end": 3346, - "name": "SHR", - "source": 19 - }, - { - "begin": 3332, - "end": 3346, - "name": "SWAP2", - "source": 19 - }, - { - "begin": 6409, - "end": 6422, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 6409, - "end": 6422, - "name": "DUP3", - "source": 13 - }, - { - "begin": 6409, - "end": 6422, - "name": "ADD", - "source": 13 - }, - { - "begin": 6409, - "end": 6422, - "name": "ADD", - "source": 13 - }, - { - "begin": 6309, - "end": 6321, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 6309, - "end": 6321, - "name": "DUP1", - "source": 13 - }, - { - "begin": 6494, - "end": 6547, - "name": "PUSH [tag]", - "source": 13, - "value": "291" - }, - { - "begin": 6508, - "end": 6518, - "name": "DUP12", - "source": 13 - }, - { - "begin": 6520, - "end": 6546, - "name": "PUSH [tag]", - "source": 13, - "value": "192" - }, - { - "begin": 6409, - "end": 6422, - "name": "DUP6", - "source": 13 - }, - { - "begin": 3378, - "end": 3392, - "name": "DUP10", - "source": 19 - }, - { - "begin": 6520, - "end": 6530, - "name": "DUP14", - "source": 13 - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP16", - "source": 19 - }, - { - "begin": 6520, - "end": 6546, - "name": "PUSH [tag]", - "source": 13, - "value": "193" - }, - { - "begin": 6520, - "end": 6546, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 6494, - "end": 6547, - "name": "tag", - "source": 13, - "value": "291" - }, - { - "begin": 6494, - "end": 6547, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 622, - "end": 631, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "SWAP9", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP10", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "SWAP8", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 6560, - "end": 6577, - "name": "SWAP7", - "source": 13 - }, - { - "begin": 6560, - "end": 6577, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 6560, - "end": 6577, - "name": "SWAP8", - "source": 13 - }, - { - "begin": 6560, - "end": 6577, - "name": "ADD", - "source": 13 - }, - { - "begin": 6560, - "end": 6577, - "name": "SWAP7", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6649, - "end": 6656, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 6649, - "end": 6656, - "name": "SWAP4", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6668, - "end": 6676, - "name": "PUSH [tag]", - "source": 13, - "value": "248" - }, - { - "begin": 6668, - "end": 6676, - "name": "SWAP3", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6668, - "end": 6676, - "name": "JUMP", - "source": 13 - }, - { - "begin": 6215, - "end": 6687, - "name": "tag", - "source": 13, - "value": "289" - }, - { - "begin": 6215, - "end": 6687, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 802, - "end": 803, - "name": "PUSH", - "source": 13, - "value": "6" - }, - { - "begin": 6701, - "end": 6705, - "name": "DUP2", - "source": 13 - }, - { - "begin": 6701, - "end": 6720, - "name": "SUB", - "source": 13 - }, - { - "begin": 6697, - "end": 7676, - "name": "PUSH [tag]", - "source": 13, - "value": "294" - }, - { - "begin": 6697, - "end": 7676, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 6864, - "end": 6886, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 1390, - "end": 1415, - "name": "DUP3", - "source": 19 - }, - { - "begin": 1390, - "end": 1415, - "name": "DUP8", - "source": 19 - }, - { - "begin": 1390, - "end": 1415, - "name": "ADD", - "source": 19 - }, - { - "begin": 1377, - "end": 1416, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 1432, - "end": 1435, - "name": "PUSH", - "source": 19, - "value": "F8" - }, - { - "begin": 1428, - "end": 1442, - "name": "SHR", - "source": 19 - }, - { - "begin": 1475, - "end": 1476, - "name": "PUSH", - "source": 19, - "value": "1" - }, - { - "begin": 1463, - "end": 1477, - "name": "DUP5", - "source": 19 - }, - { - "begin": 1463, - "end": 1477, - "name": "ADD", - "source": 19 - }, - { - "begin": 6898, - "end": 6953, - "name": "SWAP4", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6898, - "end": 6953, - "name": "PUSH", - "source": 13, - "value": "FF" - }, - { - "begin": 6898, - "end": 6953, - "name": "AND", - "source": 13 - }, - { - "begin": 6898, - "end": 6953, - "name": "SWAP1", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6966, - "end": 6991, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 2699, - "end": 2724, - "name": "DUP8", - "source": 19 - }, - { - "begin": 2699, - "end": 2724, - "name": "DUP5", - "source": 19 - }, - { - "begin": 2699, - "end": 2724, - "name": "ADD", - "source": 19 - }, - { - "begin": 2686, - "end": 2725, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 2745, - "end": 2748, - "name": "PUSH", - "source": 19, - "value": "F0" - }, - { - "begin": 2741, - "end": 2755, - "name": "SHR", - "source": 19 - }, - { - "begin": 2797, - "end": 2798, - "name": "PUSH", - "source": 19, - "value": "2" - }, - { - "begin": 2785, - "end": 2799, - "name": "DUP6", - "source": 19 - }, - { - "begin": 2785, - "end": 2799, - "name": "ADD", - "source": 19 - }, - { - "begin": 7003, - "end": 7062, - "name": "SWAP5", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 7003, - "end": 7062, - "name": "PUSH", - "source": 13, - "value": "FFFF" - }, - { - "begin": 7003, - "end": 7062, - "name": "AND", - "source": 13 - }, - { - "begin": 7003, - "end": 7062, - "name": "SWAP1", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 7075, - "end": 7087, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP9", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "DUP6", - "source": 19 - }, - { - "begin": 3290, - "end": 3315, - "name": "ADD", - "source": 19 - }, - { - "begin": 3277, - "end": 3316, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 3336, - "end": 3339, - "name": "PUSH", - "source": 19, - "value": "E8" - }, - { - "begin": 3332, - "end": 3346, - "name": "SHR", - "source": 19 - }, - { - "begin": 3390, - "end": 3391, - "name": "PUSH", - "source": 19, - "value": "3" - }, - { - "begin": 3378, - "end": 3392, - "name": "DUP7", - "source": 19 - }, - { - "begin": 3378, - "end": 3392, - "name": "ADD", - "source": 19 - }, - { - "begin": 7099, - "end": 7145, - "name": "DUP2", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "PUSH", - "source": 13, - "value": "FFFFFF" - }, - { - "begin": 7099, - "end": 7145, - "name": "AND", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "POP", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "DUP1", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "SWAP7", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "POP", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "DUP2", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "SWAP3", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "POP", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "POP", - "source": 13 - }, - { - "begin": 7099, - "end": 7145, - "name": "POP", - "source": 13 - }, - { - "begin": 7157, - "end": 7172, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 7184, - "end": 7188, - "name": "DUP2", - "source": 13 - }, - { - "begin": 7175, - "end": 7181, - "name": "DUP7", - "source": 13 - }, - { - "begin": 7175, - "end": 7188, - "name": "ADD", - "source": 13 - }, - { - "begin": 7157, - "end": 7188, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 7157, - "end": 7188, - "name": "POP", - "source": 13 - }, - { - "begin": 7201, - "end": 7223, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 7225, - "end": 7245, - "name": "DUP1", - "source": 13 - }, - { - "begin": 7290, - "end": 7343, - "name": "PUSH [tag]", - "source": 13, - "value": "299" - }, - { - "begin": 7304, - "end": 7314, - "name": "DUP14", - "source": 13 - }, - { - "begin": 7316, - "end": 7326, - "name": "DUP14", - "source": 13 - }, - { - "begin": 7316, - "end": 7326, - "name": "DUP14", - "source": 13 - }, - { - "begin": 7327, - "end": 7333, - "name": "DUP12", - "source": 13 - }, - { - "begin": 7316, - "end": 7342, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 7334, - "end": 7341, - "name": "DUP8", - "source": 13 - }, - { - "begin": 7316, - "end": 7342, - "name": "SWAP3", - "source": 13 - }, - { - "begin": 7316, - "end": 7342, - "name": "PUSH [tag]", - "source": 13, - "value": "192" - }, - { - "begin": 7316, - "end": 7342, - "name": "SWAP4", - "source": 13 - }, - { - "begin": 7316, - "end": 7342, - "name": "SWAP3", - "source": 13 - }, - { - "begin": 7316, - "end": 7342, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 7316, - "end": 7342, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 7316, - "end": 7342, - "name": "PUSH [tag]", - "source": 13, - "value": "193" - }, - { - "begin": 7316, - "end": 7342, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 7290, - "end": 7343, - "name": "tag", - "source": 13, - "value": "299" - }, - { - "begin": 7290, - "end": 7343, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 7364, - "end": 7371, - "name": "SWAP4", - "source": 13 - }, - { - "begin": 7364, - "end": 7371, - "name": "SWAP9", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 7364, - "end": 7371, - "name": "DUP9", - "source": 13 - }, - { - "begin": 7364, - "end": 7371, - "name": "SWAP4", - "source": 13 - }, - { - "begin": 7257, - "end": 7343, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 7257, - "end": 7343, - "name": "SWAP3", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 7257, - "end": 7343, - "name": "SWAP1", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 7388, - "end": 7423, - "name": "DUP5", - "source": 13 - }, - { - "begin": 7388, - "end": 7423, - "name": "DUP3", - "source": 13 - }, - { - "begin": 7388, - "end": 7423, - "name": "LT", - "source": 13 - }, - { - "begin": 7384, - "end": 7476, - "name": "PUSH [tag]", - "source": 13, - "value": "301" - }, - { - "begin": 7384, - "end": 7476, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 7439, - "end": 7463, - "name": "SWAP9", - "source": 13 - }, - { - "begin": 7439, - "end": 7463, - "name": "DUP6", - "source": 13 - }, - { - "begin": 7439, - "end": 7463, - "name": "ADD", - "source": 13 - }, - { - "begin": 7439, - "end": 7463, - "name": "SWAP9", - "source": 13 - }, - { - "begin": 7384, - "end": 7476, - "name": "tag", - "source": 13, - "value": "301" - }, - { - "begin": 7384, - "end": 7476, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "PUSH", - "source": 13, - "value": "40" - }, - { - "begin": 2976, - "end": 3049, - "name": "DUP1", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 20362, - "end": 20428, - "name": "PUSH", - "source": 22, - "value": "53657175656E6365206E657374656420636F6E6669673A0A0000000000000000" - }, - { - "begin": 2976, - "end": 3049, - "name": "PUSH", - "source": 13, - "value": "20" - }, - { - "begin": 2976, - "end": 3049, - "name": "DUP1", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "DUP4", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "ADD", - "source": 13 - }, - { - "begin": 20350, - "end": 20429, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 20350, - "end": 20429, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 20350, - "end": 20429, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 20350, - "end": 20429, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 20445, - "end": 20457, - "name": "PUSH", - "source": 22, - "value": "38" - }, - { - "begin": 20445, - "end": 20457, - "name": "DUP3", - "source": 22 - }, - { - "begin": 20445, - "end": 20457, - "name": "ADD", - "source": 22 - }, - { - "begin": 20438, - "end": 20466, - "name": "DUP5", - "source": 22 - }, - { - "begin": 20438, - "end": 20466, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 20438, - "end": 20466, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 20482, - "end": 20494, - "name": "PUSH", - "source": 22, - "value": "58" - }, - { - "begin": 20482, - "end": 20494, - "name": "DUP3", - "source": 22 - }, - { - "begin": 20482, - "end": 20494, - "name": "ADD", - "source": 22 - }, - { - "begin": 20475, - "end": 20503, - "name": "DUP9", - "source": 22 - }, - { - "begin": 20475, - "end": 20503, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 20475, - "end": 20503, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 20519, - "end": 20531, - "name": "PUSH", - "source": 22, - "value": "78" - }, - { - "begin": 20519, - "end": 20531, - "name": "DUP1", - "source": 22 - }, - { - "begin": 20519, - "end": 20531, - "name": "DUP4", - "source": 22 - }, - { - "begin": 20519, - "end": 20531, - "name": "ADD", - "source": 22 - }, - { - "begin": 20512, - "end": 20540, - "name": "DUP11", - "source": 22 - }, - { - "begin": 20512, - "end": 20540, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 20512, - "end": 20540, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2976, - "end": 3049, - "name": "DUP4", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "DUP1", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "DUP5", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "SUB", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "ADD", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "DUP2", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 20556, - "end": 20569, - "name": "PUSH", - "source": 22, - "value": "98" - }, - { - "begin": 20556, - "end": 20569, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 20556, - "end": 20569, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 20556, - "end": 20569, - "name": "ADD", - "source": 22 - }, - { - "begin": 2976, - "end": 3049, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "SWAP3", - "source": 13 - }, - { - "begin": 2976, - "end": 3049, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 2966, - "end": 3050, - "name": "DUP1", - "source": 13 - }, - { - "begin": 2966, - "end": 3050, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 2966, - "end": 3050, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 2966, - "end": 3050, - "name": "ADD", - "source": 13 - }, - { - "begin": 2966, - "end": 3050, - "name": "KECCAK256", - "source": 13 - }, - { - "begin": 7585, - "end": 7589, - "name": "DUP10", - "source": 13 - }, - { - "begin": 7585, - "end": 7644, - "name": "PUSH [tag]", - "source": 13, - "value": "304" - }, - { - "begin": 7585, - "end": 7644, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 7640, - "end": 7644, - "name": "DUP1", - "source": 13 - }, - { - "begin": 7585, - "end": 7644, - "name": "PUSH [tag]", - "source": 13, - "value": "306" - }, - { - "begin": 7585, - "end": 7644, - "name": "JUMP", - "source": 13 - }, - { - "begin": 7585, - "end": 7644, - "name": "tag", - "source": 13, - "value": "304" - }, - { - "begin": 7585, - "end": 7644, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 622, - "end": 631, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "DUP11", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP2", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "DUP3", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 7606, - "end": 7637, - "name": "tag", - "source": 13, - "value": "306" - }, - { - "begin": 7606, - "end": 7637, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 7578, - "end": 7644, - "name": "SWAP10", - "source": 13 - }, - { - "begin": 7578, - "end": 7644, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "POP", - "source": 13 - }, - { - "begin": 7657, - "end": 7665, - "name": "PUSH [tag]", - "source": 13, - "value": "248" - }, - { - "begin": 7657, - "end": 7665, - "name": "JUMP", - "source": 13 - }, - { - "begin": 6697, - "end": 7676, - "name": "tag", - "source": 13, - "value": "294" - }, - { - "begin": 6697, - "end": 7676, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 758, - "end": 759, - "name": "PUSH", - "source": 13, - "value": "5" - }, - { - "begin": 7690, - "end": 7694, - "name": "DUP2", - "source": 13 - }, - { - "begin": 7690, - "end": 7712, - "name": "SUB", - "source": 13 - }, - { - "begin": 7686, - "end": 8171, - "name": "PUSH [tag]", - "source": 13, - "value": "307" - }, - { - "begin": 7686, - "end": 8171, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 4550, - "end": 4552, - "name": "PUSH", - "source": 19, - "value": "20" - }, - { - "begin": 4536, - "end": 4553, - "name": "DUP3", - "source": 19 - }, - { - "begin": 4536, - "end": 4553, - "name": "ADD", - "source": 19 - }, - { - "begin": 4536, - "end": 4553, - "name": "SWAP2", - "source": 19 - }, - { - "begin": 4487, - "end": 4514, - "name": "DUP7", - "source": 19 - }, - { - "begin": 4487, - "end": 4514, - "name": "ADD", - "source": 19 - }, - { - "begin": 4474, - "end": 4515, - "name": "CALLDATALOAD", - "source": 19 - }, - { - "begin": 7920, - "end": 7943, - "name": "DUP8", - "source": 13 - }, - { - "begin": 7920, - "end": 7943, - "name": "DUP2", - "source": 13 - }, - { - "begin": 7920, - "end": 7943, - "name": "SUB", - "source": 13 - }, - { - "begin": 7916, - "end": 7998, - "name": "PUSH [tag]", - "source": 13, - "value": "309" - }, - { - "begin": 7916, - "end": 7998, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 7968, - "end": 7985, - "name": "PUSH", - "source": 13, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 7959, - "end": 7985, - "name": "SWAP5", - "source": 13 - }, - { - "begin": 7959, - "end": 7985, - "name": "POP", - "source": 13 - }, - { - "begin": 7916, - "end": 7998, - "name": "tag", - "source": 13, - "value": "309" - }, - { - "begin": 7916, - "end": 7998, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 8010, - "end": 8022, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 8025, - "end": 8062, - "name": "PUSH [tag]", - "source": 13, - "value": "310" - }, - { - "begin": 8052, - "end": 8061, - "name": "DUP3", - "source": 13 - }, - { - "begin": 8025, - "end": 8051, - "name": "PUSH [tag]", - "source": 13, - "value": "311" - }, - { - "begin": 8025, - "end": 8062, - "jumpType": "[in]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 8025, - "end": 8062, - "name": "tag", - "source": 13, - "value": "310" - }, - { - "begin": 8025, - "end": 8062, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 8010, - "end": 8062, - "name": "SWAP1", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 8081, - "end": 8085, - "name": "DUP5", - "source": 13 - }, - { - "begin": 8081, - "end": 8140, - "name": "PUSH [tag]", - "source": 13, - "value": "312" - }, - { - "begin": 8081, - "end": 8140, - "name": "JUMPI", - "source": 13 - }, - { - "begin": 8136, - "end": 8140, - "name": "DUP1", - "source": 13 - }, - { - "begin": 8081, - "end": 8140, - "name": "PUSH [tag]", - "source": 13, - "value": "314" - }, - { - "begin": 8081, - "end": 8140, - "name": "JUMP", - "source": 13 - }, - { - "begin": 8081, - "end": 8140, - "name": "tag", - "source": 13, - "value": "312" - }, - { - "begin": 8081, - "end": 8140, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 622, - "end": 631, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "DUP6", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP2", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "DUP3", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 8102, - "end": 8133, - "name": "tag", - "source": 13, - "value": "314" - }, - { - "begin": 8102, - "end": 8133, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 8074, - "end": 8140, - "name": "SWAP5", - "source": 13 - }, - { - "begin": 8074, - "end": 8140, - "name": "POP", - "source": 13 - }, - { - "begin": 8152, - "end": 8160, - "name": "POP", - "source": 13 - }, - { - "begin": 8152, - "end": 8160, - "name": "POP", - "source": 13 - }, - { - "begin": 8152, - "end": 8160, - "name": "POP", - "source": 13 - }, - { - "begin": 8152, - "end": 8160, - "name": "PUSH [tag]", - "source": 13, - "value": "248" - }, - { - "begin": 8152, - "end": 8160, - "name": "JUMP", - "source": 13 - }, - { - "begin": 7686, - "end": 8171, - "name": "tag", - "source": 13, - "value": "307" - }, - { - "begin": 7686, - "end": 8171, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 8188, - "end": 8214, - "name": "PUSH", - "source": 13, - "value": "40" - }, - { - "begin": 8188, - "end": 8214, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 8188, - "end": 8214, - "name": "PUSH", - "source": 13, - "value": "B2505F7C00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 8188, - "end": 8214, - "name": "DUP2", - "source": 13 - }, - { - "begin": 8188, - "end": 8214, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 8188, - "end": 8214, - "name": "PUSH", - "source": 13, - "value": "4" - }, - { - "begin": 8188, - "end": 8214, - "name": "DUP2", - "source": 13 - }, - { - "begin": 8188, - "end": 8214, - "name": "ADD", - "source": 13 - }, - { - "begin": 2778, - "end": 2803, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2778, - "end": 2803, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 2778, - "end": 2803, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2751, - "end": 2769, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 2751, - "end": 2769, - "name": "ADD", - "source": 22 - }, - { - "begin": 8188, - "end": 8214, - "name": "PUSH [tag]", - "source": 13, - "value": "93" - }, - { - "begin": 2632, - "end": 2809, - "name": "JUMP", - "source": 22 - }, - { - "begin": 3765, - "end": 8223, - "name": "tag", - "source": 13, - "value": "249" - }, - { - "begin": 3765, - "end": 8223, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 3678, - "end": 8229, - "name": "POP", - "source": 13 - }, - { - "begin": 3525, - "end": 8233, - "name": "SWAP4", - "source": 13 - }, - { - "begin": 3525, - "end": 8233, - "name": "POP", - "source": 13 - }, - { - "begin": 3525, - "end": 8233, - "name": "SWAP4", - "source": 13 - }, - { - "begin": 3525, - "end": 8233, - "name": "SWAP2", - "source": 13 - }, - { - "begin": 3525, - "end": 8233, - "name": "POP", - "source": 13 - }, - { - "begin": 3525, - "end": 8233, - "name": "POP", - "source": 13 - }, - { - "begin": 3525, - "end": 8233, - "jumpType": "[out]", - "name": "JUMP", - "source": 13 - }, - { - "begin": 1296, - "end": 1456, - "name": "tag", - "source": 14, - "value": "224" - }, - { - "begin": 1296, - "end": 1456, - "name": "JUMPDEST", - "source": 14 - }, - { - "begin": 862, - "end": 906, - "name": "PUSH", - "source": 14, - "value": "8713A7C4465F6FBEE2B6E9D6646D1D9F83FEC929EDFC4BAF661F3C865BDD04D1" - }, - { - "begin": 1372, - "end": 1379, - "name": "PUSH", - "source": 14, - "value": "0" - }, - { - "begin": 656, - "end": 669, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "DUP2", - "source": 20 - }, - { - "begin": 656, - "end": 669, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 683, - "end": 685, - "name": "PUSH", - "source": 20, - "value": "20" - }, - { - "begin": 676, - "end": 690, - "name": "DUP3", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "SWAP1", - "source": 20 - }, - { - "begin": 676, - "end": 690, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 715, - "end": 717, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 702, - "end": 718, - "name": "DUP2", - "source": 20 - }, - { - "begin": 702, - "end": 718, - "name": "KECCAK256", - "source": 20 - }, - { - "begin": 1394, - "end": 1451, - "name": "PUSH [tag]", - "source": 14, - "value": "80" - }, - { - "begin": 543, - "end": 728, - "name": "JUMP", - "source": 20 - }, - { - "begin": 6015, - "end": 6315, - "name": "tag", - "source": 2, - "value": "238" - }, - { - "begin": 6015, - "end": 6315, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 6101, - "end": 6105, - "name": "PUSH", - "source": 2, - "value": "0" - }, - { - "begin": 6124, - "end": 6169, - "name": "PUSH", - "source": 2, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 6124, - "end": 6169, - "name": "DUP3", - "source": 2 - }, - { - "begin": 6124, - "end": 6169, - "name": "AND", - "source": 2 - }, - { - "begin": 6140, - "end": 6169, - "name": "PUSH", - "source": 2, - "value": "AC6A444E00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 6124, - "end": 6169, - "name": "EQ", - "source": 2 - }, - { - "begin": 6124, - "end": 6169, - "name": "DUP1", - "source": 2 - }, - { - "begin": 6124, - "end": 6227, - "name": "PUSH [tag]", - "source": 2, - "value": "323" - }, - { - "begin": 6124, - "end": 6227, - "name": "JUMPI", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6179, - "end": 6227, - "name": "PUSH", - "source": 2, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 6179, - "end": 6227, - "name": "DUP3", - "source": 2 - }, - { - "begin": 6179, - "end": 6227, - "name": "AND", - "source": 2 - }, - { - "begin": 6195, - "end": 6227, - "name": "PUSH", - "source": 2, - "value": "36E7817500000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 6179, - "end": 6227, - "name": "EQ", - "source": 2 - }, - { - "begin": 6124, - "end": 6227, - "name": "tag", - "source": 2, - "value": "323" - }, - { - "begin": 6124, - "end": 6227, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 6113, - "end": 6260, - "name": "ISZERO", - "source": 2 - }, - { - "begin": 6113, - "end": 6260, - "name": "PUSH [tag]", - "source": 2, - "value": "324" - }, - { - "begin": 6113, - "end": 6260, - "name": "JUMPI", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6249, - "end": 6253, - "name": "PUSH", - "source": 2, - "value": "1" - }, - { - "begin": 6249, - "end": 6253, - "name": "SWAP2", - "source": 2 - }, - { - "begin": 6015, - "end": 6315, - "name": "SWAP1", - "source": 2 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6015, - "end": 6315, - "jumpType": "[out]", - "name": "JUMP", - "source": 2 - }, - { - "begin": 6113, - "end": 6260, - "name": "tag", - "source": 2, - "value": "324" - }, - { - "begin": 6113, - "end": 6260, - "name": "JUMPDEST", - "source": 2 - }, - { - "begin": 725, - "end": 756, - "name": "PUSH", - "source": 5, - "value": "1FFC9A700000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 709, - "end": 756, - "name": "PUSH", - "source": 5, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 709, - "end": 756, - "name": "DUP4", - "source": 5 - }, - { - "begin": 709, - "end": 756, - "name": "AND", - "source": 5 - }, - { - "begin": 709, - "end": 756, - "name": "EQ", - "source": 5 - }, - { - "begin": 6273, - "end": 6310, - "name": "PUSH [tag]", - "source": 2, - "value": "80" - }, - { - "begin": 613, - "end": 761, - "name": "JUMP", - "source": 5 - }, - { - "begin": 1767, - "end": 4083, - "name": "tag", - "source": 21, - "value": "264" - }, - { - "begin": 1767, - "end": 4083, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 1867, - "end": 1881, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 1914, - "end": 1916, - "name": "PUSH", - "source": 21, - "value": "42" - }, - { - "begin": 1893, - "end": 1916, - "name": "DUP3", - "source": 21 - }, - { - "begin": 1893, - "end": 1916, - "name": "EQ", - "source": 21 - }, - { - "begin": 1889, - "end": 1959, - "name": "PUSH [tag]", - "source": 21, - "value": "331" - }, - { - "begin": 1889, - "end": 1959, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 1948, - "end": 1958, - "name": "DUP3", - "source": 21 - }, - { - "begin": 1948, - "end": 1958, - "name": "DUP3", - "source": 21 - }, - { - "begin": 1925, - "end": 1959, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 1925, - "end": 1959, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 1925, - "end": 1959, - "name": "PUSH", - "source": 21, - "value": "2EE17A3D00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1925, - "end": 1959, - "name": "DUP2", - "source": 21 - }, - { - "begin": 1925, - "end": 1959, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 1925, - "end": 1959, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 1925, - "end": 1959, - "name": "ADD", - "source": 21 - }, - { - "begin": 1925, - "end": 1959, - "name": "PUSH [tag]", - "source": 21, - "value": "93" - }, - { - "begin": 1925, - "end": 1959, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 1925, - "end": 1959, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 1925, - "end": 1959, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 1925, - "end": 1959, - "name": "PUSH [tag]", - "source": 21, - "value": "333" - }, - { - "begin": 1925, - "end": 1959, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 1889, - "end": 1959, - "name": "tag", - "source": 21, - "value": "331" - }, - { - "begin": 1889, - "end": 1959, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 1965, - "end": 1986, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 1989, - "end": 2032, - "name": "PUSH [tag]", - "source": 21, - "value": "334" - }, - { - "begin": 2010, - "end": 2031, - "name": "PUSH [tag]", - "source": 21, - "value": "335" - }, - { - "begin": 2030, - "end": 2031, - "name": "PUSH", - "source": 21, - "value": "1" - }, - { - "begin": 2010, - "end": 2020, - "name": "DUP6", - "source": 21 - }, - { - "begin": 2010, - "end": 2031, - "name": "PUSH [tag]", - "source": 21, - "value": "336" - }, - { - "begin": 2010, - "end": 2031, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 2010, - "end": 2031, - "name": "tag", - "source": 21, - "value": "335" - }, - { - "begin": 2010, - "end": 2031, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 1226, - "end": 1249, - "name": "DUP6", - "source": 18 - }, - { - "begin": 1226, - "end": 1249, - "name": "ADD", - "source": 18 - }, - { - "begin": 1213, - "end": 1250, - "name": "CALLDATALOAD", - "source": 18 - }, - { - "begin": 1266, - "end": 1269, - "name": "PUSH", - "source": 18, - "value": "F8" - }, - { - "begin": 1262, - "end": 1276, - "name": "SHR", - "source": 18 - }, - { - "begin": 1262, - "end": 1276, - "name": "SWAP1", - "source": 18 - }, - { - "begin": 1071, - "end": 1286, - "name": "JUMP", - "source": 18 - }, - { - "begin": 1989, - "end": 2032, - "name": "tag", - "source": 21, - "value": "334" - }, - { - "begin": 1989, - "end": 2032, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 1965, - "end": 2032, - "name": "PUSH", - "source": 21, - "value": "FF" - }, - { - "begin": 1965, - "end": 2032, - "name": "AND", - "source": 21 - }, - { - "begin": 1965, - "end": 2032, - "name": "SWAP1", - "source": 21 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2115, - "end": 2117, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 1226, - "end": 1249, - "name": "DUP5", - "source": 18 - }, - { - "begin": 1226, - "end": 1249, - "name": "ADD", - "source": 18 - }, - { - "begin": 1213, - "end": 1250, - "name": "CALLDATALOAD", - "source": 18 - }, - { - "begin": 1266, - "end": 1269, - "name": "PUSH", - "source": 18, - "value": "F8" - }, - { - "begin": 1262, - "end": 1276, - "name": "SHR", - "source": 18 - }, - { - "begin": 795, - "end": 832, - "name": "DUP5", - "source": 18 - }, - { - "begin": 795, - "end": 832, - "name": "CALLDATALOAD", - "source": 18 - }, - { - "begin": 2202, - "end": 2204, - "name": "PUSH", - "source": 21, - "value": "20" - }, - { - "begin": 808, - "end": 831, - "name": "DUP7", - "source": 18 - }, - { - "begin": 808, - "end": 831, - "name": "ADD", - "source": 18 - }, - { - "begin": 795, - "end": 832, - "name": "CALLDATALOAD", - "source": 18 - }, - { - "begin": 3209, - "end": 3275, - "name": "PUSH", - "source": 21, - "value": "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" - }, - { - "begin": 3196, - "end": 3275, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3196, - "end": 3275, - "name": "GT", - "source": 21 - }, - { - "begin": 3192, - "end": 3327, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 3192, - "end": 3327, - "name": "PUSH [tag]", - "source": 21, - "value": "342" - }, - { - "begin": 3192, - "end": 3327, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 3306, - "end": 3316, - "name": "DUP7", - "source": 21 - }, - { - "begin": 3306, - "end": 3316, - "name": "DUP7", - "source": 21 - }, - { - "begin": 3318, - "end": 3319, - "name": "DUP3", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 3292, - "end": 3320, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "PUSH", - "source": 21, - "value": "AD4AAC7600000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 3292, - "end": 3320, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 3292, - "end": 3320, - "name": "ADD", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "PUSH [tag]", - "source": 21, - "value": "93" - }, - { - "begin": 3292, - "end": 3320, - "name": "SWAP4", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 3292, - "end": 3320, - "name": "PUSH [tag]", - "source": 21, - "value": "344" - }, - { - "begin": 3292, - "end": 3320, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 3192, - "end": 3327, - "name": "tag", - "source": 21, - "value": "342" - }, - { - "begin": 3192, - "end": 3327, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 3337, - "end": 3338, - "name": "DUP3", - "source": 21 - }, - { - "begin": 3337, - "end": 3344, - "name": "PUSH", - "source": 21, - "value": "FF" - }, - { - "begin": 3337, - "end": 3344, - "name": "AND", - "source": 21 - }, - { - "begin": 3342, - "end": 3344, - "name": "PUSH", - "source": 21, - "value": "1B" - }, - { - "begin": 3337, - "end": 3344, - "name": "EQ", - "source": 21 - }, - { - "begin": 3337, - "end": 3344, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 3337, - "end": 3355, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3337, - "end": 3355, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 3337, - "end": 3355, - "name": "PUSH [tag]", - "source": 21, - "value": "345" - }, - { - "begin": 3337, - "end": 3355, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 3337, - "end": 3355, - "name": "POP", - "source": 21 - }, - { - "begin": 3348, - "end": 3349, - "name": "DUP3", - "source": 21 - }, - { - "begin": 3348, - "end": 3355, - "name": "PUSH", - "source": 21, - "value": "FF" - }, - { - "begin": 3348, - "end": 3355, - "name": "AND", - "source": 21 - }, - { - "begin": 3353, - "end": 3355, - "name": "PUSH", - "source": 21, - "value": "1C" - }, - { - "begin": 3348, - "end": 3355, - "name": "EQ", - "source": 21 - }, - { - "begin": 3348, - "end": 3355, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 3337, - "end": 3355, - "name": "tag", - "source": 21, - "value": "345" - }, - { - "begin": 3337, - "end": 3355, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 3333, - "end": 3407, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 3333, - "end": 3407, - "name": "PUSH [tag]", - "source": 21, - "value": "346" - }, - { - "begin": 3333, - "end": 3407, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 3386, - "end": 3396, - "name": "DUP7", - "source": 21 - }, - { - "begin": 3386, - "end": 3396, - "name": "DUP7", - "source": 21 - }, - { - "begin": 3398, - "end": 3399, - "name": "DUP5", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 3372, - "end": 3400, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "PUSH", - "source": 21, - "value": "E578897E00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 3372, - "end": 3400, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 3372, - "end": 3400, - "name": "ADD", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "PUSH [tag]", - "source": 21, - "value": "93" - }, - { - "begin": 3372, - "end": 3400, - "name": "SWAP4", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 3372, - "end": 3400, - "name": "PUSH [tag]", - "source": 21, - "value": "348" - }, - { - "begin": 3372, - "end": 3400, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 3333, - "end": 3407, - "name": "tag", - "source": 21, - "value": "346" - }, - { - "begin": 3333, - "end": 3407, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 1253, - "end": 1254, - "name": "PUSH", - "source": 21, - "value": "1" - }, - { - "begin": 3447, - "end": 3460, - "name": "DUP5", - "source": 21 - }, - { - "begin": 3447, - "end": 3479, - "name": "SUB", - "source": 21 - }, - { - "begin": 3443, - "end": 3952, - "name": "PUSH [tag]", - "source": 21, - "value": "349" - }, - { - "begin": 3443, - "end": 3952, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "20" - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "ADD", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP4", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 18522, - "end": 18547, - "name": "DUP11", - "source": 22 - }, - { - "begin": 18522, - "end": 18547, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 18522, - "end": 18547, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 18595, - "end": 18599, - "name": "PUSH", - "source": 22, - "value": "FF" - }, - { - "begin": 18583, - "end": 18600, - "name": "DUP6", - "source": 22 - }, - { - "begin": 18583, - "end": 18600, - "name": "AND", - "source": 22 - }, - { - "begin": 18563, - "end": 18581, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 18563, - "end": 18581, - "name": "DUP2", - "source": 22 - }, - { - "begin": 18563, - "end": 18581, - "name": "ADD", - "source": 22 - }, - { - "begin": 18556, - "end": 18601, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 18556, - "end": 18601, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 18556, - "end": 18601, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 18556, - "end": 18601, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 18617, - "end": 18635, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 18617, - "end": 18635, - "name": "DUP2", - "source": 22 - }, - { - "begin": 18617, - "end": 18635, - "name": "ADD", - "source": 22 - }, - { - "begin": 18610, - "end": 18644, - "name": "DUP4", - "source": 22 - }, - { - "begin": 18610, - "end": 18644, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 18610, - "end": 18644, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 18660, - "end": 18678, - "name": "PUSH", - "source": 22, - "value": "80" - }, - { - "begin": 18660, - "end": 18678, - "name": "DUP2", - "source": 22 - }, - { - "begin": 18660, - "end": 18678, - "name": "ADD", - "source": 22 - }, - { - "begin": 18653, - "end": 18687, - "name": "DUP3", - "source": 22 - }, - { - "begin": 18653, - "end": 18687, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 18653, - "end": 18687, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "1" - }, - { - "begin": 3498, - "end": 3523, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 18494, - "end": 18513, - "name": "PUSH", - "source": 22, - "value": "A0" - }, - { - "begin": 18494, - "end": 18513, - "name": "ADD", - "source": 22 - }, - { - "begin": 3498, - "end": 3523, - "name": "tag", - "source": 21, - "value": "350" - }, - { - "begin": 3498, - "end": 3523, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "20" - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 3498, - "end": 3523, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "20" - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "SUB", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP5", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "SUB", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP6", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "GAS", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "STATICCALL", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH [tag]", - "source": 21, - "value": "353" - }, - { - "begin": 3498, - "end": 3523, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "RETURNDATASIZE", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 3498, - "end": 3523, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "RETURNDATACOPY", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "RETURNDATASIZE", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 3498, - "end": 3523, - "name": "REVERT", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "tag", - "source": 21, - "value": "353" - }, - { - "begin": 3498, - "end": 3523, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "POP", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "POP", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "POP", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "20" - }, - { - "begin": 3498, - "end": 3523, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 3498, - "end": 3523, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "SUB", - "source": 21 - }, - { - "begin": 3498, - "end": 3523, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3489, - "end": 3523, - "name": "SWAP5", - "source": 21 - }, - { - "begin": 3489, - "end": 3523, - "name": "POP", - "source": 21 - }, - { - "begin": 3443, - "end": 3952, - "name": "PUSH [tag]", - "source": 21, - "value": "361" - }, - { - "begin": 3443, - "end": 3952, - "name": "JUMP", - "source": 21 - }, - { - "begin": 3443, - "end": 3952, - "name": "tag", - "source": 21, - "value": "349" - }, - { - "begin": 3443, - "end": 3952, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 1303, - "end": 1304, - "name": "PUSH", - "source": 21, - "value": "2" - }, - { - "begin": 3608, - "end": 3621, - "name": "DUP5", - "source": 21 - }, - { - "begin": 3608, - "end": 3642, - "name": "SUB", - "source": 21 - }, - { - "begin": 3604, - "end": 3952, - "name": "PUSH [tag]", - "source": 21, - "value": "355" - }, - { - "begin": 3604, - "end": 3952, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 3690, - "end": 3749, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 18940, - "end": 19006, - "name": "PUSH", - "source": 22, - "value": "19457468657265756D205369676E6564204D6573736167653A0A333200000000" - }, - { - "begin": 3690, - "end": 3749, - "name": "PUSH", - "source": 21, - "value": "20" - }, - { - "begin": 3690, - "end": 3749, - "name": "DUP3", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "ADD", - "source": 21 - }, - { - "begin": 18928, - "end": 19007, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 19023, - "end": 19035, - "name": "PUSH", - "source": 22, - "value": "3C" - }, - { - "begin": 19023, - "end": 19035, - "name": "DUP2", - "source": 22 - }, - { - "begin": 19023, - "end": 19035, - "name": "ADD", - "source": 22 - }, - { - "begin": 19016, - "end": 19044, - "name": "DUP10", - "source": 22 - }, - { - "begin": 19016, - "end": 19044, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 19016, - "end": 19044, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 3661, - "end": 3791, - "name": "PUSH", - "source": 21, - "value": "1" - }, - { - "begin": 3661, - "end": 3791, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 19060, - "end": 19072, - "name": "PUSH", - "source": 22, - "value": "5C" - }, - { - "begin": 19060, - "end": 19072, - "name": "ADD", - "source": 22 - }, - { - "begin": 3690, - "end": 3749, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 3690, - "end": 3749, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "PUSH", - "source": 21, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 3690, - "end": 3749, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "DUP5", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "SUB", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "ADD", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "DUP3", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "DUP3", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 3680, - "end": 3750, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3680, - "end": 3750, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3690, - "end": 3749, - "name": "PUSH", - "source": 21, - "value": "20" - }, - { - "begin": 3680, - "end": 3750, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 3680, - "end": 3750, - "name": "DUP3", - "source": 21 - }, - { - "begin": 3680, - "end": 3750, - "name": "ADD", - "source": 21 - }, - { - "begin": 3680, - "end": 3750, - "name": "KECCAK256", - "source": 21 - }, - { - "begin": 3661, - "end": 3791, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 3661, - "end": 3791, - "name": "DUP5", - "source": 21 - }, - { - "begin": 3661, - "end": 3791, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 3661, - "end": 3791, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 3661, - "end": 3791, - "name": "DUP4", - "source": 21 - }, - { - "begin": 3661, - "end": 3791, - "name": "ADD", - "source": 21 - }, - { - "begin": 3661, - "end": 3791, - "name": "DUP1", - "source": 21 - }, - { - "begin": 3661, - "end": 3791, - "name": "DUP4", - "source": 21 - }, - { - "begin": 3661, - "end": 3791, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 18522, - "end": 18547, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 18595, - "end": 18599, - "name": "PUSH", - "source": 22, - "value": "FF" - }, - { - "begin": 18583, - "end": 18600, - "name": "DUP7", - "source": 22 - }, - { - "begin": 18583, - "end": 18600, - "name": "AND", - "source": 22 - }, - { - "begin": 18563, - "end": 18581, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 18563, - "end": 18581, - "name": "DUP3", - "source": 22 - }, - { - "begin": 18563, - "end": 18581, - "name": "ADD", - "source": 22 - }, - { - "begin": 18556, - "end": 18601, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 18617, - "end": 18635, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 18617, - "end": 18635, - "name": "DUP2", - "source": 22 - }, - { - "begin": 18617, - "end": 18635, - "name": "ADD", - "source": 22 - }, - { - "begin": 18610, - "end": 18644, - "name": "DUP5", - "source": 22 - }, - { - "begin": 18610, - "end": 18644, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 18610, - "end": 18644, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 18660, - "end": 18678, - "name": "PUSH", - "source": 22, - "value": "80" - }, - { - "begin": 18660, - "end": 18678, - "name": "DUP2", - "source": 22 - }, - { - "begin": 18660, - "end": 18678, - "name": "ADD", - "source": 22 - }, - { - "begin": 18653, - "end": 18687, - "name": "DUP4", - "source": 22 - }, - { - "begin": 18653, - "end": 18687, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 18653, - "end": 18687, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 18494, - "end": 18513, - "name": "PUSH", - "source": 22, - "value": "A0" - }, - { - "begin": 18494, - "end": 18513, - "name": "ADD", - "source": 22 - }, - { - "begin": 3661, - "end": 3791, - "name": "PUSH [tag]", - "source": 21, - "value": "350" - }, - { - "begin": 18295, - "end": 18693, - "name": "JUMP", - "source": 22 - }, - { - "begin": 3604, - "end": 3952, - "name": "tag", - "source": 21, - "value": "355" - }, - { - "begin": 3604, - "end": 3952, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 3913, - "end": 3923, - "name": "DUP7", - "source": 21 - }, - { - "begin": 3913, - "end": 3923, - "name": "DUP7", - "source": 21 - }, - { - "begin": 3925, - "end": 3938, - "name": "DUP6", - "source": 21 - }, - { - "begin": 3940, - "end": 3944, - "name": "PUSH", - "source": 21, - "value": "1" - }, - { - "begin": 3888, - "end": 3945, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 3888, - "end": 3945, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "PUSH", - "source": 21, - "value": "9DFBA85200000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 3888, - "end": 3945, - "name": "DUP2", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 3888, - "end": 3945, - "name": "ADD", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "PUSH [tag]", - "source": 21, - "value": "93" - }, - { - "begin": 3888, - "end": 3945, - "name": "SWAP5", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "SWAP4", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 3888, - "end": 3945, - "name": "PUSH [tag]", - "source": 21, - "value": "363" - }, - { - "begin": 3888, - "end": 3945, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 3604, - "end": 3952, - "name": "tag", - "source": 21, - "value": "361" - }, - { - "begin": 3604, - "end": 3952, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 3999, - "end": 4021, - "name": "PUSH", - "source": 21, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 3999, - "end": 4021, - "name": "DUP6", - "source": 21 - }, - { - "begin": 3999, - "end": 4021, - "name": "AND", - "source": 21 - }, - { - "begin": 3995, - "end": 4058, - "name": "PUSH [tag]", - "source": 21, - "value": "364" - }, - { - "begin": 3995, - "end": 4058, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 4047, - "end": 4057, - "name": "DUP7", - "source": 21 - }, - { - "begin": 4047, - "end": 4057, - "name": "DUP7", - "source": 21 - }, - { - "begin": 4030, - "end": 4058, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 4030, - "end": 4058, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 4030, - "end": 4058, - "name": "PUSH", - "source": 21, - "value": "6C1719D200000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 4030, - "end": 4058, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4030, - "end": 4058, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 4030, - "end": 4058, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 4030, - "end": 4058, - "name": "ADD", - "source": 21 - }, - { - "begin": 4030, - "end": 4058, - "name": "PUSH [tag]", - "source": 21, - "value": "93" - }, - { - "begin": 4030, - "end": 4058, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 4030, - "end": 4058, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 4030, - "end": 4058, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 4030, - "end": 4058, - "name": "PUSH [tag]", - "source": 21, - "value": "333" - }, - { - "begin": 4030, - "end": 4058, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 3995, - "end": 4058, - "name": "tag", - "source": 21, - "value": "364" - }, - { - "begin": 3995, - "end": 4058, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 4065, - "end": 4078, - "name": "POP", - "source": 21 - }, - { - "begin": 4065, - "end": 4078, - "name": "POP", - "source": 21 - }, - { - "begin": 4065, - "end": 4078, - "name": "POP", - "source": 21 - }, - { - "begin": 4065, - "end": 4078, - "name": "POP", - "source": 21 - }, - { - "begin": 1767, - "end": 4083, - "name": "SWAP4", - "source": 21 - }, - { - "begin": 1767, - "end": 4083, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 1767, - "end": 4083, - "name": "POP", - "source": 21 - }, - { - "begin": 1767, - "end": 4083, - "name": "POP", - "source": 21 - }, - { - "begin": 1767, - "end": 4083, - "name": "POP", - "source": 21 - }, - { - "begin": 1767, - "end": 4083, - "jumpType": "[out]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 4411, - "end": 5362, - "name": "tag", - "source": 21, - "value": "274" - }, - { - "begin": 4411, - "end": 5362, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 4535, - "end": 4545, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 4557, - "end": 4579, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4557, - "end": 4579, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4557, - "end": 4579, - "name": "SUB", - "source": 21 - }, - { - "begin": 4553, - "end": 4619, - "name": "PUSH [tag]", - "source": 21, - "value": "367" - }, - { - "begin": 4553, - "end": 4619, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 4596, - "end": 4612, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "PUSH", - "source": 21, - "value": "AC241E1100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 4596, - "end": 4612, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 4596, - "end": 4612, - "name": "ADD", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 4596, - "end": 4612, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "DUP1", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "SUB", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 4596, - "end": 4612, - "name": "REVERT", - "source": 21 - }, - { - "begin": 4553, - "end": 4619, - "name": "tag", - "source": 21, - "value": "367" - }, - { - "begin": 4553, - "end": 4619, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 4625, - "end": 4646, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 4655, - "end": 4665, - "name": "DUP4", - "source": 21 - }, - { - "begin": 4655, - "end": 4665, - "name": "DUP4", - "source": 21 - }, - { - "begin": 4666, - "end": 4687, - "name": "PUSH [tag]", - "source": 21, - "value": "368" - }, - { - "begin": 4686, - "end": 4687, - "name": "PUSH", - "source": 21, - "value": "1" - }, - { - "begin": 4655, - "end": 4665, - "name": "DUP3", - "source": 21 - }, - { - "begin": 4666, - "end": 4687, - "name": "PUSH [tag]", - "source": 21, - "value": "336" - }, - { - "begin": 4666, - "end": 4687, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 4666, - "end": 4687, - "name": "tag", - "source": 21, - "value": "368" - }, - { - "begin": 4666, - "end": 4687, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "LT", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "PUSH [tag]", - "source": 21, - "value": "370" - }, - { - "begin": 4655, - "end": 4688, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "PUSH [tag]", - "source": 21, - "value": "370" - }, - { - "begin": 4655, - "end": 4688, - "name": "PUSH [tag]", - "source": 21, - "value": "113" - }, - { - "begin": 4655, - "end": 4688, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "tag", - "source": 21, - "value": "370" - }, - { - "begin": 4655, - "end": 4688, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "ADD", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "CALLDATALOAD", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "PUSH", - "source": 21, - "value": "F8" - }, - { - "begin": 4655, - "end": 4688, - "name": "SHR", - "source": 21 - }, - { - "begin": 4655, - "end": 4688, - "name": "SWAP2", - "source": 21 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1253, - "end": 1254, - "name": "PUSH", - "source": 21, - "value": "1" - }, - { - "begin": 4699, - "end": 4731, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4699, - "end": 4731, - "name": "EQ", - "source": 21 - }, - { - "begin": 4699, - "end": 4731, - "name": "DUP1", - "source": 21 - }, - { - "begin": 4699, - "end": 4769, - "name": "PUSH [tag]", - "source": 21, - "value": "371" - }, - { - "begin": 4699, - "end": 4769, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 4699, - "end": 4769, - "name": "POP", - "source": 21 - }, - { - "begin": 1303, - "end": 1304, - "name": "PUSH", - "source": 21, - "value": "2" - }, - { - "begin": 4735, - "end": 4748, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4735, - "end": 4769, - "name": "EQ", - "source": 21 - }, - { - "begin": 4699, - "end": 4769, - "name": "tag", - "source": 21, - "value": "371" - }, - { - "begin": 4699, - "end": 4769, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 4695, - "end": 5358, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 4695, - "end": 5358, - "name": "PUSH [tag]", - "source": 21, - "value": "372" - }, - { - "begin": 4695, - "end": 5358, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 4873, - "end": 4880, - "name": "DUP5", - "source": 21 - }, - { - "begin": 4837, - "end": 4880, - "name": "PUSH", - "source": 21, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 4837, - "end": 4880, - "name": "AND", - "source": 21 - }, - { - "begin": 4837, - "end": 4869, - "name": "PUSH [tag]", - "source": 21, - "value": "373" - }, - { - "begin": 4851, - "end": 4856, - "name": "DUP8", - "source": 21 - }, - { - "begin": 4858, - "end": 4868, - "name": "DUP7", - "source": 21 - }, - { - "begin": 4858, - "end": 4868, - "name": "DUP7", - "source": 21 - }, - { - "begin": 4837, - "end": 4850, - "name": "PUSH [tag]", - "source": 21, - "value": "264" - }, - { - "begin": 4837, - "end": 4869, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 4837, - "end": 4869, - "name": "tag", - "source": 21, - "value": "373" - }, - { - "begin": 4837, - "end": 4869, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 4837, - "end": 4880, - "name": "PUSH", - "source": 21, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 4837, - "end": 4880, - "name": "AND", - "source": 21 - }, - { - "begin": 4837, - "end": 4880, - "name": "EQ", - "source": 21 - }, - { - "begin": 4829, - "end": 4880, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 4829, - "end": 4880, - "name": "POP", - "source": 21 - }, - { - "begin": 4695, - "end": 5358, - "name": "PUSH [tag]", - "source": 21, - "value": "384" - }, - { - "begin": 4695, - "end": 5358, - "name": "JUMP", - "source": 21 - }, - { - "begin": 4695, - "end": 5358, - "name": "tag", - "source": 21, - "value": "372" - }, - { - "begin": 4695, - "end": 5358, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 1359, - "end": 1360, - "name": "PUSH", - "source": 21, - "value": "3" - }, - { - "begin": 4898, - "end": 4911, - "name": "DUP2", - "source": 21 - }, - { - "begin": 4898, - "end": 4938, - "name": "SUB", - "source": 21 - }, - { - "begin": 4894, - "end": 5358, - "name": "PUSH [tag]", - "source": 21, - "value": "375" - }, - { - "begin": 4894, - "end": 5358, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 5060, - "end": 5100, - "name": "PUSH", - "source": 21, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 5060, - "end": 5100, - "name": "DUP6", - "source": 21 - }, - { - "begin": 5060, - "end": 5100, - "name": "AND", - "source": 21 - }, - { - "begin": 5060, - "end": 5100, - "name": "PUSH", - "source": 21, - "value": "1626BA7E" - }, - { - "begin": 5101, - "end": 5106, - "name": "DUP8", - "source": 21 - }, - { - "begin": 5108, - "end": 5118, - "name": "DUP7", - "source": 21 - }, - { - "begin": 5119, - "end": 5120, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 5108, - "end": 5118, - "name": "DUP8", - "source": 21 - }, - { - "begin": 5121, - "end": 5142, - "name": "PUSH [tag]", - "source": 21, - "value": "376" - }, - { - "begin": 5141, - "end": 5142, - "name": "PUSH", - "source": 21, - "value": "1" - }, - { - "begin": 5108, - "end": 5118, - "name": "DUP3", - "source": 21 - }, - { - "begin": 5121, - "end": 5142, - "name": "PUSH [tag]", - "source": 21, - "value": "336" - }, - { - "begin": 5121, - "end": 5142, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 5121, - "end": 5142, - "name": "tag", - "source": 21, - "value": "376" - }, - { - "begin": 5121, - "end": 5142, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 5108, - "end": 5143, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 5108, - "end": 5143, - "name": "PUSH [tag]", - "source": 21, - "value": "377" - }, - { - "begin": 5108, - "end": 5143, - "name": "SWAP4", - "source": 21 - }, - { - "begin": 5108, - "end": 5143, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 5108, - "end": 5143, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 5108, - "end": 5143, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 5108, - "end": 5143, - "name": "PUSH [tag]", - "source": 21, - "value": "193" - }, - { - "begin": 5108, - "end": 5143, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 5108, - "end": 5143, - "name": "tag", - "source": 21, - "value": "377" - }, - { - "begin": 5108, - "end": 5143, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 5060, - "end": 5144, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP5", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "FFFFFFFF" - }, - { - "begin": 5060, - "end": 5144, - "name": "AND", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "E0" - }, - { - "begin": 5060, - "end": 5144, - "name": "SHL", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP2", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 5060, - "end": 5144, - "name": "ADD", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH [tag]", - "source": 21, - "value": "378" - }, - { - "begin": 5060, - "end": 5144, - "name": "SWAP4", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH [tag]", - "source": 21, - "value": "379" - }, - { - "begin": 5060, - "end": 5144, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "tag", - "source": 21, - "value": "378" - }, - { - "begin": 5060, - "end": 5144, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "20" - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 5060, - "end": 5144, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP1", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP4", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "SUB", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP2", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP7", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "GAS", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "STATICCALL", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP1", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "ISZERO", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH [tag]", - "source": 21, - "value": "381" - }, - { - "begin": 5060, - "end": 5144, - "name": "JUMPI", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "RETURNDATASIZE", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP1", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "RETURNDATACOPY", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "RETURNDATASIZE", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 5060, - "end": 5144, - "name": "REVERT", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "tag", - "source": 21, - "value": "381" - }, - { - "begin": 5060, - "end": 5144, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "POP", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "POP", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "POP", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "POP", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 5060, - "end": 5144, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "RETURNDATASIZE", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "1F" - }, - { - "begin": 5060, - "end": 5144, - "name": "NOT", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "1F" - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP3", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "ADD", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "AND", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP3", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "ADD", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP1", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 5060, - "end": 5144, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "POP", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "DUP2", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "ADD", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH [tag]", - "source": 21, - "value": "382" - }, - { - "begin": 5060, - "end": 5144, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "PUSH [tag]", - "source": 21, - "value": "383" - }, - { - "begin": 5060, - "end": 5144, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 5060, - "end": 5144, - "name": "tag", - "source": 21, - "value": "382" - }, - { - "begin": 5060, - "end": 5144, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 5030, - "end": 5144, - "name": "PUSH", - "source": 21, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 5030, - "end": 5144, - "name": "AND", - "source": 21 - }, - { - "begin": 5030, - "end": 5056, - "name": "PUSH", - "source": 21, - "value": "1626BA7E00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 5030, - "end": 5144, - "name": "EQ", - "source": 21 - }, - { - "begin": 5030, - "end": 5144, - "name": "SWAP2", - "source": 21 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4894, - "end": 5358, - "name": "PUSH [tag]", - "source": 21, - "value": "384" - }, - { - "begin": 4894, - "end": 5358, - "name": "JUMP", - "source": 21 - }, - { - "begin": 4894, - "end": 5358, - "name": "tag", - "source": 21, - "value": "375" - }, - { - "begin": 4894, - "end": 5358, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 5318, - "end": 5328, - "name": "DUP4", - "source": 21 - }, - { - "begin": 5318, - "end": 5328, - "name": "DUP4", - "source": 21 - }, - { - "begin": 5330, - "end": 5343, - "name": "DUP3", - "source": 21 - }, - { - "begin": 5345, - "end": 5350, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 5293, - "end": 5351, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 5293, - "end": 5351, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "PUSH", - "source": 21, - "value": "9DFBA85200000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 5293, - "end": 5351, - "name": "DUP2", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 5293, - "end": 5351, - "name": "ADD", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "PUSH [tag]", - "source": 21, - "value": "93" - }, - { - "begin": 5293, - "end": 5351, - "name": "SWAP5", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "SWAP4", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "SWAP3", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "SWAP2", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "SWAP1", - "source": 21 - }, - { - "begin": 5293, - "end": 5351, - "name": "PUSH [tag]", - "source": 21, - "value": "363" - }, - { - "begin": 5293, - "end": 5351, - "jumpType": "[in]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 4894, - "end": 5358, - "name": "tag", - "source": 21, - "value": "384" - }, - { - "begin": 4894, - "end": 5358, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 4547, - "end": 5362, - "name": "POP", - "source": 21 - }, - { - "begin": 4411, - "end": 5362, - "name": "SWAP5", - "source": 21 - }, - { - "begin": 4411, - "end": 5362, - "name": "SWAP4", - "source": 21 - }, - { - "begin": 4411, - "end": 5362, - "name": "POP", - "source": 21 - }, - { - "begin": 4411, - "end": 5362, - "name": "POP", - "source": 21 - }, - { - "begin": 4411, - "end": 5362, - "name": "POP", - "source": 21 - }, - { - "begin": 4411, - "end": 5362, - "name": "POP", - "source": 21 - }, - { - "begin": 4411, - "end": 5362, - "jumpType": "[out]", - "name": "JUMP", - "source": 21 - }, - { - "begin": 2227, - "end": 2409, - "name": "tag", - "source": 13, - "value": "311" - }, - { - "begin": 2227, - "end": 2409, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 2346, - "end": 2403, - "name": "PUSH", - "source": 13, - "value": "40" - }, - { - "begin": 2346, - "end": 2403, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 20822, - "end": 20888, - "name": "PUSH", - "source": 22, - "value": "53657175656E636520737461746963206469676573743A0A0000000000000000" - }, - { - "begin": 2346, - "end": 2403, - "name": "PUSH", - "source": 13, - "value": "20" - }, - { - "begin": 2346, - "end": 2403, - "name": "DUP3", - "source": 13 - }, - { - "begin": 2346, - "end": 2403, - "name": "ADD", - "source": 13 - }, - { - "begin": 20810, - "end": 20889, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 20905, - "end": 20917, - "name": "PUSH", - "source": 22, - "value": "38" - }, - { - "begin": 20905, - "end": 20917, - "name": "DUP2", - "source": 22 - }, - { - "begin": 20905, - "end": 20917, - "name": "ADD", - "source": 22 - }, - { - "begin": 20898, - "end": 20926, - "name": "DUP3", - "source": 22 - }, - { - "begin": 20898, - "end": 20926, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 20898, - "end": 20926, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2314, - "end": 2321, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 2314, - "end": 2321, - "name": "SWAP1", - "source": 13 - }, - { - "begin": 20942, - "end": 20954, - "name": "PUSH", - "source": 22, - "value": "58" - }, - { - "begin": 20942, - "end": 20954, - "name": "ADD", - "source": 22 - }, - { - "begin": 2346, - "end": 2403, - "name": "PUSH [tag]", - "source": 13, - "value": "155" - }, - { - "begin": 20580, - "end": 20960, - "name": "JUMP", - "source": 22 - }, - { - "begin": 14, - "end": 191, - "name": "tag", - "source": 22, - "value": "397" - }, - { - "begin": 14, - "end": 191, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 99, - "end": 165, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 92, - "end": 97, - "name": "DUP2", - "source": 22 - }, - { - "begin": 88, - "end": 166, - "name": "AND", - "source": 22 - }, - { - "begin": 81, - "end": 86, - "name": "DUP2", - "source": 22 - }, - { - "begin": 78, - "end": 167, - "name": "EQ", - "source": 22 - }, - { - "begin": 68, - "end": 185, - "name": "PUSH [tag]", - "source": 22, - "value": "96" - }, - { - "begin": 68, - "end": 185, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 181, - "end": 182, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 178, - "end": 179, - "name": "DUP1", - "source": 22 - }, - { - "begin": 171, - "end": 183, - "name": "REVERT", - "source": 22 - }, - { - "begin": 196, - "end": 441, - "name": "tag", - "source": 22, - "value": "19" - }, - { - "begin": 196, - "end": 441, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 254, - "end": 260, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 307, - "end": 309, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 295, - "end": 304, - "name": "DUP3", - "source": 22 - }, - { - "begin": 286, - "end": 293, - "name": "DUP5", - "source": 22 - }, - { - "begin": 282, - "end": 305, - "name": "SUB", - "source": 22 - }, - { - "begin": 278, - "end": 310, - "name": "SLT", - "source": 22 - }, - { - "begin": 275, - "end": 327, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 275, - "end": 327, - "name": "PUSH [tag]", - "source": 22, - "value": "411" - }, - { - "begin": 275, - "end": 327, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 323, - "end": 324, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 320, - "end": 321, - "name": "DUP1", - "source": 22 - }, - { - "begin": 313, - "end": 325, - "name": "REVERT", - "source": 22 - }, - { - "begin": 275, - "end": 327, - "name": "tag", - "source": 22, - "value": "411" - }, - { - "begin": 275, - "end": 327, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 362, - "end": 371, - "name": "DUP2", - "source": 22 - }, - { - "begin": 349, - "end": 372, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 381, - "end": 411, - "name": "PUSH [tag]", - "source": 22, - "value": "82" - }, - { - "begin": 405, - "end": 410, - "name": "DUP2", - "source": 22 - }, - { - "begin": 381, - "end": 411, - "name": "PUSH [tag]", - "source": 22, - "value": "397" - }, - { - "begin": 381, - "end": 411, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 638, - "end": 985, - "name": "tag", - "source": 22, - "value": "398" - }, - { - "begin": 638, - "end": 985, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 689, - "end": 697, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 699, - "end": 705, - "name": "DUP1", - "source": 22 - }, - { - "begin": 753, - "end": 756, - "name": "DUP4", - "source": 22 - }, - { - "begin": 746, - "end": 750, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 738, - "end": 744, - "name": "DUP5", - "source": 22 - }, - { - "begin": 734, - "end": 751, - "name": "ADD", - "source": 22 - }, - { - "begin": 730, - "end": 757, - "name": "SLT", - "source": 22 - }, - { - "begin": 720, - "end": 775, - "name": "PUSH [tag]", - "source": 22, - "value": "415" - }, - { - "begin": 720, - "end": 775, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 771, - "end": 772, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 768, - "end": 769, - "name": "DUP1", - "source": 22 - }, - { - "begin": 761, - "end": 773, - "name": "REVERT", - "source": 22 - }, - { - "begin": 720, - "end": 775, - "name": "tag", - "source": 22, - "value": "415" - }, - { - "begin": 720, - "end": 775, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 794, - "end": 814, - "name": "DUP2", - "source": 22 - }, - { - "begin": 794, - "end": 814, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 837, - "end": 855, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 826, - "end": 856, - "name": "DUP2", - "source": 22 - }, - { - "begin": 826, - "end": 856, - "name": "GT", - "source": 22 - }, - { - "begin": 823, - "end": 873, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 823, - "end": 873, - "name": "PUSH [tag]", - "source": 22, - "value": "416" - }, - { - "begin": 823, - "end": 873, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 869, - "end": 870, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 866, - "end": 867, - "name": "DUP1", - "source": 22 - }, - { - "begin": 859, - "end": 871, - "name": "REVERT", - "source": 22 - }, - { - "begin": 823, - "end": 873, - "name": "tag", - "source": 22, - "value": "416" - }, - { - "begin": 823, - "end": 873, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 906, - "end": 910, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 898, - "end": 904, - "name": "DUP4", - "source": 22 - }, - { - "begin": 894, - "end": 911, - "name": "ADD", - "source": 22 - }, - { - "begin": 882, - "end": 911, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 882, - "end": 911, - "name": "POP", - "source": 22 - }, - { - "begin": 958, - "end": 961, - "name": "DUP4", - "source": 22 - }, - { - "begin": 951, - "end": 955, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 942, - "end": 948, - "name": "DUP3", - "source": 22 - }, - { - "begin": 934, - "end": 940, - "name": "DUP6", - "source": 22 - }, - { - "begin": 930, - "end": 949, - "name": "ADD", - "source": 22 - }, - { - "begin": 926, - "end": 956, - "name": "ADD", - "source": 22 - }, - { - "begin": 923, - "end": 962, - "name": "GT", - "source": 22 - }, - { - "begin": 920, - "end": 979, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 920, - "end": 979, - "name": "PUSH [tag]", - "source": 22, - "value": "417" - }, - { - "begin": 920, - "end": 979, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 975, - "end": 976, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 972, - "end": 973, - "name": "DUP1", - "source": 22 - }, - { - "begin": 965, - "end": 977, - "name": "REVERT", - "source": 22 - }, - { - "begin": 920, - "end": 979, - "name": "tag", - "source": 22, - "value": "417" - }, - { - "begin": 920, - "end": 979, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 638, - "end": 985, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 638, - "end": 985, - "name": "POP", - "source": 22 - }, - { - "begin": 638, - "end": 985, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 638, - "end": 985, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 638, - "end": 985, - "name": "POP", - "source": 22 - }, - { - "begin": 638, - "end": 985, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 990, - "end": 1467, - "name": "tag", - "source": 22, - "value": "26" - }, - { - "begin": 990, - "end": 1467, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1069, - "end": 1075, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1077, - "end": 1083, - "name": "DUP1", - "source": 22 - }, - { - "begin": 1085, - "end": 1091, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1138, - "end": 1140, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 1126, - "end": 1135, - "name": "DUP5", - "source": 22 - }, - { - "begin": 1117, - "end": 1124, - "name": "DUP7", - "source": 22 - }, - { - "begin": 1113, - "end": 1136, - "name": "SUB", - "source": 22 - }, - { - "begin": 1109, - "end": 1141, - "name": "SLT", - "source": 22 - }, - { - "begin": 1106, - "end": 1158, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 1106, - "end": 1158, - "name": "PUSH [tag]", - "source": 22, - "value": "419" - }, - { - "begin": 1106, - "end": 1158, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 1154, - "end": 1155, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1151, - "end": 1152, - "name": "DUP1", - "source": 22 - }, - { - "begin": 1144, - "end": 1156, - "name": "REVERT", - "source": 22 - }, - { - "begin": 1106, - "end": 1158, - "name": "tag", - "source": 22, - "value": "419" - }, - { - "begin": 1106, - "end": 1158, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1190, - "end": 1199, - "name": "DUP4", - "source": 22 - }, - { - "begin": 1177, - "end": 1200, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 1167, - "end": 1200, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 1167, - "end": 1200, - "name": "POP", - "source": 22 - }, - { - "begin": 1251, - "end": 1253, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 1240, - "end": 1249, - "name": "DUP5", - "source": 22 - }, - { - "begin": 1236, - "end": 1254, - "name": "ADD", - "source": 22 - }, - { - "begin": 1223, - "end": 1255, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 1278, - "end": 1296, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 1270, - "end": 1276, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1267, - "end": 1297, - "name": "GT", - "source": 22 - }, - { - "begin": 1264, - "end": 1314, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 1264, - "end": 1314, - "name": "PUSH [tag]", - "source": 22, - "value": "420" - }, - { - "begin": 1264, - "end": 1314, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 1310, - "end": 1311, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1307, - "end": 1308, - "name": "DUP1", - "source": 22 - }, - { - "begin": 1300, - "end": 1312, - "name": "REVERT", - "source": 22 - }, - { - "begin": 1264, - "end": 1314, - "name": "tag", - "source": 22, - "value": "420" - }, - { - "begin": 1264, - "end": 1314, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1349, - "end": 1407, - "name": "PUSH [tag]", - "source": 22, - "value": "421" - }, - { - "begin": 1399, - "end": 1406, - "name": "DUP7", - "source": 22 - }, - { - "begin": 1390, - "end": 1396, - "name": "DUP3", - "source": 22 - }, - { - "begin": 1379, - "end": 1388, - "name": "DUP8", - "source": 22 - }, - { - "begin": 1375, - "end": 1397, - "name": "ADD", - "source": 22 - }, - { - "begin": 1349, - "end": 1407, - "name": "PUSH [tag]", - "source": 22, - "value": "398" - }, - { - "begin": 1349, - "end": 1407, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 1349, - "end": 1407, - "name": "tag", - "source": 22, - "value": "421" - }, - { - "begin": 1349, - "end": 1407, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 990, - "end": 1467, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 990, - "end": 1467, - "name": "SWAP8", - "source": 22 - }, - { - "begin": 1426, - "end": 1434, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 1426, - "end": 1434, - "name": "SWAP7", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1323, - "end": 1407, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 1323, - "end": 1407, - "name": "SWAP5", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 990, - "end": 1467, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 1725, - "end": 2442, - "name": "tag", - "source": 22, - "value": "33" - }, - { - "begin": 1725, - "end": 2442, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1815, - "end": 1821, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1823, - "end": 1829, - "name": "DUP1", - "source": 22 - }, - { - "begin": 1831, - "end": 1837, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1839, - "end": 1845, - "name": "DUP1", - "source": 22 - }, - { - "begin": 1892, - "end": 1894, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 1880, - "end": 1889, - "name": "DUP6", - "source": 22 - }, - { - "begin": 1871, - "end": 1878, - "name": "DUP8", - "source": 22 - }, - { - "begin": 1867, - "end": 1890, - "name": "SUB", - "source": 22 - }, - { - "begin": 1863, - "end": 1895, - "name": "SLT", - "source": 22 - }, - { - "begin": 1860, - "end": 1912, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 1860, - "end": 1912, - "name": "PUSH [tag]", - "source": 22, - "value": "424" - }, - { - "begin": 1860, - "end": 1912, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 1908, - "end": 1909, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1905, - "end": 1906, - "name": "DUP1", - "source": 22 - }, - { - "begin": 1898, - "end": 1910, - "name": "REVERT", - "source": 22 - }, - { - "begin": 1860, - "end": 1912, - "name": "tag", - "source": 22, - "value": "424" - }, - { - "begin": 1860, - "end": 1912, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1948, - "end": 1957, - "name": "DUP5", - "source": 22 - }, - { - "begin": 1935, - "end": 1958, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 1977, - "end": 1995, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 2018, - "end": 2020, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2010, - "end": 2016, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2007, - "end": 2021, - "name": "GT", - "source": 22 - }, - { - "begin": 2004, - "end": 2038, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 2004, - "end": 2038, - "name": "PUSH [tag]", - "source": 22, - "value": "425" - }, - { - "begin": 2004, - "end": 2038, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 2034, - "end": 2035, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2031, - "end": 2032, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2024, - "end": 2036, - "name": "REVERT", - "source": 22 - }, - { - "begin": 2004, - "end": 2038, - "name": "tag", - "source": 22, - "value": "425" - }, - { - "begin": 2004, - "end": 2038, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 2073, - "end": 2131, - "name": "PUSH [tag]", - "source": 22, - "value": "426" - }, - { - "begin": 2123, - "end": 2130, - "name": "DUP9", - "source": 22 - }, - { - "begin": 2114, - "end": 2120, - "name": "DUP4", - "source": 22 - }, - { - "begin": 2103, - "end": 2112, - "name": "DUP10", - "source": 22 - }, - { - "begin": 2099, - "end": 2121, - "name": "ADD", - "source": 22 - }, - { - "begin": 2073, - "end": 2131, - "name": "PUSH [tag]", - "source": 22, - "value": "398" - }, - { - "begin": 2073, - "end": 2131, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 2073, - "end": 2131, - "name": "tag", - "source": 22, - "value": "426" - }, - { - "begin": 2073, - "end": 2131, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 2150, - "end": 2158, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 2150, - "end": 2158, - "name": "SWAP7", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2047, - "end": 2131, - "name": "SWAP5", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2238, - "end": 2240, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 2223, - "end": 2241, - "name": "DUP8", - "source": 22 - }, - { - "begin": 2223, - "end": 2241, - "name": "ADD", - "source": 22 - }, - { - "begin": 2210, - "end": 2242, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 2210, - "end": 2242, - "name": "SWAP2", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2254, - "end": 2270, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2254, - "end": 2270, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2254, - "end": 2270, - "name": "GT", - "source": 22 - }, - { - "begin": 2251, - "end": 2287, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 2251, - "end": 2287, - "name": "PUSH [tag]", - "source": 22, - "value": "427" - }, - { - "begin": 2251, - "end": 2287, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 2283, - "end": 2284, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2280, - "end": 2281, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2273, - "end": 2285, - "name": "REVERT", - "source": 22 - }, - { - "begin": 2251, - "end": 2287, - "name": "tag", - "source": 22, - "value": "427" - }, - { - "begin": 2251, - "end": 2287, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 2251, - "end": 2287, - "name": "POP", - "source": 22 - }, - { - "begin": 2322, - "end": 2382, - "name": "PUSH [tag]", - "source": 22, - "value": "428" - }, - { - "begin": 2374, - "end": 2381, - "name": "DUP8", - "source": 22 - }, - { - "begin": 2363, - "end": 2371, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2352, - "end": 2361, - "name": "DUP9", - "source": 22 - }, - { - "begin": 2348, - "end": 2372, - "name": "ADD", - "source": 22 - }, - { - "begin": 2322, - "end": 2382, - "name": "PUSH [tag]", - "source": 22, - "value": "398" - }, - { - "begin": 2322, - "end": 2382, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 2322, - "end": 2382, - "name": "tag", - "source": 22, - "value": "428" - }, - { - "begin": 2322, - "end": 2382, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1725, - "end": 2442, - "name": "SWAP6", - "source": 22 - }, - { - "begin": 1725, - "end": 2442, - "name": "SWAP9", - "source": 22 - }, - { - "begin": 1725, - "end": 2442, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 1725, - "end": 2442, - "name": "SWAP8", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2401, - "end": 2409, - "name": "SWAP6", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1725, - "end": 2442, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 2447, - "end": 2627, - "name": "tag", - "source": 22, - "value": "39" - }, - { - "begin": 2447, - "end": 2627, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 2506, - "end": 2512, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2559, - "end": 2561, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 2547, - "end": 2556, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2538, - "end": 2545, - "name": "DUP5", - "source": 22 - }, - { - "begin": 2534, - "end": 2557, - "name": "SUB", - "source": 22 - }, - { - "begin": 2530, - "end": 2562, - "name": "SLT", - "source": 22 - }, - { - "begin": 2527, - "end": 2579, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 2527, - "end": 2579, - "name": "PUSH [tag]", - "source": 22, - "value": "430" - }, - { - "begin": 2527, - "end": 2579, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 2575, - "end": 2576, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2572, - "end": 2573, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2565, - "end": 2577, - "name": "REVERT", - "source": 22 - }, - { - "begin": 2527, - "end": 2579, - "name": "tag", - "source": 22, - "value": "430" - }, - { - "begin": 2527, - "end": 2579, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2598, - "end": 2621, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 2598, - "end": 2621, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 2447, - "end": 2627, - "name": "SWAP1", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 2447, - "end": 2627, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 2814, - "end": 3201, - "name": "tag", - "source": 22, - "value": "399" - }, - { - "begin": 2814, - "end": 3201, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 2897, - "end": 2905, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2907, - "end": 2913, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2961, - "end": 2964, - "name": "DUP4", - "source": 22 - }, - { - "begin": 2954, - "end": 2958, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 2946, - "end": 2952, - "name": "DUP5", - "source": 22 - }, - { - "begin": 2942, - "end": 2959, - "name": "ADD", - "source": 22 - }, - { - "begin": 2938, - "end": 2965, - "name": "SLT", - "source": 22 - }, - { - "begin": 2928, - "end": 2983, - "name": "PUSH [tag]", - "source": 22, - "value": "433" - }, - { - "begin": 2928, - "end": 2983, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 2979, - "end": 2980, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2976, - "end": 2977, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2969, - "end": 2981, - "name": "REVERT", - "source": 22 - }, - { - "begin": 2928, - "end": 2983, - "name": "tag", - "source": 22, - "value": "433" - }, - { - "begin": 2928, - "end": 2983, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3002, - "end": 3022, - "name": "DUP2", - "source": 22 - }, - { - "begin": 3002, - "end": 3022, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 3045, - "end": 3063, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 3034, - "end": 3064, - "name": "DUP2", - "source": 22 - }, - { - "begin": 3034, - "end": 3064, - "name": "GT", - "source": 22 - }, - { - "begin": 3031, - "end": 3081, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 3031, - "end": 3081, - "name": "PUSH [tag]", - "source": 22, - "value": "434" - }, - { - "begin": 3031, - "end": 3081, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 3077, - "end": 3078, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3074, - "end": 3075, - "name": "DUP1", - "source": 22 - }, - { - "begin": 3067, - "end": 3079, - "name": "REVERT", - "source": 22 - }, - { - "begin": 3031, - "end": 3081, - "name": "tag", - "source": 22, - "value": "434" - }, - { - "begin": 3031, - "end": 3081, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 3114, - "end": 3118, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 3106, - "end": 3112, - "name": "DUP4", - "source": 22 - }, - { - "begin": 3102, - "end": 3119, - "name": "ADD", - "source": 22 - }, - { - "begin": 3090, - "end": 3119, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 3090, - "end": 3119, - "name": "POP", - "source": 22 - }, - { - "begin": 3174, - "end": 3177, - "name": "DUP4", - "source": 22 - }, - { - "begin": 3167, - "end": 3171, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 3157, - "end": 3163, - "name": "DUP3", - "source": 22 - }, - { - "begin": 3154, - "end": 3155, - "name": "PUSH", - "source": 22, - "value": "5" - }, - { - "begin": 3150, - "end": 3164, - "name": "SHL", - "source": 22 - }, - { - "begin": 3142, - "end": 3148, - "name": "DUP6", - "source": 22 - }, - { - "begin": 3138, - "end": 3165, - "name": "ADD", - "source": 22 - }, - { - "begin": 3134, - "end": 3172, - "name": "ADD", - "source": 22 - }, - { - "begin": 3131, - "end": 3178, - "name": "GT", - "source": 22 - }, - { - "begin": 3128, - "end": 3195, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 3128, - "end": 3195, - "name": "PUSH [tag]", - "source": 22, - "value": "417" - }, - { - "begin": 3128, - "end": 3195, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 3191, - "end": 3192, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3188, - "end": 3189, - "name": "DUP1", - "source": 22 - }, - { - "begin": 3181, - "end": 3193, - "name": "REVERT", - "source": 22 - }, - { - "begin": 3206, - "end": 3694, - "name": "tag", - "source": 22, - "value": "49" - }, - { - "begin": 3206, - "end": 3694, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 3323, - "end": 3329, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3331, - "end": 3337, - "name": "DUP1", - "source": 22 - }, - { - "begin": 3384, - "end": 3386, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 3372, - "end": 3381, - "name": "DUP4", - "source": 22 - }, - { - "begin": 3363, - "end": 3370, - "name": "DUP6", - "source": 22 - }, - { - "begin": 3359, - "end": 3382, - "name": "SUB", - "source": 22 - }, - { - "begin": 3355, - "end": 3387, - "name": "SLT", - "source": 22 - }, - { - "begin": 3352, - "end": 3404, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 3352, - "end": 3404, - "name": "PUSH [tag]", - "source": 22, - "value": "437" - }, - { - "begin": 3352, - "end": 3404, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 3400, - "end": 3401, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3397, - "end": 3398, - "name": "DUP1", - "source": 22 - }, - { - "begin": 3390, - "end": 3402, - "name": "REVERT", - "source": 22 - }, - { - "begin": 3352, - "end": 3404, - "name": "tag", - "source": 22, - "value": "437" - }, - { - "begin": 3352, - "end": 3404, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 3440, - "end": 3449, - "name": "DUP3", - "source": 22 - }, - { - "begin": 3427, - "end": 3450, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 3473, - "end": 3491, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 3465, - "end": 3471, - "name": "DUP2", - "source": 22 - }, - { - "begin": 3462, - "end": 3492, - "name": "GT", - "source": 22 - }, - { - "begin": 3459, - "end": 3509, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 3459, - "end": 3509, - "name": "PUSH [tag]", - "source": 22, - "value": "438" - }, - { - "begin": 3459, - "end": 3509, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 3505, - "end": 3506, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3502, - "end": 3503, - "name": "DUP1", - "source": 22 - }, - { - "begin": 3495, - "end": 3507, - "name": "REVERT", - "source": 22 - }, - { - "begin": 3459, - "end": 3509, - "name": "tag", - "source": 22, - "value": "438" - }, - { - "begin": 3459, - "end": 3509, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 3544, - "end": 3634, - "name": "PUSH [tag]", - "source": 22, - "value": "439" - }, - { - "begin": 3626, - "end": 3633, - "name": "DUP6", - "source": 22 - }, - { - "begin": 3617, - "end": 3623, - "name": "DUP3", - "source": 22 - }, - { - "begin": 3606, - "end": 3615, - "name": "DUP7", - "source": 22 - }, - { - "begin": 3602, - "end": 3624, - "name": "ADD", - "source": 22 - }, - { - "begin": 3544, - "end": 3634, - "name": "PUSH [tag]", - "source": 22, - "value": "399" - }, - { - "begin": 3544, - "end": 3634, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 3544, - "end": 3634, - "name": "tag", - "source": 22, - "value": "439" - }, - { - "begin": 3544, - "end": 3634, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 3653, - "end": 3661, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 3653, - "end": 3661, - "name": "SWAP7", - "source": 22 - }, - { - "begin": 3518, - "end": 3634, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 3518, - "end": 3634, - "name": "SWAP6", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3206, - "end": 3694, - "name": "SWAP4", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3206, - "end": 3694, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 3699, - "end": 4563, - "name": "tag", - "source": 22, - "value": "54" - }, - { - "begin": 3699, - "end": 4563, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 3845, - "end": 3851, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3853, - "end": 3859, - "name": "DUP1", - "source": 22 - }, - { - "begin": 3861, - "end": 3867, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3869, - "end": 3875, - "name": "DUP1", - "source": 22 - }, - { - "begin": 3877, - "end": 3883, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3930, - "end": 3932, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 3918, - "end": 3927, - "name": "DUP7", - "source": 22 - }, - { - "begin": 3909, - "end": 3916, - "name": "DUP9", - "source": 22 - }, - { - "begin": 3905, - "end": 3928, - "name": "SUB", - "source": 22 - }, - { - "begin": 3901, - "end": 3933, - "name": "SLT", - "source": 22 - }, - { - "begin": 3898, - "end": 3950, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 3898, - "end": 3950, - "name": "PUSH [tag]", - "source": 22, - "value": "441" - }, - { - "begin": 3898, - "end": 3950, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 3946, - "end": 3947, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 3943, - "end": 3944, - "name": "DUP1", - "source": 22 - }, - { - "begin": 3936, - "end": 3948, - "name": "REVERT", - "source": 22 - }, - { - "begin": 3898, - "end": 3950, - "name": "tag", - "source": 22, - "value": "441" - }, - { - "begin": 3898, - "end": 3950, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 3986, - "end": 3995, - "name": "DUP6", - "source": 22 - }, - { - "begin": 3973, - "end": 3996, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 4015, - "end": 4033, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 4056, - "end": 4058, - "name": "DUP1", - "source": 22 - }, - { - "begin": 4048, - "end": 4054, - "name": "DUP3", - "source": 22 - }, - { - "begin": 4045, - "end": 4059, - "name": "GT", - "source": 22 - }, - { - "begin": 4042, - "end": 4076, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 4042, - "end": 4076, - "name": "PUSH [tag]", - "source": 22, - "value": "442" - }, - { - "begin": 4042, - "end": 4076, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 4072, - "end": 4073, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 4069, - "end": 4070, - "name": "DUP1", - "source": 22 - }, - { - "begin": 4062, - "end": 4074, - "name": "REVERT", - "source": 22 - }, - { - "begin": 4042, - "end": 4076, - "name": "tag", - "source": 22, - "value": "442" - }, - { - "begin": 4042, - "end": 4076, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 4111, - "end": 4201, - "name": "PUSH [tag]", - "source": 22, - "value": "443" - }, - { - "begin": 4193, - "end": 4200, - "name": "DUP10", - "source": 22 - }, - { - "begin": 4184, - "end": 4190, - "name": "DUP4", - "source": 22 - }, - { - "begin": 4173, - "end": 4182, - "name": "DUP11", - "source": 22 - }, - { - "begin": 4169, - "end": 4191, - "name": "ADD", - "source": 22 - }, - { - "begin": 4111, - "end": 4201, - "name": "PUSH [tag]", - "source": 22, - "value": "399" - }, - { - "begin": 4111, - "end": 4201, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 4111, - "end": 4201, - "name": "tag", - "source": 22, - "value": "443" - }, - { - "begin": 4111, - "end": 4201, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 4220, - "end": 4228, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 4220, - "end": 4228, - "name": "SWAP8", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4085, - "end": 4201, - "name": "SWAP6", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4302, - "end": 4304, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 4287, - "end": 4305, - "name": "DUP9", - "source": 22 - }, - { - "begin": 4287, - "end": 4305, - "name": "ADD", - "source": 22 - }, - { - "begin": 4274, - "end": 4306, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 4274, - "end": 4306, - "name": "SWAP5", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4359, - "end": 4361, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 4344, - "end": 4362, - "name": "DUP9", - "source": 22 - }, - { - "begin": 4344, - "end": 4362, - "name": "ADD", - "source": 22 - }, - { - "begin": 4331, - "end": 4363, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 4331, - "end": 4363, - "name": "SWAP2", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4375, - "end": 4391, - "name": "DUP1", - "source": 22 - }, - { - "begin": 4375, - "end": 4391, - "name": "DUP3", - "source": 22 - }, - { - "begin": 4375, - "end": 4391, - "name": "GT", - "source": 22 - }, - { - "begin": 4372, - "end": 4408, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 4372, - "end": 4408, - "name": "PUSH [tag]", - "source": 22, - "value": "444" - }, - { - "begin": 4372, - "end": 4408, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 4404, - "end": 4405, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 4401, - "end": 4402, - "name": "DUP1", - "source": 22 - }, - { - "begin": 4394, - "end": 4406, - "name": "REVERT", - "source": 22 - }, - { - "begin": 4372, - "end": 4408, - "name": "tag", - "source": 22, - "value": "444" - }, - { - "begin": 4372, - "end": 4408, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 4372, - "end": 4408, - "name": "POP", - "source": 22 - }, - { - "begin": 4443, - "end": 4503, - "name": "PUSH [tag]", - "source": 22, - "value": "445" - }, - { - "begin": 4495, - "end": 4502, - "name": "DUP9", - "source": 22 - }, - { - "begin": 4484, - "end": 4492, - "name": "DUP3", - "source": 22 - }, - { - "begin": 4473, - "end": 4482, - "name": "DUP10", - "source": 22 - }, - { - "begin": 4469, - "end": 4493, - "name": "ADD", - "source": 22 - }, - { - "begin": 4443, - "end": 4503, - "name": "PUSH [tag]", - "source": 22, - "value": "398" - }, - { - "begin": 4443, - "end": 4503, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 4443, - "end": 4503, - "name": "tag", - "source": 22, - "value": "445" - }, - { - "begin": 4443, - "end": 4503, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 3699, - "end": 4563, - "name": "SWAP7", - "source": 22 - }, - { - "begin": 3699, - "end": 4563, - "name": "SWAP10", - "source": 22 - }, - { - "begin": 3699, - "end": 4563, - "name": "SWAP6", - "source": 22 - }, - { - "begin": 3699, - "end": 4563, - "name": "SWAP9", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3699, - "end": 4563, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 3699, - "end": 4563, - "name": "SWAP7", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 4522, - "end": 4530, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 4522, - "end": 4530, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 4417, - "end": 4503, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 3699, - "end": 4563, - "name": "SWAP3", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 3699, - "end": 4563, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 5403, - "end": 5587, - "name": "tag", - "source": 22, - "value": "400" - }, - { - "begin": 5403, - "end": 5587, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 5455, - "end": 5532, - "name": "PUSH", - "source": 22, - "value": "4E487B7100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 5452, - "end": 5453, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 5445, - "end": 5533, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 5552, - "end": 5556, - "name": "PUSH", - "source": 22, - "value": "41" - }, - { - "begin": 5549, - "end": 5550, - "name": "PUSH", - "source": 22, - "value": "4" - }, - { - "begin": 5542, - "end": 5557, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 5576, - "end": 5580, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 5573, - "end": 5574, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 5566, - "end": 5581, - "name": "REVERT", - "source": 22 - }, - { - "begin": 5592, - "end": 6572, - "name": "tag", - "source": 22, - "value": "71" - }, - { - "begin": 5592, - "end": 6572, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 5660, - "end": 5666, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 5713, - "end": 5715, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 5701, - "end": 5710, - "name": "DUP3", - "source": 22 - }, - { - "begin": 5692, - "end": 5699, - "name": "DUP5", - "source": 22 - }, - { - "begin": 5688, - "end": 5711, - "name": "SUB", - "source": 22 - }, - { - "begin": 5684, - "end": 5716, - "name": "SLT", - "source": 22 - }, - { - "begin": 5681, - "end": 5733, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 5681, - "end": 5733, - "name": "PUSH [tag]", - "source": 22, - "value": "452" - }, - { - "begin": 5681, - "end": 5733, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 5729, - "end": 5730, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 5726, - "end": 5727, - "name": "DUP1", - "source": 22 - }, - { - "begin": 5719, - "end": 5731, - "name": "REVERT", - "source": 22 - }, - { - "begin": 5681, - "end": 5733, - "name": "tag", - "source": 22, - "value": "452" - }, - { - "begin": 5681, - "end": 5733, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 5769, - "end": 5778, - "name": "DUP2", - "source": 22 - }, - { - "begin": 5756, - "end": 5779, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 5798, - "end": 5816, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 5839, - "end": 5841, - "name": "DUP1", - "source": 22 - }, - { - "begin": 5831, - "end": 5837, - "name": "DUP3", - "source": 22 - }, - { - "begin": 5828, - "end": 5842, - "name": "GT", - "source": 22 - }, - { - "begin": 5825, - "end": 5859, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 5825, - "end": 5859, - "name": "PUSH [tag]", - "source": 22, - "value": "453" - }, - { - "begin": 5825, - "end": 5859, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 5855, - "end": 5856, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 5852, - "end": 5853, - "name": "DUP1", - "source": 22 - }, - { - "begin": 5845, - "end": 5857, - "name": "REVERT", - "source": 22 - }, - { - "begin": 5825, - "end": 5859, - "name": "tag", - "source": 22, - "value": "453" - }, - { - "begin": 5825, - "end": 5859, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 5893, - "end": 5899, - "name": "DUP2", - "source": 22 - }, - { - "begin": 5882, - "end": 5891, - "name": "DUP5", - "source": 22 - }, - { - "begin": 5878, - "end": 5900, - "name": "ADD", - "source": 22 - }, - { - "begin": 5868, - "end": 5900, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 5868, - "end": 5900, - "name": "POP", - "source": 22 - }, - { - "begin": 5938, - "end": 5945, - "name": "DUP5", - "source": 22 - }, - { - "begin": 5931, - "end": 5935, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 5927, - "end": 5929, - "name": "DUP4", - "source": 22 - }, - { - "begin": 5923, - "end": 5936, - "name": "ADD", - "source": 22 - }, - { - "begin": 5919, - "end": 5946, - "name": "SLT", - "source": 22 - }, - { - "begin": 5909, - "end": 5964, - "name": "PUSH [tag]", - "source": 22, - "value": "454" - }, - { - "begin": 5909, - "end": 5964, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 5960, - "end": 5961, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 5957, - "end": 5958, - "name": "DUP1", - "source": 22 - }, - { - "begin": 5950, - "end": 5962, - "name": "REVERT", - "source": 22 - }, - { - "begin": 5909, - "end": 5964, - "name": "tag", - "source": 22, - "value": "454" - }, - { - "begin": 5909, - "end": 5964, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 5996, - "end": 5998, - "name": "DUP2", - "source": 22 - }, - { - "begin": 5983, - "end": 5999, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 6018, - "end": 6020, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6014, - "end": 6016, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6011, - "end": 6021, - "name": "GT", - "source": 22 - }, - { - "begin": 6008, - "end": 6044, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 6008, - "end": 6044, - "name": "PUSH [tag]", - "source": 22, - "value": "456" - }, - { - "begin": 6008, - "end": 6044, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 6024, - "end": 6042, - "name": "PUSH [tag]", - "source": 22, - "value": "456" - }, - { - "begin": 6024, - "end": 6042, - "name": "PUSH [tag]", - "source": 22, - "value": "400" - }, - { - "begin": 6024, - "end": 6042, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 6024, - "end": 6042, - "name": "tag", - "source": 22, - "value": "456" - }, - { - "begin": 6024, - "end": 6042, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 6158, - "end": 6160, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 6152, - "end": 6161, - "name": "MLOAD", - "source": 22 - }, - { - "begin": 6220, - "end": 6224, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 6212, - "end": 6225, - "name": "DUP3", - "source": 22 - }, - { - "begin": 6212, - "end": 6225, - "name": "ADD", - "source": 22 - }, - { - "begin": 6063, - "end": 6129, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 6208, - "end": 6230, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 6208, - "end": 6230, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6208, - "end": 6230, - "name": "AND", - "source": 22 - }, - { - "begin": 6232, - "end": 6234, - "name": "PUSH", - "source": 22, - "value": "3F" - }, - { - "begin": 6204, - "end": 6235, - "name": "ADD", - "source": 22 - }, - { - "begin": 6200, - "end": 6240, - "name": "AND", - "source": 22 - }, - { - "begin": 6188, - "end": 6241, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6188, - "end": 6241, - "name": "ADD", - "source": 22 - }, - { - "begin": 6188, - "end": 6241, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 6256, - "end": 6274, - "name": "DUP4", - "source": 22 - }, - { - "begin": 6256, - "end": 6274, - "name": "DUP3", - "source": 22 - }, - { - "begin": 6256, - "end": 6274, - "name": "GT", - "source": 22 - }, - { - "begin": 6276, - "end": 6298, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6276, - "end": 6298, - "name": "DUP4", - "source": 22 - }, - { - "begin": 6276, - "end": 6298, - "name": "LT", - "source": 22 - }, - { - "begin": 6253, - "end": 6299, - "name": "OR", - "source": 22 - }, - { - "begin": 6250, - "end": 6322, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 6250, - "end": 6322, - "name": "PUSH [tag]", - "source": 22, - "value": "458" - }, - { - "begin": 6250, - "end": 6322, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 6302, - "end": 6320, - "name": "PUSH [tag]", - "source": 22, - "value": "458" - }, - { - "begin": 6302, - "end": 6320, - "name": "PUSH [tag]", - "source": 22, - "value": "400" - }, - { - "begin": 6302, - "end": 6320, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 6302, - "end": 6320, - "name": "tag", - "source": 22, - "value": "458" - }, - { - "begin": 6302, - "end": 6320, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 6342, - "end": 6352, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6338, - "end": 6340, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 6331, - "end": 6353, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 6377, - "end": 6379, - "name": "DUP3", - "source": 22 - }, - { - "begin": 6369, - "end": 6375, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6362, - "end": 6380, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 6417, - "end": 6424, - "name": "DUP8", - "source": 22 - }, - { - "begin": 6412, - "end": 6414, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 6407, - "end": 6409, - "name": "DUP5", - "source": 22 - }, - { - "begin": 6403, - "end": 6405, - "name": "DUP8", - "source": 22 - }, - { - "begin": 6399, - "end": 6410, - "name": "ADD", - "source": 22 - }, - { - "begin": 6395, - "end": 6415, - "name": "ADD", - "source": 22 - }, - { - "begin": 6392, - "end": 6425, - "name": "GT", - "source": 22 - }, - { - "begin": 6389, - "end": 6442, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 6389, - "end": 6442, - "name": "PUSH [tag]", - "source": 22, - "value": "459" - }, - { - "begin": 6389, - "end": 6442, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 6438, - "end": 6439, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 6435, - "end": 6436, - "name": "DUP1", - "source": 22 - }, - { - "begin": 6428, - "end": 6440, - "name": "REVERT", - "source": 22 - }, - { - "begin": 6389, - "end": 6442, - "name": "tag", - "source": 22, - "value": "459" - }, - { - "begin": 6389, - "end": 6442, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 6494, - "end": 6496, - "name": "DUP3", - "source": 22 - }, - { - "begin": 6489, - "end": 6491, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 6485, - "end": 6487, - "name": "DUP7", - "source": 22 - }, - { - "begin": 6481, - "end": 6492, - "name": "ADD", - "source": 22 - }, - { - "begin": 6476, - "end": 6478, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 6468, - "end": 6474, - "name": "DUP4", - "source": 22 - }, - { - "begin": 6464, - "end": 6479, - "name": "ADD", - "source": 22 - }, - { - "begin": 6451, - "end": 6497, - "name": "CALLDATACOPY", - "source": 22 - }, - { - "begin": 6539, - "end": 6540, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 6517, - "end": 6532, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 6517, - "end": 6532, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6517, - "end": 6532, - "name": "ADD", - "source": 22 - }, - { - "begin": 6534, - "end": 6536, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 6513, - "end": 6537, - "name": "ADD", - "source": 22 - }, - { - "begin": 6506, - "end": 6541, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 6506, - "end": 6541, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 6506, - "end": 6541, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 6506, - "end": 6541, - "name": "MSTORE", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6521, - "end": 6527, - "name": "SWAP6", - "source": 22 - }, - { - "begin": 5592, - "end": 6572, - "name": "SWAP5", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 5592, - "end": 6572, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 6808, - "end": 7079, - "name": "tag", - "source": 22, - "value": "89" - }, - { - "begin": 6808, - "end": 7079, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 6991, - "end": 6997, - "name": "DUP2", - "source": 22 - }, - { - "begin": 6983, - "end": 6989, - "name": "DUP4", - "source": 22 - }, - { - "begin": 6978, - "end": 6981, - "name": "DUP3", - "source": 22 - }, - { - "begin": 6965, - "end": 6998, - "name": "CALLDATACOPY", - "source": 22 - }, - { - "begin": 6947, - "end": 6950, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 7017, - "end": 7033, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 7017, - "end": 7033, - "name": "ADD", - "source": 22 - }, - { - "begin": 7042, - "end": 7055, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 7042, - "end": 7055, - "name": "DUP2", - "source": 22 - }, - { - "begin": 7042, - "end": 7055, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 7017, - "end": 7033, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 6808, - "end": 7079, - "name": "SWAP1", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 6808, - "end": 7079, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 7416, - "end": 7576, - "name": "tag", - "source": 22, - "value": "401" - }, - { - "begin": 7416, - "end": 7576, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 7481, - "end": 7501, - "name": "DUP1", - "source": 22 - }, - { - "begin": 7481, - "end": 7501, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 7537, - "end": 7550, - "name": "DUP1", - "source": 22 - }, - { - "begin": 7537, - "end": 7550, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 7530, - "end": 7551, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 7520, - "end": 7552, - "name": "DUP2", - "source": 22 - }, - { - "begin": 7520, - "end": 7552, - "name": "EQ", - "source": 22 - }, - { - "begin": 7510, - "end": 7570, - "name": "PUSH [tag]", - "source": 22, - "value": "464" - }, - { - "begin": 7510, - "end": 7570, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 7566, - "end": 7567, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 7563, - "end": 7564, - "name": "DUP1", - "source": 22 - }, - { - "begin": 7556, - "end": 7568, - "name": "REVERT", - "source": 22 - }, - { - "begin": 7510, - "end": 7570, - "name": "tag", - "source": 22, - "value": "464" - }, - { - "begin": 7510, - "end": 7570, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 7416, - "end": 7576, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 7416, - "end": 7576, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 7416, - "end": 7576, - "name": "POP", - "source": 22 - }, - { - "begin": 7416, - "end": 7576, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 7581, - "end": 7777, - "name": "tag", - "source": 22, - "value": "402" - }, - { - "begin": 7581, - "end": 7777, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 7649, - "end": 7669, - "name": "DUP1", - "source": 22 - }, - { - "begin": 7649, - "end": 7669, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 7709, - "end": 7751, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 7698, - "end": 7752, - "name": "DUP2", - "source": 22 - }, - { - "begin": 7698, - "end": 7752, - "name": "AND", - "source": 22 - }, - { - "begin": 7688, - "end": 7753, - "name": "DUP2", - "source": 22 - }, - { - "begin": 7688, - "end": 7753, - "name": "EQ", - "source": 22 - }, - { - "begin": 7678, - "end": 7771, - "name": "PUSH [tag]", - "source": 22, - "value": "464" - }, - { - "begin": 7678, - "end": 7771, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 7767, - "end": 7768, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 7764, - "end": 7765, - "name": "DUP1", - "source": 22 - }, - { - "begin": 7757, - "end": 7769, - "name": "REVERT", - "source": 22 - }, - { - "begin": 7782, - "end": 8107, - "name": "tag", - "source": 22, - "value": "403" - }, - { - "begin": 7782, - "end": 8107, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 7870, - "end": 7876, - "name": "DUP2", - "source": 22 - }, - { - "begin": 7865, - "end": 7868, - "name": "DUP4", - "source": 22 - }, - { - "begin": 7858, - "end": 7877, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 7922, - "end": 7928, - "name": "DUP2", - "source": 22 - }, - { - "begin": 7915, - "end": 7920, - "name": "DUP2", - "source": 22 - }, - { - "begin": 7908, - "end": 7912, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 7903, - "end": 7906, - "name": "DUP6", - "source": 22 - }, - { - "begin": 7899, - "end": 7913, - "name": "ADD", - "source": 22 - }, - { - "begin": 7886, - "end": 7929, - "name": "CALLDATACOPY", - "source": 22 - }, - { - "begin": 7886, - "end": 7929, - "name": "POP", - "source": 22 - }, - { - "begin": 7974, - "end": 7975, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 7967, - "end": 7971, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 7958, - "end": 7964, - "name": "DUP3", - "source": 22 - }, - { - "begin": 7953, - "end": 7956, - "name": "DUP5", - "source": 22 - }, - { - "begin": 7949, - "end": 7965, - "name": "ADD", - "source": 22 - }, - { - "begin": 7945, - "end": 7972, - "name": "ADD", - "source": 22 - }, - { - "begin": 7938, - "end": 7976, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 7840, - "end": 7843, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 8096, - "end": 8100, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 8026, - "end": 8092, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 8021, - "end": 8023, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 8013, - "end": 8019, - "name": "DUP5", - "source": 22 - }, - { - "begin": 8009, - "end": 8024, - "name": "ADD", - "source": 22 - }, - { - "begin": 8005, - "end": 8093, - "name": "AND", - "source": 22 - }, - { - "begin": 8000, - "end": 8003, - "name": "DUP5", - "source": 22 - }, - { - "begin": 7996, - "end": 8094, - "name": "ADD", - "source": 22 - }, - { - "begin": 7992, - "end": 8101, - "name": "ADD", - "source": 22 - }, - { - "begin": 7985, - "end": 8101, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 7985, - "end": 8101, - "name": "POP", - "source": 22 - }, - { - "begin": 7782, - "end": 8107, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 7782, - "end": 8107, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 7782, - "end": 8107, - "name": "POP", - "source": 22 - }, - { - "begin": 7782, - "end": 8107, - "name": "POP", - "source": 22 - }, - { - "begin": 7782, - "end": 8107, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 8112, - "end": 10140, - "name": "tag", - "source": 22, - "value": "404" - }, - { - "begin": 8112, - "end": 10140, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 8232, - "end": 8238, - "name": "DUP2", - "source": 22 - }, - { - "begin": 8227, - "end": 8230, - "name": "DUP4", - "source": 22 - }, - { - "begin": 8220, - "end": 8239, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 8202, - "end": 8205, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 8258, - "end": 8262, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 8299, - "end": 8301, - "name": "DUP1", - "source": 22 - }, - { - "begin": 8294, - "end": 8297, - "name": "DUP6", - "source": 22 - }, - { - "begin": 8290, - "end": 8302, - "name": "ADD", - "source": 22 - }, - { - "begin": 8324, - "end": 8335, - "name": "DUP1", - "source": 22 - }, - { - "begin": 8351, - "end": 8362, - "name": "DUP2", - "source": 22 - }, - { - "begin": 8344, - "end": 8362, - "name": "SWAP7", - "source": 22 - }, - { - "begin": 8344, - "end": 8362, - "name": "POP", - "source": 22 - }, - { - "begin": 8401, - "end": 8407, - "name": "DUP6", - "source": 22 - }, - { - "begin": 8398, - "end": 8399, - "name": "PUSH", - "source": 22, - "value": "5" - }, - { - "begin": 8394, - "end": 8408, - "name": "SHL", - "source": 22 - }, - { - "begin": 8387, - "end": 8392, - "name": "DUP2", - "source": 22 - }, - { - "begin": 8383, - "end": 8409, - "name": "ADD", - "source": 22 - }, - { - "begin": 8371, - "end": 8409, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 8371, - "end": 8409, - "name": "POP", - "source": 22 - }, - { - "begin": 8432, - "end": 8437, - "name": "DUP5", - "source": 22 - }, - { - "begin": 8455, - "end": 8456, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 8465, - "end": 10114, - "name": "tag", - "source": 22, - "value": "469" - }, - { - "begin": 8465, - "end": 10114, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 8479, - "end": 8485, - "name": "DUP8", - "source": 22 - }, - { - "begin": 8476, - "end": 8477, - "name": "DUP2", - "source": 22 - }, - { - "begin": 8473, - "end": 8486, - "name": "LT", - "source": 22 - }, - { - "begin": 8465, - "end": 10114, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 8465, - "end": 10114, - "name": "PUSH [tag]", - "source": 22, - "value": "471" - }, - { - "begin": 8465, - "end": 10114, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 8550, - "end": 8555, - "name": "DUP3", - "source": 22 - }, - { - "begin": 8544, - "end": 8548, - "name": "DUP5", - "source": 22 - }, - { - "begin": 8540, - "end": 8556, - "name": "SUB", - "source": 22 - }, - { - "begin": 8535, - "end": 8538, - "name": "DUP10", - "source": 22 - }, - { - "begin": 8528, - "end": 8557, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 8609, - "end": 8615, - "name": "DUP2", - "source": 22 - }, - { - "begin": 8596, - "end": 8616, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 8695, - "end": 8761, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41" - }, - { - "begin": 8687, - "end": 8692, - "name": "DUP9", - "source": 22 - }, - { - "begin": 8671, - "end": 8685, - "name": "CALLDATASIZE", - "source": 22 - }, - { - "begin": 8667, - "end": 8693, - "name": "SUB", - "source": 22 - }, - { - "begin": 8663, - "end": 8762, - "name": "ADD", - "source": 22 - }, - { - "begin": 8643, - "end": 8661, - "name": "DUP2", - "source": 22 - }, - { - "begin": 8639, - "end": 8763, - "name": "SLT", - "source": 22 - }, - { - "begin": 8629, - "end": 8781, - "name": "PUSH [tag]", - "source": 22, - "value": "472" - }, - { - "begin": 8629, - "end": 8781, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 8777, - "end": 8778, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 8774, - "end": 8775, - "name": "DUP1", - "source": 22 - }, - { - "begin": 8767, - "end": 8779, - "name": "REVERT", - "source": 22 - }, - { - "begin": 8629, - "end": 8781, - "name": "tag", - "source": 22, - "value": "472" - }, - { - "begin": 8629, - "end": 8781, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 8809, - "end": 8839, - "name": "DUP8", - "source": 22 - }, - { - "begin": 8809, - "end": 8839, - "name": "ADD", - "source": 22 - }, - { - "begin": 8862, - "end": 8866, - "name": "PUSH", - "source": 22, - "value": "C0" - }, - { - "begin": 8906, - "end": 8930, - "name": "PUSH [tag]", - "source": 22, - "value": "473" - }, - { - "begin": 8809, - "end": 8839, - "name": "DUP3", - "source": 22 - }, - { - "begin": 8906, - "end": 8930, - "name": "PUSH [tag]", - "source": 22, - "value": "401" - }, - { - "begin": 8906, - "end": 8930, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 8906, - "end": 8930, - "name": "tag", - "source": 22, - "value": "473" - }, - { - "begin": 8906, - "end": 8930, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 8899, - "end": 8931, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 8892, - "end": 8932, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 8886, - "end": 8890, - "name": "DUP7", - "source": 22 - }, - { - "begin": 8879, - "end": 8933, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 8982, - "end": 9015, - "name": "PUSH [tag]", - "source": 22, - "value": "474" - }, - { - "begin": 9011, - "end": 9013, - "name": "DUP8", - "source": 22 - }, - { - "begin": 9002, - "end": 9009, - "name": "DUP4", - "source": 22 - }, - { - "begin": 8998, - "end": 9014, - "name": "ADD", - "source": 22 - }, - { - "begin": 8982, - "end": 9015, - "name": "PUSH [tag]", - "source": 22, - "value": "401" - }, - { - "begin": 8982, - "end": 9015, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 8982, - "end": 9015, - "name": "tag", - "source": 22, - "value": "474" - }, - { - "begin": 8982, - "end": 9015, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 8975, - "end": 9016, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 8968, - "end": 9017, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 8953, - "end": 8966, - "name": "DUP7", - "source": 22 - }, - { - "begin": 8953, - "end": 8966, - "name": "DUP9", - "source": 22 - }, - { - "begin": 8953, - "end": 8966, - "name": "ADD", - "source": 22 - }, - { - "begin": 8946, - "end": 9018, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 9041, - "end": 9045, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 9093, - "end": 9109, - "name": "DUP3", - "source": 22 - }, - { - "begin": 9093, - "end": 9109, - "name": "DUP2", - "source": 22 - }, - { - "begin": 9093, - "end": 9109, - "name": "ADD", - "source": 22 - }, - { - "begin": 9080, - "end": 9110, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 9065, - "end": 9078, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 9065, - "end": 9078, - "name": "DUP8", - "source": 22 - }, - { - "begin": 9065, - "end": 9078, - "name": "ADD", - "source": 22 - }, - { - "begin": 9058, - "end": 9111, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 9134, - "end": 9138, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 9215, - "end": 9257, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 9177, - "end": 9213, - "name": "PUSH [tag]", - "source": 22, - "value": "475" - }, - { - "begin": 9196, - "end": 9212, - "name": "DUP3", - "source": 22 - }, - { - "begin": 9196, - "end": 9212, - "name": "DUP6", - "source": 22 - }, - { - "begin": 9196, - "end": 9212, - "name": "ADD", - "source": 22 - }, - { - "begin": 9177, - "end": 9213, - "name": "PUSH [tag]", - "source": 22, - "value": "402" - }, - { - "begin": 9177, - "end": 9213, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 9177, - "end": 9213, - "name": "tag", - "source": 22, - "value": "475" - }, - { - "begin": 9177, - "end": 9213, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 9173, - "end": 9258, - "name": "AND", - "source": 22 - }, - { - "begin": 9158, - "end": 9171, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 9158, - "end": 9171, - "name": "DUP8", - "source": 22 - }, - { - "begin": 9158, - "end": 9171, - "name": "ADD", - "source": 22 - }, - { - "begin": 9151, - "end": 9259, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 9282, - "end": 9286, - "name": "PUSH", - "source": 22, - "value": "80" - }, - { - "begin": 9334, - "end": 9350, - "name": "DUP3", - "source": 22 - }, - { - "begin": 9334, - "end": 9350, - "name": "DUP2", - "source": 22 - }, - { - "begin": 9334, - "end": 9350, - "name": "ADD", - "source": 22 - }, - { - "begin": 9321, - "end": 9351, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 9306, - "end": 9319, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 9306, - "end": 9319, - "name": "DUP8", - "source": 22 - }, - { - "begin": 9306, - "end": 9319, - "name": "ADD", - "source": 22 - }, - { - "begin": 9299, - "end": 9352, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 9375, - "end": 9379, - "name": "PUSH", - "source": 22, - "value": "A0" - }, - { - "begin": 9433, - "end": 9449, - "name": "DUP1", - "source": 22 - }, - { - "begin": 9433, - "end": 9449, - "name": "DUP4", - "source": 22 - }, - { - "begin": 9433, - "end": 9449, - "name": "ADD", - "source": 22 - }, - { - "begin": 9420, - "end": 9450, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 9507, - "end": 9521, - "name": "CALLDATASIZE", - "source": 22 - }, - { - "begin": 9503, - "end": 9531, - "name": "DUP5", - "source": 22 - }, - { - "begin": 9503, - "end": 9531, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 9503, - "end": 9531, - "name": "SUB", - "source": 22 - }, - { - "begin": 9533, - "end": 9599, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1" - }, - { - "begin": 9499, - "end": 9600, - "name": "ADD", - "source": 22 - }, - { - "begin": 9473, - "end": 9601, - "name": "DUP2", - "source": 22 - }, - { - "begin": 9473, - "end": 9601, - "name": "SLT", - "source": 22 - }, - { - "begin": 9463, - "end": 9619, - "name": "PUSH [tag]", - "source": 22, - "value": "476" - }, - { - "begin": 9463, - "end": 9619, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 9615, - "end": 9616, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 9612, - "end": 9613, - "name": "DUP1", - "source": 22 - }, - { - "begin": 9605, - "end": 9617, - "name": "REVERT", - "source": 22 - }, - { - "begin": 9463, - "end": 9619, - "name": "tag", - "source": 22, - "value": "476" - }, - { - "begin": 9463, - "end": 9619, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 9647, - "end": 9681, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 9647, - "end": 9681, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 9647, - "end": 9681, - "name": "ADD", - "source": 22 - }, - { - "begin": 9759, - "end": 9775, - "name": "DUP8", - "source": 22 - }, - { - "begin": 9759, - "end": 9775, - "name": "DUP2", - "source": 22 - }, - { - "begin": 9759, - "end": 9775, - "name": "ADD", - "source": 22 - }, - { - "begin": 9759, - "end": 9775, - "name": "SWAP3", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "SWAP1", - "source": -1 - }, - { - "begin": 9710, - "end": 9731, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 9804, - "end": 9822, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 9791, - "end": 9823, - "name": "DUP2", - "source": 22 - }, - { - "begin": 9791, - "end": 9823, - "name": "GT", - "source": 22 - }, - { - "begin": 9788, - "end": 9840, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 9788, - "end": 9840, - "name": "PUSH [tag]", - "source": 22, - "value": "477" - }, - { - "begin": 9788, - "end": 9840, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 9836, - "end": 9837, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 9833, - "end": 9834, - "name": "DUP1", - "source": 22 - }, - { - "begin": 9826, - "end": 9838, - "name": "REVERT", - "source": 22 - }, - { - "begin": 9788, - "end": 9840, - "name": "tag", - "source": 22, - "value": "477" - }, - { - "begin": 9788, - "end": 9840, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 9889, - "end": 9897, - "name": "DUP1", - "source": 22 - }, - { - "begin": 9873, - "end": 9887, - "name": "CALLDATASIZE", - "source": 22 - }, - { - "begin": 9869, - "end": 9898, - "name": "SUB", - "source": 22 - }, - { - "begin": 9860, - "end": 9867, - "name": "DUP5", - "source": 22 - }, - { - "begin": 9856, - "end": 9899, - "name": "SGT", - "source": 22 - }, - { - "begin": 9853, - "end": 9916, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 9853, - "end": 9916, - "name": "PUSH [tag]", - "source": 22, - "value": "478" - }, - { - "begin": 9853, - "end": 9916, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 9912, - "end": 9913, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 9909, - "end": 9910, - "name": "DUP1", - "source": 22 - }, - { - "begin": 9902, - "end": 9914, - "name": "REVERT", - "source": 22 - }, - { - "begin": 9853, - "end": 9916, - "name": "tag", - "source": 22, - "value": "478" - }, - { - "begin": 9853, - "end": 9916, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 9951, - "end": 9953, - "name": "DUP3", - "source": 22 - }, - { - "begin": 9946, - "end": 9948, - "name": "DUP3", - "source": 22 - }, - { - "begin": 9940, - "end": 9944, - "name": "DUP10", - "source": 22 - }, - { - "begin": 9936, - "end": 9949, - "name": "ADD", - "source": 22 - }, - { - "begin": 9929, - "end": 9954, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 9975, - "end": 10034, - "name": "PUSH [tag]", - "source": 22, - "value": "479" - }, - { - "begin": 10030, - "end": 10032, - "name": "DUP4", - "source": 22 - }, - { - "begin": 10024, - "end": 10028, - "name": "DUP10", - "source": 22 - }, - { - "begin": 10020, - "end": 10033, - "name": "ADD", - "source": 22 - }, - { - "begin": 10010, - "end": 10018, - "name": "DUP3", - "source": 22 - }, - { - "begin": 10001, - "end": 10008, - "name": "DUP7", - "source": 22 - }, - { - "begin": 9975, - "end": 10034, - "name": "PUSH [tag]", - "source": 22, - "value": "403" - }, - { - "begin": 9975, - "end": 10034, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 9975, - "end": 10034, - "name": "tag", - "source": 22, - "value": "479" - }, - { - "begin": 9975, - "end": 10034, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 10092, - "end": 10104, - "name": "SWAP13", - "source": 22 - }, - { - "begin": 10092, - "end": 10104, - "name": "DUP10", - "source": 22 - }, - { - "begin": 10092, - "end": 10104, - "name": "ADD", - "source": 22 - }, - { - "begin": 10092, - "end": 10104, - "name": "SWAP13", - "source": 22 - }, - { - "begin": 9967, - "end": 10034, - "name": "SWAP8", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 10057, - "end": 10072, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 10057, - "end": 10072, - "name": "DUP7", - "source": 22 - }, - { - "begin": 10057, - "end": 10072, - "name": "ADD", - "source": 22 - }, - { - "begin": 10057, - "end": 10072, - "name": "SWAP3", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 8501, - "end": 8502, - "name": "PUSH", - "source": 22, - "value": "1" - }, - { - "begin": 8494, - "end": 8503, - "name": "ADD", - "source": 22 - }, - { - "begin": 8465, - "end": 10114, - "name": "PUSH [tag]", - "source": 22, - "value": "469" - }, - { - "begin": 8465, - "end": 10114, - "name": "JUMP", - "source": 22 - }, - { - "begin": 8465, - "end": 10114, - "name": "tag", - "source": 22, - "value": "471" - }, - { - "begin": 8465, - "end": 10114, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 10130, - "end": 10134, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 10130, - "end": 10134, - "name": "SWAP8", - "source": 22 - }, - { - "begin": 8112, - "end": 10140, - "name": "SWAP7", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 8112, - "end": 10140, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 10145, - "end": 10739, - "name": "tag", - "source": 22, - "value": "101" - }, - { - "begin": 10145, - "end": 10739, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 10495, - "end": 10497, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 10484, - "end": 10493, - "name": "DUP2", - "source": 22 - }, - { - "begin": 10477, - "end": 10498, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 10534, - "end": 10535, - "name": "PUSH", - "source": 22, - "value": "5" - }, - { - "begin": 10529, - "end": 10531, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 10518, - "end": 10527, - "name": "DUP3", - "source": 22 - }, - { - "begin": 10514, - "end": 10532, - "name": "ADD", - "source": 22 - }, - { - "begin": 10507, - "end": 10536, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 10572, - "end": 10579, - "name": "PUSH", - "source": 22, - "value": "73656C663A000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 10567, - "end": 10569, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 10556, - "end": 10565, - "name": "DUP3", - "source": 22 - }, - { - "begin": 10552, - "end": 10570, - "name": "ADD", - "source": 22 - }, - { - "begin": 10545, - "end": 10580, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 10618, - "end": 10621, - "name": "PUSH", - "source": 22, - "value": "80" - }, - { - "begin": 10611, - "end": 10615, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 10600, - "end": 10609, - "name": "DUP3", - "source": 22 - }, - { - "begin": 10596, - "end": 10616, - "name": "ADD", - "source": 22 - }, - { - "begin": 10589, - "end": 10622, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 10458, - "end": 10462, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 10639, - "end": 10733, - "name": "PUSH [tag]", - "source": 22, - "value": "86" - }, - { - "begin": 10728, - "end": 10731, - "name": "PUSH", - "source": 22, - "value": "80" - }, - { - "begin": 10717, - "end": 10726, - "name": "DUP4", - "source": 22 - }, - { - "begin": 10713, - "end": 10732, - "name": "ADD", - "source": 22 - }, - { - "begin": 10705, - "end": 10711, - "name": "DUP5", - "source": 22 - }, - { - "begin": 10697, - "end": 10703, - "name": "DUP7", - "source": 22 - }, - { - "begin": 10639, - "end": 10733, - "name": "PUSH [tag]", - "source": 22, - "value": "404" - }, - { - "begin": 10639, - "end": 10733, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 10744, - "end": 11339, - "name": "tag", - "source": 22, - "value": "108" - }, - { - "begin": 10744, - "end": 11339, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 11094, - "end": 11096, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 11083, - "end": 11092, - "name": "DUP2", - "source": 22 - }, - { - "begin": 11076, - "end": 11097, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11133, - "end": 11134, - "name": "PUSH", - "source": 22, - "value": "6" - }, - { - "begin": 11128, - "end": 11130, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 11117, - "end": 11126, - "name": "DUP3", - "source": 22 - }, - { - "begin": 11113, - "end": 11131, - "name": "ADD", - "source": 22 - }, - { - "begin": 11106, - "end": 11135, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11171, - "end": 11179, - "name": "PUSH", - "source": 22, - "value": "67756573743A0000000000000000000000000000000000000000000000000000" - }, - { - "begin": 11166, - "end": 11168, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 11155, - "end": 11164, - "name": "DUP3", - "source": 22 - }, - { - "begin": 11151, - "end": 11169, - "name": "ADD", - "source": 22 - }, - { - "begin": 11144, - "end": 11180, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11218, - "end": 11221, - "name": "PUSH", - "source": 22, - "value": "80" - }, - { - "begin": 11211, - "end": 11215, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 11200, - "end": 11209, - "name": "DUP3", - "source": 22 - }, - { - "begin": 11196, - "end": 11216, - "name": "ADD", - "source": 22 - }, - { - "begin": 11189, - "end": 11222, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11057, - "end": 11061, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 11239, - "end": 11333, - "name": "PUSH [tag]", - "source": 22, - "value": "86" - }, - { - "begin": 11328, - "end": 11331, - "name": "PUSH", - "source": 22, - "value": "80" - }, - { - "begin": 11317, - "end": 11326, - "name": "DUP4", - "source": 22 - }, - { - "begin": 11313, - "end": 11332, - "name": "ADD", - "source": 22 - }, - { - "begin": 11305, - "end": 11311, - "name": "DUP5", - "source": 22 - }, - { - "begin": 11297, - "end": 11303, - "name": "DUP7", - "source": 22 - }, - { - "begin": 11239, - "end": 11333, - "name": "PUSH [tag]", - "source": 22, - "value": "404" - }, - { - "begin": 11239, - "end": 11333, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 11344, - "end": 11528, - "name": "tag", - "source": 22, - "value": "113" - }, - { - "begin": 11344, - "end": 11528, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 11396, - "end": 11473, - "name": "PUSH", - "source": 22, - "value": "4E487B7100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 11393, - "end": 11394, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 11386, - "end": 11474, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11493, - "end": 11497, - "name": "PUSH", - "source": 22, - "value": "32" - }, - { - "begin": 11490, - "end": 11491, - "name": "PUSH", - "source": 22, - "value": "4" - }, - { - "begin": 11483, - "end": 11498, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11517, - "end": 11521, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 11514, - "end": 11515, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 11507, - "end": 11522, - "name": "REVERT", - "source": 22 - }, - { - "begin": 11786, - "end": 12267, - "name": "tag", - "source": 22, - "value": "405" - }, - { - "begin": 11786, - "end": 12267, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 11827, - "end": 11830, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 11865, - "end": 11870, - "name": "DUP2", - "source": 22 - }, - { - "begin": 11859, - "end": 11871, - "name": "MLOAD", - "source": 22 - }, - { - "begin": 11892, - "end": 11898, - "name": "DUP1", - "source": 22 - }, - { - "begin": 11887, - "end": 11890, - "name": "DUP5", - "source": 22 - }, - { - "begin": 11880, - "end": 11899, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11917, - "end": 11918, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 11927, - "end": 12089, - "name": "tag", - "source": 22, - "value": "487" - }, - { - "begin": 11927, - "end": 12089, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 11941, - "end": 11947, - "name": "DUP2", - "source": 22 - }, - { - "begin": 11938, - "end": 11939, - "name": "DUP2", - "source": 22 - }, - { - "begin": 11935, - "end": 11948, - "name": "LT", - "source": 22 - }, - { - "begin": 11927, - "end": 12089, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 11927, - "end": 12089, - "name": "PUSH [tag]", - "source": 22, - "value": "489" - }, - { - "begin": 11927, - "end": 12089, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 12003, - "end": 12007, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 12059, - "end": 12072, - "name": "DUP2", - "source": 22 - }, - { - "begin": 12059, - "end": 12072, - "name": "DUP6", - "source": 22 - }, - { - "begin": 12059, - "end": 12072, - "name": "ADD", - "source": 22 - }, - { - "begin": 12055, - "end": 12077, - "name": "DUP2", - "source": 22 - }, - { - "begin": 12055, - "end": 12077, - "name": "ADD", - "source": 22 - }, - { - "begin": 12049, - "end": 12078, - "name": "MLOAD", - "source": 22 - }, - { - "begin": 12031, - "end": 12042, - "name": "DUP7", - "source": 22 - }, - { - "begin": 12031, - "end": 12042, - "name": "DUP4", - "source": 22 - }, - { - "begin": 12031, - "end": 12042, - "name": "ADD", - "source": 22 - }, - { - "begin": 12027, - "end": 12047, - "name": "DUP3", - "source": 22 - }, - { - "begin": 12027, - "end": 12047, - "name": "ADD", - "source": 22 - }, - { - "begin": 12020, - "end": 12079, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 11956, - "end": 11968, - "name": "ADD", - "source": 22 - }, - { - "begin": 11927, - "end": 12089, - "name": "PUSH [tag]", - "source": 22, - "value": "487" - }, - { - "begin": 11927, - "end": 12089, - "name": "JUMP", - "source": 22 - }, - { - "begin": 11927, - "end": 12089, - "name": "tag", - "source": 22, - "value": "489" - }, - { - "begin": 11927, - "end": 12089, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 11931, - "end": 11934, - "name": "POP", - "source": 22 - }, - { - "begin": 12134, - "end": 12135, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 12127, - "end": 12131, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 12118, - "end": 12124, - "name": "DUP3", - "source": 22 - }, - { - "begin": 12113, - "end": 12116, - "name": "DUP7", - "source": 22 - }, - { - "begin": 12109, - "end": 12125, - "name": "ADD", - "source": 22 - }, - { - "begin": 12105, - "end": 12132, - "name": "ADD", - "source": 22 - }, - { - "begin": 12098, - "end": 12136, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 12256, - "end": 12260, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 12186, - "end": 12252, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 12181, - "end": 12183, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 12173, - "end": 12179, - "name": "DUP4", - "source": 22 - }, - { - "begin": 12169, - "end": 12184, - "name": "ADD", - "source": 22 - }, - { - "begin": 12165, - "end": 12253, - "name": "AND", - "source": 22 - }, - { - "begin": 12160, - "end": 12163, - "name": "DUP6", - "source": 22 - }, - { - "begin": 12156, - "end": 12254, - "name": "ADD", - "source": 22 - }, - { - "begin": 12152, - "end": 12261, - "name": "ADD", - "source": 22 - }, - { - "begin": 12145, - "end": 12261, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 12145, - "end": 12261, - "name": "POP", - "source": 22 - }, - { - "begin": 12145, - "end": 12261, - "name": "POP", - "source": 22 - }, - { - "begin": 11786, - "end": 12267, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 11786, - "end": 12267, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 11786, - "end": 12267, - "name": "POP", - "source": 22 - }, - { - "begin": 11786, - "end": 12267, - "name": "POP", - "source": 22 - }, - { - "begin": 11786, - "end": 12267, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 12272, - "end": 12489, - "name": "tag", - "source": 22, - "value": "140" - }, - { - "begin": 12272, - "end": 12489, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 12419, - "end": 12421, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 12408, - "end": 12417, - "name": "DUP2", - "source": 22 - }, - { - "begin": 12401, - "end": 12422, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 12382, - "end": 12386, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 12439, - "end": 12483, - "name": "PUSH [tag]", - "source": 22, - "value": "82" - }, - { - "begin": 12479, - "end": 12481, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 12468, - "end": 12477, - "name": "DUP4", - "source": 22 - }, - { - "begin": 12464, - "end": 12482, - "name": "ADD", - "source": 22 - }, - { - "begin": 12456, - "end": 12462, - "name": "DUP5", - "source": 22 - }, - { - "begin": 12439, - "end": 12483, - "name": "PUSH [tag]", - "source": 22, - "value": "405" - }, - { - "begin": 12439, - "end": 12483, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 13090, - "end": 13477, - "name": "tag", - "source": 22, - "value": "164" - }, - { - "begin": 13090, - "end": 13477, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 13187, - "end": 13191, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 13245, - "end": 13256, - "name": "DUP3", - "source": 22 - }, - { - "begin": 13232, - "end": 13257, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 13335, - "end": 13401, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41" - }, - { - "begin": 13324, - "end": 13332, - "name": "DUP4", - "source": 22 - }, - { - "begin": 13308, - "end": 13322, - "name": "CALLDATASIZE", - "source": 22 - }, - { - "begin": 13304, - "end": 13333, - "name": "SUB", - "source": 22 - }, - { - "begin": 13300, - "end": 13402, - "name": "ADD", - "source": 22 - }, - { - "begin": 13280, - "end": 13298, - "name": "DUP2", - "source": 22 - }, - { - "begin": 13276, - "end": 13403, - "name": "SLT", - "source": 22 - }, - { - "begin": 13266, - "end": 13421, - "name": "PUSH [tag]", - "source": 22, - "value": "494" - }, - { - "begin": 13266, - "end": 13421, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 13417, - "end": 13418, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 13414, - "end": 13415, - "name": "DUP1", - "source": 22 - }, - { - "begin": 13407, - "end": 13419, - "name": "REVERT", - "source": 22 - }, - { - "begin": 13266, - "end": 13421, - "name": "tag", - "source": 22, - "value": "494" - }, - { - "begin": 13266, - "end": 13421, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 13438, - "end": 13471, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 13438, - "end": 13471, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 13438, - "end": 13471, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 13438, - "end": 13471, - "name": "ADD", - "source": 22 - }, - { - "begin": 13438, - "end": 13471, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 13090, - "end": 13477, - "name": "SWAP2", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 13090, - "end": 13477, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 13482, - "end": 13662, - "name": "tag", - "source": 22, - "value": "166" - }, - { - "begin": 13482, - "end": 13662, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 13538, - "end": 13544, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 13591, - "end": 13593, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 13579, - "end": 13588, - "name": "DUP3", - "source": 22 - }, - { - "begin": 13570, - "end": 13577, - "name": "DUP5", - "source": 22 - }, - { - "begin": 13566, - "end": 13589, - "name": "SUB", - "source": 22 - }, - { - "begin": 13562, - "end": 13594, - "name": "SLT", - "source": 22 - }, - { - "begin": 13559, - "end": 13611, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 13559, - "end": 13611, - "name": "PUSH [tag]", - "source": 22, - "value": "496" - }, - { - "begin": 13559, - "end": 13611, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 13607, - "end": 13608, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 13604, - "end": 13605, - "name": "DUP1", - "source": 22 - }, - { - "begin": 13597, - "end": 13609, - "name": "REVERT", - "source": 22 - }, - { - "begin": 13559, - "end": 13611, - "name": "tag", - "source": 22, - "value": "496" - }, - { - "begin": 13559, - "end": 13611, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 13630, - "end": 13656, - "name": "PUSH [tag]", - "source": 22, - "value": "82" - }, - { - "begin": 13646, - "end": 13655, - "name": "DUP3", - "source": 22 - }, - { - "begin": 13630, - "end": 13656, - "name": "PUSH [tag]", - "source": 22, - "value": "401" - }, - { - "begin": 13630, - "end": 13656, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 13991, - "end": 14177, - "name": "tag", - "source": 22, - "value": "174" - }, - { - "begin": 13991, - "end": 14177, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 14050, - "end": 14056, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 14103, - "end": 14105, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 14091, - "end": 14100, - "name": "DUP3", - "source": 22 - }, - { - "begin": 14082, - "end": 14089, - "name": "DUP5", - "source": 22 - }, - { - "begin": 14078, - "end": 14101, - "name": "SUB", - "source": 22 - }, - { - "begin": 14074, - "end": 14106, - "name": "SLT", - "source": 22 - }, - { - "begin": 14071, - "end": 14123, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 14071, - "end": 14123, - "name": "PUSH [tag]", - "source": 22, - "value": "500" - }, - { - "begin": 14071, - "end": 14123, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 14119, - "end": 14120, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 14116, - "end": 14117, - "name": "DUP1", - "source": 22 - }, - { - "begin": 14109, - "end": 14121, - "name": "REVERT", - "source": 22 - }, - { - "begin": 14071, - "end": 14123, - "name": "tag", - "source": 22, - "value": "500" - }, - { - "begin": 14071, - "end": 14123, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 14142, - "end": 14171, - "name": "PUSH [tag]", - "source": 22, - "value": "82" - }, - { - "begin": 14161, - "end": 14170, - "name": "DUP3", - "source": 22 - }, - { - "begin": 14142, - "end": 14171, - "name": "PUSH [tag]", - "source": 22, - "value": "402" - }, - { - "begin": 14142, - "end": 14171, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 14182, - "end": 14762, - "name": "tag", - "source": 22, - "value": "178" - }, - { - "begin": 14182, - "end": 14762, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 14259, - "end": 14263, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 14265, - "end": 14271, - "name": "DUP1", - "source": 22 - }, - { - "begin": 14325, - "end": 14336, - "name": "DUP4", - "source": 22 - }, - { - "begin": 14312, - "end": 14337, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 14415, - "end": 14481, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1" - }, - { - "begin": 14404, - "end": 14412, - "name": "DUP5", - "source": 22 - }, - { - "begin": 14388, - "end": 14402, - "name": "CALLDATASIZE", - "source": 22 - }, - { - "begin": 14384, - "end": 14413, - "name": "SUB", - "source": 22 - }, - { - "begin": 14380, - "end": 14482, - "name": "ADD", - "source": 22 - }, - { - "begin": 14360, - "end": 14378, - "name": "DUP2", - "source": 22 - }, - { - "begin": 14356, - "end": 14483, - "name": "SLT", - "source": 22 - }, - { - "begin": 14346, - "end": 14501, - "name": "PUSH [tag]", - "source": 22, - "value": "503" - }, - { - "begin": 14346, - "end": 14501, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 14497, - "end": 14498, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 14494, - "end": 14495, - "name": "DUP1", - "source": 22 - }, - { - "begin": 14487, - "end": 14499, - "name": "REVERT", - "source": 22 - }, - { - "begin": 14346, - "end": 14501, - "name": "tag", - "source": 22, - "value": "503" - }, - { - "begin": 14346, - "end": 14501, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 14524, - "end": 14557, - "name": "DUP4", - "source": 22 - }, - { - "begin": 14524, - "end": 14557, - "name": "ADD", - "source": 22 - }, - { - "begin": 14576, - "end": 14596, - "name": "DUP1", - "source": 22 - }, - { - "begin": 14576, - "end": 14596, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 14576, - "end": 14596, - "name": "SWAP2", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 14619, - "end": 14637, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 14608, - "end": 14638, - "name": "DUP3", - "source": 22 - }, - { - "begin": 14608, - "end": 14638, - "name": "GT", - "source": 22 - }, - { - "begin": 14605, - "end": 14655, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 14605, - "end": 14655, - "name": "PUSH [tag]", - "source": 22, - "value": "504" - }, - { - "begin": 14605, - "end": 14655, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 14651, - "end": 14652, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 14648, - "end": 14649, - "name": "DUP1", - "source": 22 - }, - { - "begin": 14641, - "end": 14653, - "name": "REVERT", - "source": 22 - }, - { - "begin": 14605, - "end": 14655, - "name": "tag", - "source": 22, - "value": "504" - }, - { - "begin": 14605, - "end": 14655, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 14684, - "end": 14688, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 14672, - "end": 14689, - "name": "ADD", - "source": 22 - }, - { - "begin": 14672, - "end": 14689, - "name": "SWAP2", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 14715, - "end": 14729, - "name": "CALLDATASIZE", - "source": 22 - }, - { - "begin": 14711, - "end": 14738, - "name": "DUP2", - "source": 22 - }, - { - "begin": 14711, - "end": 14738, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 14711, - "end": 14738, - "name": "SUB", - "source": 22 - }, - { - "begin": 14701, - "end": 14739, - "name": "DUP3", - "source": 22 - }, - { - "begin": 14701, - "end": 14739, - "name": "SGT", - "source": 22 - }, - { - "begin": 14698, - "end": 14756, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 14698, - "end": 14756, - "name": "PUSH [tag]", - "source": 22, - "value": "417" - }, - { - "begin": 14698, - "end": 14756, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 14752, - "end": 14753, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 14749, - "end": 14750, - "name": "DUP1", - "source": 22 - }, - { - "begin": 14742, - "end": 14754, - "name": "REVERT", - "source": 22 - }, - { - "begin": 14767, - "end": 14951, - "name": "tag", - "source": 22, - "value": "406" - }, - { - "begin": 14767, - "end": 14951, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 14819, - "end": 14896, - "name": "PUSH", - "source": 22, - "value": "4E487B7100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 14816, - "end": 14817, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 14809, - "end": 14897, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 14916, - "end": 14920, - "name": "PUSH", - "source": 22, - "value": "11" - }, - { - "begin": 14913, - "end": 14914, - "name": "PUSH", - "source": 22, - "value": "4" - }, - { - "begin": 14906, - "end": 14921, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 14940, - "end": 14944, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 14937, - "end": 14938, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 14930, - "end": 14945, - "name": "REVERT", - "source": 22 - }, - { - "begin": 14956, - "end": 15151, - "name": "tag", - "source": 22, - "value": "189" - }, - { - "begin": 14956, - "end": 15151, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 14995, - "end": 14998, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 15026, - "end": 15092, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 15019, - "end": 15024, - "name": "DUP3", - "source": 22 - }, - { - "begin": 15016, - "end": 15093, - "name": "SUB", - "source": 22 - }, - { - "begin": 15013, - "end": 15116, - "name": "PUSH [tag]", - "source": 22, - "value": "509" - }, - { - "begin": 15013, - "end": 15116, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 15096, - "end": 15114, - "name": "PUSH [tag]", - "source": 22, - "value": "509" - }, - { - "begin": 15096, - "end": 15114, - "name": "PUSH [tag]", - "source": 22, - "value": "406" - }, - { - "begin": 15096, - "end": 15114, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 15096, - "end": 15114, - "name": "tag", - "source": 22, - "value": "509" - }, - { - "begin": 15096, - "end": 15114, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 15143, - "end": 15144, - "name": "PUSH", - "source": 22, - "value": "1" - }, - { - "begin": 15132, - "end": 15145, - "name": "ADD", - "source": 22 - }, - { - "begin": 15132, - "end": 15145, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 14956, - "end": 15151, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 15156, - "end": 15487, - "name": "tag", - "source": 22, - "value": "193" - }, - { - "begin": 15156, - "end": 15487, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 15261, - "end": 15270, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 15272, - "end": 15281, - "name": "DUP1", - "source": 22 - }, - { - "begin": 15314, - "end": 15322, - "name": "DUP6", - "source": 22 - }, - { - "begin": 15302, - "end": 15312, - "name": "DUP6", - "source": 22 - }, - { - "begin": 15299, - "end": 15323, - "name": "GT", - "source": 22 - }, - { - "begin": 15296, - "end": 15340, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 15296, - "end": 15340, - "name": "PUSH [tag]", - "source": 22, - "value": "511" - }, - { - "begin": 15296, - "end": 15340, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 15336, - "end": 15337, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 15333, - "end": 15334, - "name": "DUP1", - "source": 22 - }, - { - "begin": 15326, - "end": 15338, - "name": "REVERT", - "source": 22 - }, - { - "begin": 15296, - "end": 15340, - "name": "tag", - "source": 22, - "value": "511" - }, - { - "begin": 15296, - "end": 15340, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 15365, - "end": 15371, - "name": "DUP4", - "source": 22 - }, - { - "begin": 15355, - "end": 15363, - "name": "DUP7", - "source": 22 - }, - { - "begin": 15352, - "end": 15372, - "name": "GT", - "source": 22 - }, - { - "begin": 15349, - "end": 15389, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 15349, - "end": 15389, - "name": "PUSH [tag]", - "source": 22, - "value": "512" - }, - { - "begin": 15349, - "end": 15389, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 15385, - "end": 15386, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 15382, - "end": 15383, - "name": "DUP1", - "source": 22 - }, - { - "begin": 15375, - "end": 15387, - "name": "REVERT", - "source": 22 - }, - { - "begin": 15349, - "end": 15389, - "name": "tag", - "source": 22, - "value": "512" - }, - { - "begin": 15349, - "end": 15389, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 15411, - "end": 15434, - "name": "DUP3", - "source": 22 - }, - { - "begin": 15411, - "end": 15434, - "name": "ADD", - "source": 22 - }, - { - "begin": 15411, - "end": 15434, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 15456, - "end": 15481, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 15456, - "end": 15481, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 15456, - "end": 15481, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 15456, - "end": 15481, - "name": "SUB", - "source": 22 - }, - { - "begin": 15456, - "end": 15481, - "name": "SWAP2", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 15156, - "end": 15487, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 15492, - "end": 15617, - "name": "tag", - "source": 22, - "value": "211" - }, - { - "begin": 15492, - "end": 15617, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 15557, - "end": 15566, - "name": "DUP1", - "source": 22 - }, - { - "begin": 15557, - "end": 15566, - "name": "DUP3", - "source": 22 - }, - { - "begin": 15557, - "end": 15566, - "name": "ADD", - "source": 22 - }, - { - "begin": 15578, - "end": 15588, - "name": "DUP1", - "source": 22 - }, - { - "begin": 15578, - "end": 15588, - "name": "DUP3", - "source": 22 - }, - { - "begin": 15578, - "end": 15588, - "name": "GT", - "source": 22 - }, - { - "begin": 15575, - "end": 15611, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 15575, - "end": 15611, - "name": "PUSH [tag]", - "source": 22, - "value": "80" - }, - { - "begin": 15575, - "end": 15611, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 15591, - "end": 15609, - "name": "PUSH [tag]", - "source": 22, - "value": "80" - }, - { - "begin": 15591, - "end": 15609, - "name": "PUSH [tag]", - "source": 22, - "value": "406" - }, - { - "begin": 15591, - "end": 15609, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 15622, - "end": 16014, - "name": "tag", - "source": 22, - "value": "217" - }, - { - "begin": 15622, - "end": 16014, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 15841, - "end": 15843, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 15830, - "end": 15839, - "name": "DUP2", - "source": 22 - }, - { - "begin": 15823, - "end": 15844, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 15804, - "end": 15808, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 15861, - "end": 15922, - "name": "PUSH [tag]", - "source": 22, - "value": "517" - }, - { - "begin": 15918, - "end": 15920, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 15907, - "end": 15916, - "name": "DUP4", - "source": 22 - }, - { - "begin": 15903, - "end": 15921, - "name": "ADD", - "source": 22 - }, - { - "begin": 15895, - "end": 15901, - "name": "DUP7", - "source": 22 - }, - { - "begin": 15887, - "end": 15893, - "name": "DUP9", - "source": 22 - }, - { - "begin": 15861, - "end": 15922, - "name": "PUSH [tag]", - "source": 22, - "value": "403" - }, - { - "begin": 15861, - "end": 15922, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 15861, - "end": 15922, - "name": "tag", - "source": 22, - "value": "517" - }, - { - "begin": 15861, - "end": 15922, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 15953, - "end": 15955, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 15938, - "end": 15956, - "name": "DUP4", - "source": 22 - }, - { - "begin": 15938, - "end": 15956, - "name": "ADD", - "source": 22 - }, - { - "begin": 15931, - "end": 15965, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 15931, - "end": 15965, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 15931, - "end": 15965, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 15931, - "end": 15965, - "name": "MSTORE", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 15996, - "end": 15998, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 15981, - "end": 15999, - "name": "ADD", - "source": 22 - }, - { - "begin": 15974, - "end": 16008, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 15853, - "end": 15922, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 15622, - "end": 16014, - "name": "SWAP2", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 15622, - "end": 16014, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 16525, - "end": 16813, - "name": "tag", - "source": 22, - "value": "246" - }, - { - "begin": 16525, - "end": 16813, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 16700, - "end": 16706, - "name": "DUP3", - "source": 22 - }, - { - "begin": 16689, - "end": 16698, - "name": "DUP2", - "source": 22 - }, - { - "begin": 16682, - "end": 16707, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 16743, - "end": 16745, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 16738, - "end": 16740, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 16727, - "end": 16736, - "name": "DUP3", - "source": 22 - }, - { - "begin": 16723, - "end": 16741, - "name": "ADD", - "source": 22 - }, - { - "begin": 16716, - "end": 16746, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 16663, - "end": 16667, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 16763, - "end": 16807, - "name": "PUSH [tag]", - "source": 22, - "value": "86" - }, - { - "begin": 16803, - "end": 16805, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 16792, - "end": 16801, - "name": "DUP4", - "source": 22 - }, - { - "begin": 16788, - "end": 16806, - "name": "ADD", - "source": 22 - }, - { - "begin": 16780, - "end": 16786, - "name": "DUP5", - "source": 22 - }, - { - "begin": 16763, - "end": 16807, - "name": "PUSH [tag]", - "source": 22, - "value": "405" - }, - { - "begin": 16763, - "end": 16807, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 16818, - "end": 17259, - "name": "tag", - "source": 22, - "value": "278" - }, - { - "begin": 16818, - "end": 17259, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 17037, - "end": 17043, - "name": "DUP5", - "source": 22 - }, - { - "begin": 17026, - "end": 17035, - "name": "DUP2", - "source": 22 - }, - { - "begin": 17019, - "end": 17044, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 17092, - "end": 17134, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 17084, - "end": 17090, - "name": "DUP5", - "source": 22 - }, - { - "begin": 17080, - "end": 17135, - "name": "AND", - "source": 22 - }, - { - "begin": 17075, - "end": 17077, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 17064, - "end": 17073, - "name": "DUP3", - "source": 22 - }, - { - "begin": 17060, - "end": 17078, - "name": "ADD", - "source": 22 - }, - { - "begin": 17053, - "end": 17136, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 17172, - "end": 17174, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 17167, - "end": 17169, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 17156, - "end": 17165, - "name": "DUP3", - "source": 22 - }, - { - "begin": 17152, - "end": 17170, - "name": "ADD", - "source": 22 - }, - { - "begin": 17145, - "end": 17175, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 17000, - "end": 17004, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 17192, - "end": 17253, - "name": "PUSH [tag]", - "source": 22, - "value": "523" - }, - { - "begin": 17249, - "end": 17251, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 17238, - "end": 17247, - "name": "DUP4", - "source": 22 - }, - { - "begin": 17234, - "end": 17252, - "name": "ADD", - "source": 22 - }, - { - "begin": 17226, - "end": 17232, - "name": "DUP5", - "source": 22 - }, - { - "begin": 17218, - "end": 17224, - "name": "DUP7", - "source": 22 - }, - { - "begin": 17192, - "end": 17253, - "name": "PUSH [tag]", - "source": 22, - "value": "403" - }, - { - "begin": 17192, - "end": 17253, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 17192, - "end": 17253, - "name": "tag", - "source": 22, - "value": "523" - }, - { - "begin": 17192, - "end": 17253, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 17184, - "end": 17253, - "name": "SWAP7", - "source": 22 - }, - { - "begin": 16818, - "end": 17259, - "name": "SWAP6", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 16818, - "end": 17259, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 17264, - "end": 17508, - "name": "tag", - "source": 22, - "value": "333" - }, - { - "begin": 17264, - "end": 17508, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 17421, - "end": 17423, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 17410, - "end": 17419, - "name": "DUP2", - "source": 22 - }, - { - "begin": 17403, - "end": 17424, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 17384, - "end": 17388, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 17441, - "end": 17502, - "name": "PUSH [tag]", - "source": 22, - "value": "86" - }, - { - "begin": 17498, - "end": 17500, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 17487, - "end": 17496, - "name": "DUP4", - "source": 22 - }, - { - "begin": 17483, - "end": 17501, - "name": "ADD", - "source": 22 - }, - { - "begin": 17475, - "end": 17481, - "name": "DUP5", - "source": 22 - }, - { - "begin": 17467, - "end": 17473, - "name": "DUP7", - "source": 22 - }, - { - "begin": 17441, - "end": 17502, - "name": "PUSH [tag]", - "source": 22, - "value": "403" - }, - { - "begin": 17441, - "end": 17502, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 17513, - "end": 17641, - "name": "tag", - "source": 22, - "value": "336" - }, - { - "begin": 17513, - "end": 17641, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 17580, - "end": 17589, - "name": "DUP2", - "source": 22 - }, - { - "begin": 17580, - "end": 17589, - "name": "DUP2", - "source": 22 - }, - { - "begin": 17580, - "end": 17589, - "name": "SUB", - "source": 22 - }, - { - "begin": 17601, - "end": 17612, - "name": "DUP2", - "source": 22 - }, - { - "begin": 17601, - "end": 17612, - "name": "DUP2", - "source": 22 - }, - { - "begin": 17601, - "end": 17612, - "name": "GT", - "source": 22 - }, - { - "begin": 17598, - "end": 17635, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 17598, - "end": 17635, - "name": "PUSH [tag]", - "source": 22, - "value": "80" - }, - { - "begin": 17598, - "end": 17635, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 17615, - "end": 17633, - "name": "PUSH [tag]", - "source": 22, - "value": "80" - }, - { - "begin": 17615, - "end": 17633, - "name": "PUSH [tag]", - "source": 22, - "value": "406" - }, - { - "begin": 17615, - "end": 17633, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 17646, - "end": 17961, - "name": "tag", - "source": 22, - "value": "344" - }, - { - "begin": 17646, - "end": 17961, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 17831, - "end": 17833, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 17820, - "end": 17829, - "name": "DUP2", - "source": 22 - }, - { - "begin": 17813, - "end": 17834, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 17794, - "end": 17798, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 17851, - "end": 17912, - "name": "PUSH [tag]", - "source": 22, - "value": "530" - }, - { - "begin": 17908, - "end": 17910, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 17897, - "end": 17906, - "name": "DUP4", - "source": 22 - }, - { - "begin": 17893, - "end": 17911, - "name": "ADD", - "source": 22 - }, - { - "begin": 17885, - "end": 17891, - "name": "DUP6", - "source": 22 - }, - { - "begin": 17877, - "end": 17883, - "name": "DUP8", - "source": 22 - }, - { - "begin": 17851, - "end": 17912, - "name": "PUSH [tag]", - "source": 22, - "value": "403" - }, - { - "begin": 17851, - "end": 17912, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 17851, - "end": 17912, - "name": "tag", - "source": 22, - "value": "530" - }, - { - "begin": 17851, - "end": 17912, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 17843, - "end": 17912, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 17843, - "end": 17912, - "name": "POP", - "source": 22 - }, - { - "begin": 17948, - "end": 17954, - "name": "DUP3", - "source": 22 - }, - { - "begin": 17943, - "end": 17945, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 17932, - "end": 17941, - "name": "DUP4", - "source": 22 - }, - { - "begin": 17928, - "end": 17946, - "name": "ADD", - "source": 22 - }, - { - "begin": 17921, - "end": 17955, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 17646, - "end": 17961, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 17646, - "end": 17961, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 17646, - "end": 17961, - "name": "POP", - "source": 22 - }, - { - "begin": 17646, - "end": 17961, - "name": "POP", - "source": 22 - }, - { - "begin": 17646, - "end": 17961, - "name": "POP", - "source": 22 - }, - { - "begin": 17646, - "end": 17961, - "name": "POP", - "source": 22 - }, - { - "begin": 17646, - "end": 17961, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 17966, - "end": 18290, - "name": "tag", - "source": 22, - "value": "348" - }, - { - "begin": 17966, - "end": 18290, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 18149, - "end": 18151, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 18138, - "end": 18147, - "name": "DUP2", - "source": 22 - }, - { - "begin": 18131, - "end": 18152, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 18112, - "end": 18116, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 18169, - "end": 18230, - "name": "PUSH [tag]", - "source": 22, - "value": "532" - }, - { - "begin": 18226, - "end": 18228, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 18215, - "end": 18224, - "name": "DUP4", - "source": 22 - }, - { - "begin": 18211, - "end": 18229, - "name": "ADD", - "source": 22 - }, - { - "begin": 18203, - "end": 18209, - "name": "DUP6", - "source": 22 - }, - { - "begin": 18195, - "end": 18201, - "name": "DUP8", - "source": 22 - }, - { - "begin": 18169, - "end": 18230, - "name": "PUSH [tag]", - "source": 22, - "value": "403" - }, - { - "begin": 18169, - "end": 18230, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 18169, - "end": 18230, - "name": "tag", - "source": 22, - "value": "532" - }, - { - "begin": 18169, - "end": 18230, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 18161, - "end": 18230, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 18161, - "end": 18230, - "name": "POP", - "source": 22 - }, - { - "begin": 18278, - "end": 18282, - "name": "PUSH", - "source": 22, - "value": "FF" - }, - { - "begin": 18270, - "end": 18276, - "name": "DUP4", - "source": 22 - }, - { - "begin": 18266, - "end": 18283, - "name": "AND", - "source": 22 - }, - { - "begin": 18261, - "end": 18263, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 18250, - "end": 18259, - "name": "DUP4", - "source": 22 - }, - { - "begin": 18246, - "end": 18264, - "name": "ADD", - "source": 22 - }, - { - "begin": 18239, - "end": 18284, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 17966, - "end": 18290, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 17966, - "end": 18290, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 17966, - "end": 18290, - "name": "POP", - "source": 22 - }, - { - "begin": 17966, - "end": 18290, - "name": "POP", - "source": 22 - }, - { - "begin": 17966, - "end": 18290, - "name": "POP", - "source": 22 - }, - { - "begin": 17966, - "end": 18290, - "name": "POP", - "source": 22 - }, - { - "begin": 17966, - "end": 18290, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 19083, - "end": 19479, - "name": "tag", - "source": 22, - "value": "363" - }, - { - "begin": 19083, - "end": 19479, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 19290, - "end": 19292, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 19279, - "end": 19288, - "name": "DUP2", - "source": 22 - }, - { - "begin": 19272, - "end": 19293, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 19253, - "end": 19257, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 19310, - "end": 19371, - "name": "PUSH [tag]", - "source": 22, - "value": "536" - }, - { - "begin": 19367, - "end": 19369, - "name": "PUSH", - "source": 22, - "value": "60" - }, - { - "begin": 19356, - "end": 19365, - "name": "DUP4", - "source": 22 - }, - { - "begin": 19352, - "end": 19370, - "name": "ADD", - "source": 22 - }, - { - "begin": 19344, - "end": 19350, - "name": "DUP7", - "source": 22 - }, - { - "begin": 19336, - "end": 19342, - "name": "DUP9", - "source": 22 - }, - { - "begin": 19310, - "end": 19371, - "name": "PUSH [tag]", - "source": 22, - "value": "403" - }, - { - "begin": 19310, - "end": 19371, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 19310, - "end": 19371, - "name": "tag", - "source": 22, - "value": "536" - }, - { - "begin": 19310, - "end": 19371, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 19402, - "end": 19404, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 19387, - "end": 19405, - "name": "DUP4", - "source": 22 - }, - { - "begin": 19387, - "end": 19405, - "name": "ADD", - "source": 22 - }, - { - "begin": 19380, - "end": 19414, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 19380, - "end": 19414, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 19380, - "end": 19414, - "name": "SWAP5", - "source": 22 - }, - { - "begin": 19380, - "end": 19414, - "name": "MSTORE", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 19457, - "end": 19471, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 19457, - "end": 19471, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 19450, - "end": 19472, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 19445, - "end": 19447, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 19430, - "end": 19448, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 19430, - "end": 19448, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 19430, - "end": 19448, - "name": "ADD", - "source": 22 - }, - { - "begin": 19423, - "end": 19473, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 19302, - "end": 19371, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 19083, - "end": 19479, - "name": "SWAP2", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 19083, - "end": 19479, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 19484, - "end": 19805, - "name": "tag", - "source": 22, - "value": "379" - }, - { - "begin": 19484, - "end": 19805, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 19675, - "end": 19681, - "name": "DUP4", - "source": 22 - }, - { - "begin": 19664, - "end": 19673, - "name": "DUP2", - "source": 22 - }, - { - "begin": 19657, - "end": 19682, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 19718, - "end": 19720, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 19713, - "end": 19715, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 19702, - "end": 19711, - "name": "DUP3", - "source": 22 - }, - { - "begin": 19698, - "end": 19716, - "name": "ADD", - "source": 22 - }, - { - "begin": 19691, - "end": 19721, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 19638, - "end": 19642, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 19738, - "end": 19799, - "name": "PUSH [tag]", - "source": 22, - "value": "538" - }, - { - "begin": 19795, - "end": 19797, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 19784, - "end": 19793, - "name": "DUP4", - "source": 22 - }, - { - "begin": 19780, - "end": 19798, - "name": "ADD", - "source": 22 - }, - { - "begin": 19772, - "end": 19778, - "name": "DUP5", - "source": 22 - }, - { - "begin": 19764, - "end": 19770, - "name": "DUP7", - "source": 22 - }, - { - "begin": 19738, - "end": 19799, - "name": "PUSH [tag]", - "source": 22, - "value": "403" - }, - { - "begin": 19738, - "end": 19799, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 19738, - "end": 19799, - "name": "tag", - "source": 22, - "value": "538" - }, - { - "begin": 19738, - "end": 19799, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 19730, - "end": 19799, - "name": "SWAP6", - "source": 22 - }, - { - "begin": 19484, - "end": 19805, - "name": "SWAP5", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 19484, - "end": 19805, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 19810, - "end": 20059, - "name": "tag", - "source": 22, - "value": "383" - }, - { - "begin": 19810, - "end": 20059, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 19879, - "end": 19885, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 19932, - "end": 19934, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 19920, - "end": 19929, - "name": "DUP3", - "source": 22 - }, - { - "begin": 19911, - "end": 19918, - "name": "DUP5", - "source": 22 - }, - { - "begin": 19907, - "end": 19930, - "name": "SUB", - "source": 22 - }, - { - "begin": 19903, - "end": 19935, - "name": "SLT", - "source": 22 - }, - { - "begin": 19900, - "end": 19952, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 19900, - "end": 19952, - "name": "PUSH [tag]", - "source": 22, - "value": "540" - }, - { - "begin": 19900, - "end": 19952, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 19948, - "end": 19949, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 19945, - "end": 19946, - "name": "DUP1", - "source": 22 - }, - { - "begin": 19938, - "end": 19950, - "name": "REVERT", - "source": 22 - }, - { - "begin": 19900, - "end": 19952, - "name": "tag", - "source": 22, - "value": "540" - }, - { - "begin": 19900, - "end": 19952, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 19980, - "end": 19989, - "name": "DUP2", - "source": 22 - }, - { - "begin": 19974, - "end": 19990, - "name": "MLOAD", - "source": 22 - }, - { - "begin": 19999, - "end": 20029, - "name": "PUSH [tag]", - "source": 22, - "value": "82" - }, - { - "begin": 20023, - "end": 20028, - "name": "DUP2", - "source": 22 - }, - { - "begin": 19999, - "end": 20029, - "name": "PUSH [tag]", - "source": 22, - "value": "397" - }, - { - "begin": 19999, - "end": 20029, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": { - "SET_IMAGE_HASH_TYPE_HASH()": "57c56d6b", - "createContract(bytes)": "90042baf", - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": "7a9a1628", - "isValidSignature(bytes,bytes)": "20c13b0b", - "isValidSignature(bytes32,bytes)": "1626ba7e", - "nonce()": "affed0e0", - "readNonce(uint256)": "8c3f5563", - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": "61c2926c", - "signatureRecovery(bytes32,bytes)": "853c5068", - "supportsInterface(bytes4)": "01ffc9a7", - "updateImageHash(bytes32)": "29561426" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"CreateFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"DelegateCallNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptySignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidNestedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"InvalidSValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes1\",\"name\":\"_type\",\"type\":\"bytes1\"}],\"name\":\"InvalidSignatureType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_v\",\"type\":\"uint256\"}],\"name\":\"InvalidVValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requested\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_available\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyDelegatecall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_self\",\"type\":\"address\"}],\"name\":\"OnlySelfAuth\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"SignerIsAddress0\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_type\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_recoverMode\",\"type\":\"bool\"}],\"name\":\"UnsupportedSignatureType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_prev\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"}],\"name\":\"CreatedContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_tx\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"TxExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_tx\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_reason\",\"type\":\"bytes\"}],\"name\":\"TxFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SET_IMAGE_HASH_TYPE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"createContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"revertOnError\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IModuleCalls.Transaction[]\",\"name\":\"_txs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signatures\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signatures\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"revertOnError\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IModuleCalls.Transaction[]\",\"name\":\"_txs\",\"type\":\"tuple[]\"}],\"name\":\"selfExecute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"signatureRecovery\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"subdigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createContract(bytes)\":{\"params\":{\"_code\":\"Creation code of the contract\"},\"returns\":{\"addr\":\"The address of the created contract\"}},\"execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)\":{\"params\":{\"_txs\":\"Transactions to process\"}},\"isValidSignature(bytes,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided data > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\\\"isValidSignature(bytes,bytes)\\\"))\",\"params\":{\"_data\":\"Arbitrary length data signed on the behalf of address(this)\",\"_signatures\":\"Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)\"},\"returns\":{\"_0\":\"magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\"))\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signatures\":\"Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)\"},\"returns\":{\"_0\":\"magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"nonce()\":{\"details\":\"The default nonce space is 0x00\",\"returns\":{\"_0\":\"The next nonce\"}},\"readNonce(uint256)\":{\"params\":{\"_space\":\"Nonce space, each space keeps an independent nonce count\"},\"returns\":{\"_0\":\"The next nonce\"}},\"selfExecute((bool,bool,uint256,address,uint256,bytes)[])\":{\"params\":{\"_txs\":\"Transactions to process\"}},\"signatureRecovery(bytes32,bytes)\":{\"details\":\"The signature must be prefixed with a type byte, which is used to determine the recovery method.\",\"params\":{\"_digest\":\"Digest of the signed data.\",\"_signature\":\"A Sequence signature.\"},\"returns\":{\"checkpoint\":\"A nonce that is incremented every time a new configuration is set.\",\"imageHash\":\"The imageHash of the configuration that signed the message.\",\"subdigest\":\"A modified version of the original digest, unique for each wallet/network.\",\"threshold\":\"The required number of signatures needed to consider the signature valid.\",\"weight\":\"The actual number of signatures collected in the signature.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `_interfaceID`\"}},\"updateImageHash(bytes32)\":{\"params\":{\"_imageHash\":\"New required image hash of the signature\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createContract(bytes)\":{\"notice\":\"Creates a contract forwarding eth value\"},\"execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)\":{\"notice\":\"Allow any caller to execute an action\"},\"isValidSignature(bytes,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided data\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"nonce()\":{\"notice\":\"Returns the next nonce of the default nonce space\"},\"readNonce(uint256)\":{\"notice\":\"Returns the next nonce of the given nonce space\"},\"selfExecute((bool,bool,uint256,address,uint256,bytes)[])\":{\"notice\":\"Allow any caller to execute an action\"},\"signatureRecovery(bytes32,bytes)\":{\"notice\":\"Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"updateImageHash(bytes32)\":{\"notice\":\"Updates the signers configuration of the wallet\"}},\"notice\":\"GuestModule implements a Sequence wallet without signatures, nonce or replay protection. executing transactions using this wallet is not an authenticated process, and can be done by any address.This contract is completely public with no security, designed to execute pre-signed transactions and use Sequence tools without using the wallets.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":\"GuestModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":{\"keccak256\":\"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1\",\"dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol\":{\"keccak256\":\"0x14c92b44eac100edbfea10d0d02728752a6be277c267c3776dc563ff963271b1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e440eb91039118ce26bb66fd549d5e6b59863983efbe6c2617b92e2c4f0aab66\",\"dweb:/ipfs/QmeTd2xBKEv4S4Rp9S4TSY4WwUUDjtA7xiJYiJqkVUio7d\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":{\"keccak256\":\"0x58c028f02e3517de6c39584bcf1cedd4e7b23f575c24b363cbad4960a74f8a0b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f9652fead22c9fe8510de8427e2db354ed145ff30f49f85d1c717e293e5df665\",\"dweb:/ipfs/QmSJPFQxRE5n17DNB5Bu2jwRo17yLS7igMQGt3bvKkdLAP\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":{\"keccak256\":\"0x80c0151dbd444f96c2f935e70a6d3cc57e307588fa21d7eace67e568dd3d35c1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://39a856555a5eb900e67d351e667135f245ccebd304d692b35fc8bdc83aec1b53\",\"dweb:/ipfs/QmUdWfa7GcTGM5gk7qYbNCHtsxF4o8dXHzr6HbdFng5sQm\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":{\"keccak256\":\"0x16b1400988f6b7bd4d32bdcb36ee2fbd644fb2c8ca571becc0c32e03602bd303\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8bd4681fb4cff10f4e98e45618fbc52ed0a4c7d4fcf614f34a587ad20cd16855\",\"dweb:/ipfs/QmbA2LYBH1x8WX8CaeiFYMU5rjyLGgNCF32r9fQbXuoqwJ\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":{\"keccak256\":\"0xd4ae13a3d20fd7ab52ad16af6a06e7244daea450b796251e911091cac104d05f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8de37ec20a6b649e9fe3fb42276e4660ff546bca8b467f72beb35396ab5e62d6\",\"dweb:/ipfs/QmXT2SxBZKitkbKLbGbbNLhUbw2ataRpQ2DHafvhG953RE\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":{\"keccak256\":\"0x3b5388842f763a5347d632a0e0e8499a54b6f0b0a6eb7f7d3d848319defa042d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b36fa5a88a4e174967f850bf2bb78c787d8016ef7b5eee3e2f883fbfe9b87a7d\",\"dweb:/ipfs/QmTDZiPiQGe1fmTKKzdwzBE1xjkh8apTotW1SQRUCFXf4q\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":{\"keccak256\":\"0x32bdb1d343eee2e32fd9d0f1d6dc0e265411d0821bd908881822f0f26f0887f8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1537c4f60a609751013bdc69eb1c6e6218982d91013115bc4e28cb84f816cd91\",\"dweb:/ipfs/QmSjkSTrrB4vuxECcm5cRG7YmraF53QWRgftxS827KcQLW\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":{\"keccak256\":\"0x91545de5c77cfac86c5686c4e1f338a18ee7adb689ac0234848d7a7fc8a560db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://dc89d05d8099ba4c3c2cf85737796d439899b5a04e6b87b1ea43f687ae08848a\",\"dweb:/ipfs/QmatU8gRvFkK3Yn1MYAekzi48Waw3cDLtXJpduvju9HFUu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":{\"keccak256\":\"0x876c6a40cba975df4f7dfe24e02d153b2ee758975b6d1eda494ecd4b7244aa8e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9be3f7930476d528ce10a121701421f0fb251b7d6b7cd579917375e6b283bb4\",\"dweb:/ipfs/QmSbvbYQvTk8KYJZ7QqSKB9Y4M1X3UDhS6k765Zr1BAwK8\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol\":{\"keccak256\":\"0x24c6b05c32cb344b3b0aebd01fbd8bfc69f8c8e29fca340b262d9612c34d51e2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5f6c004946f0cbc4b3e52d45248337146bc82569da894ecff3cbdc5a0dca95c3\",\"dweb:/ipfs/QmNSgDMQ7SHL6AJuzTSRbY2kgciHF1SKWfH6MaPH1N3TpR\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol\":{\"keccak256\":\"0xde065c15e38eb009c3dc8f99dfefdd1d6d244dd12a889a8b57edd90d32fb4395\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://23608955786060457f79267795a61eb89b3910b683fc136c749548369425088f\",\"dweb:/ipfs/QmXNorcQBF1Qk21y3aEJRiiHVtwm61zP4ttA1ZzmRjyHnz\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol\":{\"keccak256\":\"0xa206dd3d424b8cd1c4f1400aa344cbc974480fea02f0fb371b872558e5ff4e6d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea14c75f43a0008c582dcbae3ba3c900e446e28039dfdbb059d326ec5cc6a2d2\",\"dweb:/ipfs/QmRfF6BmUWiFkCgzVFbLcHsUCNz5q2XkkcwXPX57ViTK4D\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":{\"keccak256\":\"0xe0565e24e94204d4b254ace42d124d3279256090921a4818cbbf9747cbb14e04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4293a4762b0816738511f697efd04a0e881d4c409bd15ac1c4e7261fe5e482a2\",\"dweb:/ipfs/QmcHbEBne4fvpcD7RTJHCL6q9czoLa7KHneaCeYfXuWiGu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":{\"keccak256\":\"0x755fbf6c106fe1c3c375c41c95c38269873717d8e683678b5fdbf6c8d3426306\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7c7c92e72dd94f16b5c004d38c2d92eb2b760fd29a939945ed275633b0f93fa5\",\"dweb:/ipfs/QmVdCG7Aw7aVV67z5mUKZa4VqhXHdLqy3SKxPfxaxq54p2\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":{\"keccak256\":\"0x6de353f8c7f44c4294914a4917458ce90ae2f7ecd2d84074fe12d4a4f1485ee5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://369f979b79a3d3fd0336ab14b3accadb63e4784324afc34f8db11d1988526afd\",\"dweb:/ipfs/QmavmBZ354wTaXQ6ixBd8GrC9HwtRqn4MoNhCVJcx11off\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":{\"keccak256\":\"0xa3ac8b8d31f20a8732bb4ebad53b42b334ec29041de0224bd494913ef0b2ad07\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5a81d4eb3f47b09a8835b2fd53e0baa2e23cb604db3b10dae82543a5bcc52fa4\",\"dweb:/ipfs/QmQ9XSSgbaagWArmZJJ366bdJ7HfxUxn9jdnWwN6SxUSeY\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol\":{\"keccak256\":\"0x98520e740b0822ec053d21f376b8be8a58e93228f3758f9228a7d00e1f60950f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://31226706c004f1a4315d6b8d37621b46f4d5807c16e1ce72675c1431ed9006a2\",\"dweb:/ipfs/QmdSSyCuPex2E2VTd6UMYy9WAq9eJNZ6vHSUomntNknzXE\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":{\"keccak256\":\"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98\",\"dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":{\"keccak256\":\"0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25\",\"dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":{\"keccak256\":\"0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335\",\"dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":{\"keccak256\":\"0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353\",\"dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "createContract(bytes)": { - "notice": "Creates a contract forwarding eth value" - }, - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": { - "notice": "Allow any caller to execute an action" - }, - "isValidSignature(bytes,bytes)": { - "notice": "Verifies whether the provided signature is valid with respect to the provided data" - }, - "isValidSignature(bytes32,bytes)": { - "notice": "Verifies whether the provided signature is valid with respect to the provided hash" - }, - "nonce()": { - "notice": "Returns the next nonce of the default nonce space" - }, - "readNonce(uint256)": { - "notice": "Returns the next nonce of the given nonce space" - }, - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": { - "notice": "Allow any caller to execute an action" - }, - "signatureRecovery(bytes32,bytes)": { - "notice": "Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature." - }, - "supportsInterface(bytes4)": { - "notice": "Query if a contract implements an interface" - }, - "updateImageHash(bytes32)": { - "notice": "Updates the signers configuration of the wallet" - } - }, - "notice": "GuestModule implements a Sequence wallet without signatures, nonce or replay protection. executing transactions using this wallet is not an authenticated process, and can be done by any address.This contract is completely public with no security, designed to execute pre-signed transactions and use Sequence tools without using the wallets.", - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol": { - "ModuleAuth": { - "abi": [ - { - "inputs": [], - "name": "EmptySignature", - "type": "error" - }, - { - "inputs": [], - "name": "ImageHashIsZero", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_addr", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidNestedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "_s", - "type": "bytes32" - } - ], - "name": "InvalidSValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_flag", - "type": "uint256" - } - ], - "name": "InvalidSignatureFlag", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignatureLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes1", - "name": "_type", - "type": "bytes1" - } - ], - "name": "InvalidSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_v", - "type": "uint256" - } - ], - "name": "InvalidVValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_weight", - "type": "uint256" - } - ], - "name": "LowWeightChainedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_sender", - "type": "address" - }, - { - "internalType": "address", - "name": "_self", - "type": "address" - } - ], - "name": "OnlySelfAuth", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "SignerIsAddress0", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_type", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "_recoverMode", - "type": "bool" - } - ], - "name": "UnsupportedSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_prev", - "type": "uint256" - } - ], - "name": "WrongChainedCheckpointOrder", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "newImageHash", - "type": "bytes32" - } - ], - "name": "ImageHashUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "SET_IMAGE_HASH_TYPE_HASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signatures", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signatures", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_digest", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "signatureRecovery", - "outputs": [ - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "weight", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "imageHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "subdigest", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "checkpoint", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_imageHash", - "type": "bytes32" - } - ], - "name": "updateImageHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "isValidSignature(bytes,bytes)": { - "details": "MUST return the correct magic value if the signature provided is valid for the provided data > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\"))", - "params": { - "_data": "Arbitrary length data signed on the behalf of address(this)", - "_signatures": "Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)" - }, - "returns": { - "_0": "magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise" - } - }, - "isValidSignature(bytes32,bytes)": { - "details": "MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))", - "params": { - "_hash": "keccak256 hash that was signed", - "_signatures": "Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)" - }, - "returns": { - "_0": "magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise" - } - }, - "signatureRecovery(bytes32,bytes)": { - "details": "The signature must be prefixed with a type byte, which is used to determine the recovery method.", - "params": { - "_digest": "Digest of the signed data.", - "_signature": "A Sequence signature." - }, - "returns": { - "checkpoint": "A nonce that is incremented every time a new configuration is set.", - "imageHash": "The imageHash of the configuration that signed the message.", - "subdigest": "A modified version of the original digest, unique for each wallet/network.", - "threshold": "The required number of signatures needed to consider the signature valid.", - "weight": "The actual number of signatures collected in the signature." - } - }, - "supportsInterface(bytes4)": { - "params": { - "_interfaceID": "The interface identifier, as specified in ERC-165" - }, - "returns": { - "_0": "`true` if the contract implements `_interfaceID`" - } - }, - "updateImageHash(bytes32)": { - "params": { - "_imageHash": "New required image hash of the signature" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": "", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "gasEstimates": null, - "legacyAssembly": null, - "methodIdentifiers": { - "SET_IMAGE_HASH_TYPE_HASH()": "57c56d6b", - "isValidSignature(bytes,bytes)": "20c13b0b", - "isValidSignature(bytes32,bytes)": "1626ba7e", - "signatureRecovery(bytes32,bytes)": "853c5068", - "supportsInterface(bytes4)": "01ffc9a7", - "updateImageHash(bytes32)": "29561426" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EmptySignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidNestedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"InvalidSValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes1\",\"name\":\"_type\",\"type\":\"bytes1\"}],\"name\":\"InvalidSignatureType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_v\",\"type\":\"uint256\"}],\"name\":\"InvalidVValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_self\",\"type\":\"address\"}],\"name\":\"OnlySelfAuth\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"SignerIsAddress0\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_type\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_recoverMode\",\"type\":\"bool\"}],\"name\":\"UnsupportedSignatureType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_prev\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SET_IMAGE_HASH_TYPE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signatures\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signatures\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"signatureRecovery\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"subdigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided data > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\\\"isValidSignature(bytes,bytes)\\\"))\",\"params\":{\"_data\":\"Arbitrary length data signed on the behalf of address(this)\",\"_signatures\":\"Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)\"},\"returns\":{\"_0\":\"magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\"))\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signatures\":\"Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)\"},\"returns\":{\"_0\":\"magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"signatureRecovery(bytes32,bytes)\":{\"details\":\"The signature must be prefixed with a type byte, which is used to determine the recovery method.\",\"params\":{\"_digest\":\"Digest of the signed data.\",\"_signature\":\"A Sequence signature.\"},\"returns\":{\"checkpoint\":\"A nonce that is incremented every time a new configuration is set.\",\"imageHash\":\"The imageHash of the configuration that signed the message.\",\"subdigest\":\"A modified version of the original digest, unique for each wallet/network.\",\"threshold\":\"The required number of signatures needed to consider the signature valid.\",\"weight\":\"The actual number of signatures collected in the signature.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `_interfaceID`\"}},\"updateImageHash(bytes32)\":{\"params\":{\"_imageHash\":\"New required image hash of the signature\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided data\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"signatureRecovery(bytes32,bytes)\":{\"notice\":\"Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"updateImageHash(bytes32)\":{\"notice\":\"Updates the signers configuration of the wallet\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":\"ModuleAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":{\"keccak256\":\"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1\",\"dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol\":{\"keccak256\":\"0x58c028f02e3517de6c39584bcf1cedd4e7b23f575c24b363cbad4960a74f8a0b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f9652fead22c9fe8510de8427e2db354ed145ff30f49f85d1c717e293e5df665\",\"dweb:/ipfs/QmSJPFQxRE5n17DNB5Bu2jwRo17yLS7igMQGt3bvKkdLAP\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":{\"keccak256\":\"0xd4ae13a3d20fd7ab52ad16af6a06e7244daea450b796251e911091cac104d05f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8de37ec20a6b649e9fe3fb42276e4660ff546bca8b467f72beb35396ab5e62d6\",\"dweb:/ipfs/QmXT2SxBZKitkbKLbGbbNLhUbw2ataRpQ2DHafvhG953RE\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":{\"keccak256\":\"0x91545de5c77cfac86c5686c4e1f338a18ee7adb689ac0234848d7a7fc8a560db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://dc89d05d8099ba4c3c2cf85737796d439899b5a04e6b87b1ea43f687ae08848a\",\"dweb:/ipfs/QmatU8gRvFkK3Yn1MYAekzi48Waw3cDLtXJpduvju9HFUu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":{\"keccak256\":\"0x876c6a40cba975df4f7dfe24e02d153b2ee758975b6d1eda494ecd4b7244aa8e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9be3f7930476d528ce10a121701421f0fb251b7d6b7cd579917375e6b283bb4\",\"dweb:/ipfs/QmSbvbYQvTk8KYJZ7QqSKB9Y4M1X3UDhS6k765Zr1BAwK8\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol\":{\"keccak256\":\"0x24c6b05c32cb344b3b0aebd01fbd8bfc69f8c8e29fca340b262d9612c34d51e2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5f6c004946f0cbc4b3e52d45248337146bc82569da894ecff3cbdc5a0dca95c3\",\"dweb:/ipfs/QmNSgDMQ7SHL6AJuzTSRbY2kgciHF1SKWfH6MaPH1N3TpR\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":{\"keccak256\":\"0xe0565e24e94204d4b254ace42d124d3279256090921a4818cbbf9747cbb14e04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4293a4762b0816738511f697efd04a0e881d4c409bd15ac1c4e7261fe5e482a2\",\"dweb:/ipfs/QmcHbEBne4fvpcD7RTJHCL6q9czoLa7KHneaCeYfXuWiGu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":{\"keccak256\":\"0x755fbf6c106fe1c3c375c41c95c38269873717d8e683678b5fdbf6c8d3426306\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7c7c92e72dd94f16b5c004d38c2d92eb2b760fd29a939945ed275633b0f93fa5\",\"dweb:/ipfs/QmVdCG7Aw7aVV67z5mUKZa4VqhXHdLqy3SKxPfxaxq54p2\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":{\"keccak256\":\"0x6de353f8c7f44c4294914a4917458ce90ae2f7ecd2d84074fe12d4a4f1485ee5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://369f979b79a3d3fd0336ab14b3accadb63e4784324afc34f8db11d1988526afd\",\"dweb:/ipfs/QmavmBZ354wTaXQ6ixBd8GrC9HwtRqn4MoNhCVJcx11off\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":{\"keccak256\":\"0xa3ac8b8d31f20a8732bb4ebad53b42b334ec29041de0224bd494913ef0b2ad07\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5a81d4eb3f47b09a8835b2fd53e0baa2e23cb604db3b10dae82543a5bcc52fa4\",\"dweb:/ipfs/QmQ9XSSgbaagWArmZJJ366bdJ7HfxUxn9jdnWwN6SxUSeY\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":{\"keccak256\":\"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98\",\"dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":{\"keccak256\":\"0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25\",\"dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":{\"keccak256\":\"0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335\",\"dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":{\"keccak256\":\"0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353\",\"dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "isValidSignature(bytes,bytes)": { - "notice": "Verifies whether the provided signature is valid with respect to the provided data" - }, - "isValidSignature(bytes32,bytes)": { - "notice": "Verifies whether the provided signature is valid with respect to the provided hash" - }, - "signatureRecovery(bytes32,bytes)": { - "notice": "Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature." - }, - "supportsInterface(bytes4)": { - "notice": "Query if a contract implements an interface" - }, - "updateImageHash(bytes32)": { - "notice": "Updates the signers configuration of the wallet" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol": { - "ModuleCalls": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_provided", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - } - ], - "name": "BadNonce", - "type": "error" - }, - { - "inputs": [], - "name": "ImageHashIsZero", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes1", - "name": "_type", - "type": "bytes1" - } - ], - "name": "InvalidSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_requested", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_available", - "type": "uint256" - } - ], - "name": "NotEnoughGas", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyDelegatecall", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_sender", - "type": "address" - }, - { - "internalType": "address", - "name": "_self", - "type": "address" - } - ], - "name": "OnlySelfAuth", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "newImageHash", - "type": "bytes32" - } - ], - "name": "ImageHashUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_newNonce", - "type": "uint256" - } - ], - "name": "NonceChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "TxExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_reason", - "type": "bytes" - } - ], - "name": "TxFailed", - "type": "event" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "_nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "execute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - } - ], - "name": "readNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - } - ], - "name": "selfExecute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_digest", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "signatureRecovery", - "outputs": [ - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "weight", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "imageHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "subdigest", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "checkpoint", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_imageHash", - "type": "bytes32" - } - ], - "name": "updateImageHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": { - "details": "Relayers must ensure that the gasLimit specified for each transaction is acceptable to them. A user could specify large enough that it could consume all the gas available.", - "params": { - "_nonce": "Signature nonce (may contain an encoded space)", - "_signature": "Encoded signature", - "_txs": "Transactions to process" - } - }, - "nonce()": { - "details": "The default nonce space is 0x00", - "returns": { - "_0": "The next nonce" - } - }, - "readNonce(uint256)": { - "params": { - "_space": "Nonce space, each space keeps an independent nonce count" - }, - "returns": { - "_0": "The next nonce" - } - }, - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": { - "params": { - "_txs": "Transactions to execute" - } - }, - "supportsInterface(bytes4)": { - "params": { - "_interfaceID": "The interface identifier, as specified in ERC-165" - }, - "returns": { - "_0": "`true` if the contract implements `_interfaceID`" - } - }, - "updateImageHash(bytes32)": { - "params": { - "_imageHash": "New required image hash of the signature" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": "", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "gasEstimates": null, - "legacyAssembly": null, - "methodIdentifiers": { - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": "7a9a1628", - "nonce()": "affed0e0", - "readNonce(uint256)": "8c3f5563", - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": "61c2926c", - "signatureRecovery(bytes32,bytes)": "853c5068", - "supportsInterface(bytes4)": "01ffc9a7", - "updateImageHash(bytes32)": "29561426" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes1\",\"name\":\"_type\",\"type\":\"bytes1\"}],\"name\":\"InvalidSignatureType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requested\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_available\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyDelegatecall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_self\",\"type\":\"address\"}],\"name\":\"OnlySelfAuth\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_tx\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"TxExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_tx\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_reason\",\"type\":\"bytes\"}],\"name\":\"TxFailed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"revertOnError\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IModuleCalls.Transaction[]\",\"name\":\"_txs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"revertOnError\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IModuleCalls.Transaction[]\",\"name\":\"_txs\",\"type\":\"tuple[]\"}],\"name\":\"selfExecute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"signatureRecovery\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"subdigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)\":{\"details\":\"Relayers must ensure that the gasLimit specified for each transaction is acceptable to them. A user could specify large enough that it could consume all the gas available.\",\"params\":{\"_nonce\":\"Signature nonce (may contain an encoded space)\",\"_signature\":\"Encoded signature\",\"_txs\":\"Transactions to process\"}},\"nonce()\":{\"details\":\"The default nonce space is 0x00\",\"returns\":{\"_0\":\"The next nonce\"}},\"readNonce(uint256)\":{\"params\":{\"_space\":\"Nonce space, each space keeps an independent nonce count\"},\"returns\":{\"_0\":\"The next nonce\"}},\"selfExecute((bool,bool,uint256,address,uint256,bytes)[])\":{\"params\":{\"_txs\":\"Transactions to execute\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `_interfaceID`\"}},\"updateImageHash(bytes32)\":{\"params\":{\"_imageHash\":\"New required image hash of the signature\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)\":{\"notice\":\"Allow wallet owner to execute an action\"},\"nonce()\":{\"notice\":\"Returns the next nonce of the default nonce space\"},\"readNonce(uint256)\":{\"notice\":\"Returns the next nonce of the given nonce space\"},\"selfExecute((bool,bool,uint256,address,uint256,bytes)[])\":{\"notice\":\"Allow wallet to execute an action without signing the message\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"updateImageHash(bytes32)\":{\"notice\":\"Updates the signers configuration of the wallet\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":\"ModuleCalls\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":{\"keccak256\":\"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1\",\"dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol\":{\"keccak256\":\"0x80c0151dbd444f96c2f935e70a6d3cc57e307588fa21d7eace67e568dd3d35c1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://39a856555a5eb900e67d351e667135f245ccebd304d692b35fc8bdc83aec1b53\",\"dweb:/ipfs/QmUdWfa7GcTGM5gk7qYbNCHtsxF4o8dXHzr6HbdFng5sQm\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":{\"keccak256\":\"0xd4ae13a3d20fd7ab52ad16af6a06e7244daea450b796251e911091cac104d05f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8de37ec20a6b649e9fe3fb42276e4660ff546bca8b467f72beb35396ab5e62d6\",\"dweb:/ipfs/QmXT2SxBZKitkbKLbGbbNLhUbw2ataRpQ2DHafvhG953RE\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":{\"keccak256\":\"0x3b5388842f763a5347d632a0e0e8499a54b6f0b0a6eb7f7d3d848319defa042d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b36fa5a88a4e174967f850bf2bb78c787d8016ef7b5eee3e2f883fbfe9b87a7d\",\"dweb:/ipfs/QmTDZiPiQGe1fmTKKzdwzBE1xjkh8apTotW1SQRUCFXf4q\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":{\"keccak256\":\"0x32bdb1d343eee2e32fd9d0f1d6dc0e265411d0821bd908881822f0f26f0887f8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1537c4f60a609751013bdc69eb1c6e6218982d91013115bc4e28cb84f816cd91\",\"dweb:/ipfs/QmSjkSTrrB4vuxECcm5cRG7YmraF53QWRgftxS827KcQLW\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":{\"keccak256\":\"0x91545de5c77cfac86c5686c4e1f338a18ee7adb689ac0234848d7a7fc8a560db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://dc89d05d8099ba4c3c2cf85737796d439899b5a04e6b87b1ea43f687ae08848a\",\"dweb:/ipfs/QmatU8gRvFkK3Yn1MYAekzi48Waw3cDLtXJpduvju9HFUu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":{\"keccak256\":\"0x876c6a40cba975df4f7dfe24e02d153b2ee758975b6d1eda494ecd4b7244aa8e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9be3f7930476d528ce10a121701421f0fb251b7d6b7cd579917375e6b283bb4\",\"dweb:/ipfs/QmSbvbYQvTk8KYJZ7QqSKB9Y4M1X3UDhS6k765Zr1BAwK8\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol\":{\"keccak256\":\"0x24c6b05c32cb344b3b0aebd01fbd8bfc69f8c8e29fca340b262d9612c34d51e2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5f6c004946f0cbc4b3e52d45248337146bc82569da894ecff3cbdc5a0dca95c3\",\"dweb:/ipfs/QmNSgDMQ7SHL6AJuzTSRbY2kgciHF1SKWfH6MaPH1N3TpR\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol\":{\"keccak256\":\"0xde065c15e38eb009c3dc8f99dfefdd1d6d244dd12a889a8b57edd90d32fb4395\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://23608955786060457f79267795a61eb89b3910b683fc136c749548369425088f\",\"dweb:/ipfs/QmXNorcQBF1Qk21y3aEJRiiHVtwm61zP4ttA1ZzmRjyHnz\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":{\"keccak256\":\"0xe0565e24e94204d4b254ace42d124d3279256090921a4818cbbf9747cbb14e04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4293a4762b0816738511f697efd04a0e881d4c409bd15ac1c4e7261fe5e482a2\",\"dweb:/ipfs/QmcHbEBne4fvpcD7RTJHCL6q9czoLa7KHneaCeYfXuWiGu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol\":{\"keccak256\":\"0x98520e740b0822ec053d21f376b8be8a58e93228f3758f9228a7d00e1f60950f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://31226706c004f1a4315d6b8d37621b46f4d5807c16e1ce72675c1431ed9006a2\",\"dweb:/ipfs/QmdSSyCuPex2E2VTd6UMYy9WAq9eJNZ6vHSUomntNknzXE\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":{\"keccak256\":\"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98\",\"dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":{\"keccak256\":\"0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25\",\"dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":{\"keccak256\":\"0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335\",\"dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":{\"keccak256\":\"0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353\",\"dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": { - "notice": "Allow wallet owner to execute an action" - }, - "nonce()": { - "notice": "Returns the next nonce of the default nonce space" - }, - "readNonce(uint256)": { - "notice": "Returns the next nonce of the given nonce space" - }, - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": { - "notice": "Allow wallet to execute an action without signing the message" - }, - "supportsInterface(bytes4)": { - "notice": "Query if a contract implements an interface" - }, - "updateImageHash(bytes32)": { - "notice": "Updates the signers configuration of the wallet" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol": { - "ModuleCreator": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "CreateFailed", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_sender", - "type": "address" - }, - { - "internalType": "address", - "name": "_self", - "type": "address" - } - ], - "name": "OnlySelfAuth", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_contract", - "type": "address" - } - ], - "name": "CreatedContract", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "createContract", - "outputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "createContract(bytes)": { - "params": { - "_code": "Creation code of the contract" - }, - "returns": { - "addr": "The address of the created contract" - } - }, - "supportsInterface(bytes4)": { - "params": { - "_interfaceID": "The interface identifier, as specified in ERC-165" - }, - "returns": { - "_0": "`true` if the contract implements `_interfaceID`" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":169:1177 contract ModuleCreator is IModuleCreator, ModuleERC165, ModuleSelfAuth {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":169:1177 contract ModuleCreator is IModuleCreator, ModuleERC165, ModuleSelfAuth {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x01ffc9a7\n eq\n tag_2\n jumpi\n dup1\n 0x90042baf\n eq\n tag_3\n jumpi\n tag_1:\n 0x00\n dup1\n revert\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":942:1175 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n tag_2:\n callvalue\n dup1\n iszero\n tag_4\n jumpi\n 0x00\n dup1\n revert\n tag_4:\n pop\n tag_5\n tag_6\n calldatasize\n 0x04\n tag_7\n jump\t// in\n tag_6:\n tag_8\n jump\t// in\n tag_5:\n mload(0x40)\n /* \"#utility.yul\":516:530 */\n swap1\n iszero\n /* \"#utility.yul\":509:531 */\n iszero\n /* \"#utility.yul\":491:532 */\n dup2\n mstore\n /* \"#utility.yul\":479:481 */\n 0x20\n /* \"#utility.yul\":464:482 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":942:1175 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n tag_9:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":456:732 function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {... */\n tag_3:\n tag_11\n tag_12\n calldatasize\n 0x04\n tag_13\n jump\t// in\n tag_12:\n tag_14\n jump\t// in\n tag_11:\n mload(0x40)\n /* \"#utility.yul\":1893:1935 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1881:1936 */\n swap1\n swap2\n and\n /* \"#utility.yul\":1863:1937 */\n dup2\n mstore\n /* \"#utility.yul\":1851:1853 */\n 0x20\n /* \"#utility.yul\":1836:1854 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":456:732 function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {... */\n tag_9\n /* \"#utility.yul\":1717:1943 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":942:1175 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n tag_8:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1028:1032 bool */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1044:1092 _interfaceID == type(IModuleCreator).interfaceId */\n 0x6ffbd45100000000000000000000000000000000000000000000000000000000\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n dup4\n and\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1040:1120 if (_interfaceID == type(IModuleCreator).interfaceId) {... */\n tag_18\n jumpi\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1109:1113 true */\n 0x01\n swap2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":942:1175 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n swap1\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":1040:1120 if (_interfaceID == type(IModuleCreator).interfaceId) {... */\n tag_18:\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":709:756 _interfaceID == this.supportsInterface.selector */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":725:756 this.supportsInterface.selector */\n 0x01ffc9a700000000000000000000000000000000000000000000000000000000\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":709:756 _interfaceID == this.supportsInterface.selector */\n eq\n swap1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":942:1175 function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {... */\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":456:732 function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {... */\n tag_14:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":550:562 address addr */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":178:188 msg.sender */\n caller\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":200:204 this */\n address\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":178:205 msg.sender != address(this) */\n eq\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":174:268 if (msg.sender != address(this)) {... */\n tag_22\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n mload(0x40)\n 0xe125889400000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":235:245 msg.sender */\n caller\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n 0x04\n dup3\n add\n /* \"#utility.yul\":2183:2217 */\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":255:259 this */\n address\n /* \"#utility.yul\":2233:2251 */\n 0x24\n dup3\n add\n /* \"#utility.yul\":2226:2269 */\n mstore\n /* \"#utility.yul\":2095:2113 */\n 0x44\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":222:261 OnlySelfAuth(msg.sender, address(this)) */\n tag_23:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":174:268 if (msg.sender != address(this)) {... */\n tag_22:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":631:636 _code */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":625:637 mload(_code) */\n mload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":620:622 32 */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":613:618 _code */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":609:623 add(_code, 32) */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":596:607 callvalue() */\n callvalue\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":589:638 create(callvalue(), add(_code, 32), mload(_code)) */\n create\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":581:638 addr := create(callvalue(), add(_code, 32), mload(_code)) */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":649:667 addr == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup2\n and\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":645:695 if (addr == address(0)) revert CreateFailed(_code) */\n tag_26\n jumpi\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":689:694 _code */\n dup2\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":676:695 CreateFailed(_code) */\n mload(0x40)\n 0x0d25719100000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_23\n swap2\n swap1\n tag_28\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":645:695 if (addr == address(0)) revert CreateFailed(_code) */\n tag_26:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":706:727 CreatedContract(addr) */\n mload(0x40)\n /* \"#utility.yul\":1893:1935 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1881:1936 */\n dup3\n and\n /* \"#utility.yul\":1863:1937 */\n dup2\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":706:727 CreatedContract(addr) */\n 0xa506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c\n swap1\n /* \"#utility.yul\":1851:1853 */\n 0x20\n /* \"#utility.yul\":1836:1854 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":706:727 CreatedContract(addr) */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":456:732 function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":14:346 */\n tag_7:\n /* \"#utility.yul\":72:78 */\n 0x00\n /* \"#utility.yul\":125:127 */\n 0x20\n /* \"#utility.yul\":113:122 */\n dup3\n /* \"#utility.yul\":104:111 */\n dup5\n /* \"#utility.yul\":100:123 */\n sub\n /* \"#utility.yul\":96:128 */\n slt\n /* \"#utility.yul\":93:145 */\n iszero\n tag_34\n jumpi\n /* \"#utility.yul\":141:142 */\n 0x00\n /* \"#utility.yul\":138:139 */\n dup1\n /* \"#utility.yul\":131:143 */\n revert\n /* \"#utility.yul\":93:145 */\n tag_34:\n /* \"#utility.yul\":180:189 */\n dup2\n /* \"#utility.yul\":167:190 */\n calldataload\n /* \"#utility.yul\":230:296 */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":223:228 */\n dup2\n /* \"#utility.yul\":219:297 */\n and\n /* \"#utility.yul\":212:217 */\n dup2\n /* \"#utility.yul\":209:298 */\n eq\n /* \"#utility.yul\":199:316 */\n tag_35\n jumpi\n /* \"#utility.yul\":312:313 */\n 0x00\n /* \"#utility.yul\":309:310 */\n dup1\n /* \"#utility.yul\":302:314 */\n revert\n /* \"#utility.yul\":199:316 */\n tag_35:\n /* \"#utility.yul\":335:340 */\n swap4\n /* \"#utility.yul\":14:346 */\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":543:727 */\n tag_31:\n /* \"#utility.yul\":595:672 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":592:593 */\n 0x00\n /* \"#utility.yul\":585:673 */\n mstore\n /* \"#utility.yul\":692:696 */\n 0x41\n /* \"#utility.yul\":689:690 */\n 0x04\n /* \"#utility.yul\":682:697 */\n mstore\n /* \"#utility.yul\":716:720 */\n 0x24\n /* \"#utility.yul\":713:714 */\n 0x00\n /* \"#utility.yul\":706:721 */\n revert\n /* \"#utility.yul\":732:1712 */\n tag_13:\n /* \"#utility.yul\":800:806 */\n 0x00\n /* \"#utility.yul\":853:855 */\n 0x20\n /* \"#utility.yul\":841:850 */\n dup3\n /* \"#utility.yul\":832:839 */\n dup5\n /* \"#utility.yul\":828:851 */\n sub\n /* \"#utility.yul\":824:856 */\n slt\n /* \"#utility.yul\":821:873 */\n iszero\n tag_39\n jumpi\n /* \"#utility.yul\":869:870 */\n 0x00\n /* \"#utility.yul\":866:867 */\n dup1\n /* \"#utility.yul\":859:871 */\n revert\n /* \"#utility.yul\":821:873 */\n tag_39:\n /* \"#utility.yul\":909:918 */\n dup2\n /* \"#utility.yul\":896:919 */\n calldataload\n /* \"#utility.yul\":938:956 */\n 0xffffffffffffffff\n /* \"#utility.yul\":979:981 */\n dup1\n /* \"#utility.yul\":971:977 */\n dup3\n /* \"#utility.yul\":968:982 */\n gt\n /* \"#utility.yul\":965:999 */\n iszero\n tag_40\n jumpi\n /* \"#utility.yul\":995:996 */\n 0x00\n /* \"#utility.yul\":992:993 */\n dup1\n /* \"#utility.yul\":985:997 */\n revert\n /* \"#utility.yul\":965:999 */\n tag_40:\n /* \"#utility.yul\":1033:1039 */\n dup2\n /* \"#utility.yul\":1022:1031 */\n dup5\n /* \"#utility.yul\":1018:1040 */\n add\n /* \"#utility.yul\":1008:1040 */\n swap2\n pop\n /* \"#utility.yul\":1078:1085 */\n dup5\n /* \"#utility.yul\":1071:1075 */\n 0x1f\n /* \"#utility.yul\":1067:1069 */\n dup4\n /* \"#utility.yul\":1063:1076 */\n add\n /* \"#utility.yul\":1059:1086 */\n slt\n /* \"#utility.yul\":1049:1104 */\n tag_41\n jumpi\n /* \"#utility.yul\":1100:1101 */\n 0x00\n /* \"#utility.yul\":1097:1098 */\n dup1\n /* \"#utility.yul\":1090:1102 */\n revert\n /* \"#utility.yul\":1049:1104 */\n tag_41:\n /* \"#utility.yul\":1136:1138 */\n dup2\n /* \"#utility.yul\":1123:1139 */\n calldataload\n /* \"#utility.yul\":1158:1160 */\n dup2\n /* \"#utility.yul\":1154:1156 */\n dup2\n /* \"#utility.yul\":1151:1161 */\n gt\n /* \"#utility.yul\":1148:1184 */\n iszero\n tag_43\n jumpi\n /* \"#utility.yul\":1164:1182 */\n tag_43\n tag_31\n jump\t// in\n tag_43:\n /* \"#utility.yul\":1298:1300 */\n 0x40\n /* \"#utility.yul\":1292:1301 */\n mload\n /* \"#utility.yul\":1360:1364 */\n 0x1f\n /* \"#utility.yul\":1352:1365 */\n dup3\n add\n /* \"#utility.yul\":1203:1269 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n /* \"#utility.yul\":1348:1370 */\n swap1\n dup2\n and\n /* \"#utility.yul\":1372:1374 */\n 0x3f\n /* \"#utility.yul\":1344:1375 */\n add\n /* \"#utility.yul\":1340:1380 */\n and\n /* \"#utility.yul\":1328:1381 */\n dup2\n add\n swap1\n /* \"#utility.yul\":1396:1414 */\n dup4\n dup3\n gt\n /* \"#utility.yul\":1416:1438 */\n dup2\n dup4\n lt\n /* \"#utility.yul\":1393:1439 */\n or\n /* \"#utility.yul\":1390:1462 */\n iszero\n tag_45\n jumpi\n /* \"#utility.yul\":1442:1460 */\n tag_45\n tag_31\n jump\t// in\n tag_45:\n /* \"#utility.yul\":1482:1492 */\n dup2\n /* \"#utility.yul\":1478:1480 */\n 0x40\n /* \"#utility.yul\":1471:1493 */\n mstore\n /* \"#utility.yul\":1517:1519 */\n dup3\n /* \"#utility.yul\":1509:1515 */\n dup2\n /* \"#utility.yul\":1502:1520 */\n mstore\n /* \"#utility.yul\":1557:1564 */\n dup8\n /* \"#utility.yul\":1552:1554 */\n 0x20\n /* \"#utility.yul\":1547:1549 */\n dup5\n /* \"#utility.yul\":1543:1545 */\n dup8\n /* \"#utility.yul\":1539:1550 */\n add\n /* \"#utility.yul\":1535:1555 */\n add\n /* \"#utility.yul\":1532:1565 */\n gt\n /* \"#utility.yul\":1529:1582 */\n iszero\n tag_46\n jumpi\n /* \"#utility.yul\":1578:1579 */\n 0x00\n /* \"#utility.yul\":1575:1576 */\n dup1\n /* \"#utility.yul\":1568:1580 */\n revert\n /* \"#utility.yul\":1529:1582 */\n tag_46:\n /* \"#utility.yul\":1634:1636 */\n dup3\n /* \"#utility.yul\":1629:1631 */\n 0x20\n /* \"#utility.yul\":1625:1627 */\n dup7\n /* \"#utility.yul\":1621:1632 */\n add\n /* \"#utility.yul\":1616:1618 */\n 0x20\n /* \"#utility.yul\":1608:1614 */\n dup4\n /* \"#utility.yul\":1604:1619 */\n add\n /* \"#utility.yul\":1591:1637 */\n calldatacopy\n /* \"#utility.yul\":1679:1680 */\n 0x00\n /* \"#utility.yul\":1657:1672 */\n swap3\n dup2\n add\n /* \"#utility.yul\":1674:1676 */\n 0x20\n /* \"#utility.yul\":1653:1677 */\n add\n /* \"#utility.yul\":1646:1681 */\n swap3\n swap1\n swap3\n mstore\n pop\n /* \"#utility.yul\":1661:1667 */\n swap6\n /* \"#utility.yul\":732:1712 */\n swap5\n pop\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2280:2885 */\n tag_28:\n /* \"#utility.yul\":2390:2394 */\n 0x00\n /* \"#utility.yul\":2419:2421 */\n 0x20\n /* \"#utility.yul\":2448:2450 */\n dup1\n /* \"#utility.yul\":2437:2446 */\n dup4\n /* \"#utility.yul\":2430:2451 */\n mstore\n /* \"#utility.yul\":2480:2486 */\n dup4\n /* \"#utility.yul\":2474:2487 */\n mload\n /* \"#utility.yul\":2523:2529 */\n dup1\n /* \"#utility.yul\":2518:2520 */\n dup3\n /* \"#utility.yul\":2507:2516 */\n dup6\n /* \"#utility.yul\":2503:2521 */\n add\n /* \"#utility.yul\":2496:2530 */\n mstore\n /* \"#utility.yul\":2548:2549 */\n 0x00\n /* \"#utility.yul\":2558:2698 */\n tag_50:\n /* \"#utility.yul\":2572:2578 */\n dup2\n /* \"#utility.yul\":2569:2570 */\n dup2\n /* \"#utility.yul\":2566:2579 */\n lt\n /* \"#utility.yul\":2558:2698 */\n iszero\n tag_52\n jumpi\n /* \"#utility.yul\":2667:2681 */\n dup6\n dup2\n add\n /* \"#utility.yul\":2663:2686 */\n dup4\n add\n /* \"#utility.yul\":2657:2687 */\n mload\n /* \"#utility.yul\":2633:2650 */\n dup6\n dup3\n add\n /* \"#utility.yul\":2652:2654 */\n 0x40\n /* \"#utility.yul\":2629:2655 */\n add\n /* \"#utility.yul\":2622:2688 */\n mstore\n /* \"#utility.yul\":2587:2597 */\n dup3\n add\n /* \"#utility.yul\":2558:2698 */\n jump(tag_50)\n tag_52:\n /* \"#utility.yul\":2562:2565 */\n pop\n /* \"#utility.yul\":2747:2748 */\n 0x00\n /* \"#utility.yul\":2742:2744 */\n 0x40\n /* \"#utility.yul\":2733:2739 */\n dup3\n /* \"#utility.yul\":2722:2731 */\n dup7\n /* \"#utility.yul\":2718:2740 */\n add\n /* \"#utility.yul\":2714:2745 */\n add\n /* \"#utility.yul\":2707:2749 */\n mstore\n /* \"#utility.yul\":2876:2878 */\n 0x40\n /* \"#utility.yul\":2806:2872 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n /* \"#utility.yul\":2801:2803 */\n 0x1f\n /* \"#utility.yul\":2793:2799 */\n dup4\n /* \"#utility.yul\":2789:2804 */\n add\n /* \"#utility.yul\":2785:2873 */\n and\n /* \"#utility.yul\":2774:2783 */\n dup6\n /* \"#utility.yul\":2770:2874 */\n add\n /* \"#utility.yul\":2766:2879 */\n add\n /* \"#utility.yul\":2758:2879 */\n swap3\n pop\n pop\n pop\n /* \"#utility.yul\":2280:2885 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122001c76a69e8b3fef98970ac002bb7976078d0e17b12897e7965b9442691a3a58464736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5061040e806100206000396000f3fe6080604052600436106100295760003560e01c806301ffc9a71461002e57806390042baf14610063575b600080fd5b34801561003a57600080fd5b5061004e610049366004610225565b61009b565b60405190151581526020015b60405180910390f35b61007661007136600461029d565b610136565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161005a565b60007f6ffbd451000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316016100ee57506001919050565b507fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b600033301461017e576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044015b60405180910390fd5b81516020830134f0905073ffffffffffffffffffffffffffffffffffffffff81166101d757816040517f0d257191000000000000000000000000000000000000000000000000000000008152600401610175919061036c565b60405173ffffffffffffffffffffffffffffffffffffffff821681527fa506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c9060200160405180910390a1919050565b60006020828403121561023757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026757600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102af57600080fd5b813567ffffffffffffffff808211156102c757600080fd5b818401915084601f8301126102db57600080fd5b8135818111156102ed576102ed61026e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156103335761033361026e565b8160405282815287602084870101111561034c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b818110156103995785810183015185820160400152820161037d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fea264697066735822122001c76a69e8b3fef98970ac002bb7976078d0e17b12897e7965b9442691a3a58464736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40E DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0x90042BAF EQ PUSH2 0x63 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x225 JUMP JUMPDEST PUSH2 0x9B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x76 PUSH2 0x71 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5A JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6FFBD45100000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0xEE JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x17E JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD CALLVALUE CREATE SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1D7 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xD25719100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x36C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0xA506AD4E7F05ECEBA62A023C3219E5BD98A615F4FA87E2AFB08A2DA5CF62BF0C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2ED JUMPI PUSH2 0x2ED PUSH2 0x26E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x333 JUMPI PUSH2 0x333 PUSH2 0x26E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x399 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x37D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD 0xC7 PUSH11 0x69E8B3FEF98970AC002BB7 SWAP8 PUSH1 0x78 0xD0 0xE1 PUSH28 0x12897E7965B9442691A3A58464736F6C634300081200330000000000 ", - "sourceMap": "169:1008:4:-:0;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": { - "@createContract_876": { - "entryPoint": 310, - "id": 876, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_901": { - "entryPoint": 155, - "id": 901, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@supportsInterface_919": { - "entryPoint": null, - "id": 919, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes4": { - "entryPoint": 549, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_bytes_memory_ptr": { - "entryPoint": 669, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { - "entryPoint": 876, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "panic_error_0x41": { - "entryPoint": 622, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:2887:22", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:22", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "83:263:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "129:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "138:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "141:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "131:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "131:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "131:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "104:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "113:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "100:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "100:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "125:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "96:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "96:32:22" - }, - "nodeType": "YulIf", - "src": "93:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "154:36:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "180:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "167:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "167:23:22" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "158:5:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "300:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "309:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "312:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "302:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "302:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "302:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "212:5:22" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "223:5:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "230:66:22", - "type": "", - "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "219:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "219:78:22" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "209:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "209:89:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "202:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "202:97:22" - }, - "nodeType": "YulIf", - "src": "199:117:22" - }, - { - "nodeType": "YulAssignment", - "src": "325:15:22", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "335:5:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "325:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes4", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "49:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "60:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "72:6:22", - "type": "" - } - ], - "src": "14:332:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "446:92:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "456:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "468:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "479:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "464:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "464:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "456:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "498:9:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "523:6:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "516:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "516:14:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "509:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "509:22:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "491:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "491:41:22" - }, - "nodeType": "YulExpressionStatement", - "src": "491:41:22" - } - ] - }, - "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "415:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "426:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "437:4:22", - "type": "" - } - ], - "src": "351:187:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "575:152:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "592:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "595:77:22", - "type": "", - "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "585:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "585:88:22" - }, - "nodeType": "YulExpressionStatement", - "src": "585:88:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "689:1:22", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "692:4:22", - "type": "", - "value": "0x41" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "682:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "682:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "682:15:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "713:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "716:4:22", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "706:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "706:15:22" - }, - "nodeType": "YulExpressionStatement", - "src": "706:15:22" - } - ] - }, - "name": "panic_error_0x41", - "nodeType": "YulFunctionDefinition", - "src": "543:184:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "811:901:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "857:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "866:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "869:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "859:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "859:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "859:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "832:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "841:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "828:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "828:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "853:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "824:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "824:32:22" - }, - "nodeType": "YulIf", - "src": "821:52:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "882:37:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "909:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "896:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "896:23:22" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "886:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "928:28:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "938:18:22", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "932:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "983:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "992:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "995:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "985:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "985:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "985:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "971:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "979:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "968:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "968:14:22" - }, - "nodeType": "YulIf", - "src": "965:34:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1008:32:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1022:9:22" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1033:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1018:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1018:22:22" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "1012:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1088:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1097:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1100:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1090:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1090:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1090:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1067:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1071:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1063:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1063:13:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1078:7:22" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1059:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1059:27:22" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1052:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1052:35:22" - }, - "nodeType": "YulIf", - "src": "1049:55:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1113:26:22", - "value": { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1136:2:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1123:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "1123:16:22" - }, - "variables": [ - { - "name": "_3", - "nodeType": "YulTypedName", - "src": "1117:2:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1162:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "1164:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "1164:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1164:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1154:2:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1158:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1151:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "1151:10:22" - }, - "nodeType": "YulIf", - "src": "1148:36:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1193:76:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1203:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" - }, - "variables": [ - { - "name": "_4", - "nodeType": "YulTypedName", - "src": "1197:2:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1278:23:22", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1298:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1292:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "1292:9:22" - }, - "variables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "1282:6:22", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1310:71:22", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1332:6:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1356:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1360:4:22", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1352:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1352:13:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1367:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1348:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1348:22:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1372:2:22", - "type": "", - "value": "63" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1344:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1344:31:22" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1377:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1340:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1340:40:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1328:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1328:53:22" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "1314:10:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1440:22:22", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "1442:16:22" - }, - "nodeType": "YulFunctionCall", - "src": "1442:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1442:18:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1399:10:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1411:2:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1396:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "1396:18:22" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1419:10:22" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1431:6:22" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1416:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "1416:22:22" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "1393:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "1393:46:22" - }, - "nodeType": "YulIf", - "src": "1390:72:22" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1478:2:22", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1482:10:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1471:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1471:22:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1471:22:22" - }, - { - "expression": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1509:6:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1517:2:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1502:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1502:18:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1502:18:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1566:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1575:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1578:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1568:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1568:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1568:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1543:2:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1547:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1539:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1539:11:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1552:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1535:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1535:20:22" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1557:7:22" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1532:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "1532:33:22" - }, - "nodeType": "YulIf", - "src": "1529:53:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1608:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1616:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1604:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1604:15:22" - }, - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1625:2:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1629:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1621:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1621:11:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1634:2:22" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "1591:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "1591:46:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1591:46:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1661:6:22" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1669:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1657:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1657:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1674:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1653:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1653:24:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1679:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1646:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1646:35:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1646:35:22" - }, - { - "nodeType": "YulAssignment", - "src": "1690:16:22", - "value": { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1700:6:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1690:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bytes_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "777:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "788:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "800:6:22", - "type": "" - } - ], - "src": "732:980:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1818:125:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1828:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1840:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1851:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1836:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1836:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1828:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1870:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1885:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1893:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1881:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "1881:55:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1863:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "1863:74:22" - }, - "nodeType": "YulExpressionStatement", - "src": "1863:74:22" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1787:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1798:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1809:4:22", - "type": "" - } - ], - "src": "1717:226:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2077:198:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2087:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2099:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2110:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2095:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2095:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2087:4:22" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2122:52:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2132:42:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "2126:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2190:9:22" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2205:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2213:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2201:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2201:15:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2183:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2183:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2183:34:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2237:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2248:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2233:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2233:18:22" - }, - { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2257:6:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2265:2:22" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2253:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2253:15:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2226:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2226:43:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2226:43:22" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2038:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "2049:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2057:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2068:4:22", - "type": "" - } - ], - "src": "1948:327:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2399:486:22", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2409:12:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2419:2:22", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "2413:2:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2437:9:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2448:2:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2430:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2430:21:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2430:21:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2460:27:22", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2480:6:22" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2474:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "2474:13:22" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "2464:6:22", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2507:9:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2518:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2503:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2503:18:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2523:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2496:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2496:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2496:34:22" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2539:10:22", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2548:1:22", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "2543:1:22", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2608:90:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2637:9:22" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2648:1:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2633:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2633:17:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2652:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2629:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2629:26:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2671:6:22" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2679:1:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2667:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2667:14:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2683:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2663:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2663:23:22" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2657:5:22" - }, - "nodeType": "YulFunctionCall", - "src": "2657:30:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2622:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2622:66:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2622:66:22" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2569:1:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2572:6:22" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2566:2:22" - }, - "nodeType": "YulFunctionCall", - "src": "2566:13:22" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "2580:19:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2582:15:22", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2591:1:22" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2594:2:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2587:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2587:10:22" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2582:1:22" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "2562:3:22", - "statements": [] - }, - "src": "2558:140:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2722:9:22" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2733:6:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2718:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2718:22:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2742:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2714:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2714:31:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2747:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2707:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "2707:42:22" - }, - "nodeType": "YulExpressionStatement", - "src": "2707:42:22" - }, - { - "nodeType": "YulAssignment", - "src": "2758:121:22", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2774:9:22" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2793:6:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2801:2:22", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2789:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2789:15:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2806:66:22", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2785:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2785:88:22" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2770:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2770:104:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2876:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2766:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "2766:113:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2758:4:22" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2368:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2379:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2390:4:22", - "type": "" - } - ], - "src": "2280:605:22" - } - ] - }, - "contents": "{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value0 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n }\n}", - "id": 22, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "6080604052600436106100295760003560e01c806301ffc9a71461002e57806390042baf14610063575b600080fd5b34801561003a57600080fd5b5061004e610049366004610225565b61009b565b60405190151581526020015b60405180910390f35b61007661007136600461029d565b610136565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161005a565b60007f6ffbd451000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316016100ee57506001919050565b507fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b600033301461017e576040517fe12588940000000000000000000000000000000000000000000000000000000081523360048201523060248201526044015b60405180910390fd5b81516020830134f0905073ffffffffffffffffffffffffffffffffffffffff81166101d757816040517f0d257191000000000000000000000000000000000000000000000000000000008152600401610175919061036c565b60405173ffffffffffffffffffffffffffffffffffffffff821681527fa506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c9060200160405180910390a1919050565b60006020828403121561023757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026757600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156102af57600080fd5b813567ffffffffffffffff808211156102c757600080fd5b818401915084601f8301126102db57600080fd5b8135818111156102ed576102ed61026e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156103335761033361026e565b8160405282815287602084870101111561034c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b818110156103995785810183015185820160400152820161037d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fea264697066735822122001c76a69e8b3fef98970ac002bb7976078d0e17b12897e7965b9442691a3a58464736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0x90042BAF EQ PUSH2 0x63 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x225 JUMP JUMPDEST PUSH2 0x9B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x76 PUSH2 0x71 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5A JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6FFBD45100000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND ADD PUSH2 0xEE JUMPI POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0x17E JUMPI PUSH1 0x40 MLOAD PUSH32 0xE125889400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD CALLVALUE CREATE SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1D7 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0xD25719100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x175 SWAP2 SWAP1 PUSH2 0x36C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0xA506AD4E7F05ECEBA62A023C3219E5BD98A615F4FA87E2AFB08A2DA5CF62BF0C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2ED JUMPI PUSH2 0x2ED PUSH2 0x26E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x333 JUMPI PUSH2 0x333 PUSH2 0x26E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x399 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x37D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD 0xC7 PUSH11 0x69E8B3FEF98970AC002BB7 SWAP8 PUSH1 0x78 0xD0 0xE1 PUSH28 0x12897E7965B9442691A3A58464736F6C634300081200330000000000 ", - "sourceMap": "169:1008:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;942:233;;;;;;;;;;-1:-1:-1;942:233:4;;;;;:::i;:::-;;:::i;:::-;;;516:14:22;;509:22;491:41;;479:2;464:18;942:233:4;;;;;;;;456:276;;;;;;:::i;:::-;;:::i;:::-;;;1893:42:22;1881:55;;;1863:74;;1851:2;1836:18;456:276:4;1717:226:22;942:233:4;1028:4;1044:48;;;;;1040:80;;-1:-1:-1;1109:4:4;;942:233;-1:-1:-1;942:233:4:o;1040:80::-;-1:-1:-1;709:47:5;;725:31;709:47;;942:233:4:o;456:276::-;550:12;178:10:8;200:4;178:27;174:94;;222:39;;;;;235:10;222:39;;;2183:34:22;255:4:8;2233:18:22;;;2226:43;2095:18;;222:39:8;;;;;;;;174:94;631:5:4::1;625:12;620:2;613:5;609:14;596:11;589:49;581:57:::0;-1:-1:-1;649:18:4::1;::::0;::::1;645:50;;689:5;676:19;;;;;;;;;;;:::i;645:50::-;706:21;::::0;1893:42:22;1881:55;;1863:74;;706:21:4::1;::::0;1851:2:22;1836:18;706:21:4::1;;;;;;;456:276:::0;;;:::o;14:332:22:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:22:o;543:184::-;595:77;592:1;585:88;692:4;689:1;682:15;716:4;713:1;706:15;732:980;800:6;853:2;841:9;832:7;828:23;824:32;821:52;;;869:1;866;859:12;821:52;909:9;896:23;938:18;979:2;971:6;968:14;965:34;;;995:1;992;985:12;965:34;1033:6;1022:9;1018:22;1008:32;;1078:7;1071:4;1067:2;1063:13;1059:27;1049:55;;1100:1;1097;1090:12;1049:55;1136:2;1123:16;1158:2;1154;1151:10;1148:36;;;1164:18;;:::i;:::-;1298:2;1292:9;1360:4;1352:13;;1203:66;1348:22;;;1372:2;1344:31;1340:40;1328:53;;;1396:18;;;1416:22;;;1393:46;1390:72;;;1442:18;;:::i;:::-;1482:10;1478:2;1471:22;1517:2;1509:6;1502:18;1557:7;1552:2;1547;1543;1539:11;1535:20;1532:33;1529:53;;;1578:1;1575;1568:12;1529:53;1634:2;1629;1625;1621:11;1616:2;1608:6;1604:15;1591:46;1679:1;1657:15;;;1674:2;1653:24;1646:35;;;;-1:-1:-1;1661:6:22;732:980;-1:-1:-1;;;;;732:980:22:o;2280:605::-;2390:4;2419:2;2448;2437:9;2430:21;2480:6;2474:13;2523:6;2518:2;2507:9;2503:18;2496:34;2548:1;2558:140;2572:6;2569:1;2566:13;2558:140;;;2667:14;;;2663:23;;2657:30;2633:17;;;2652:2;2629:26;2622:66;2587:10;;2558:140;;;2562:3;2747:1;2742:2;2733:6;2722:9;2718:22;2714:31;2707:42;2876:2;2806:66;2801:2;2793:6;2789:15;2785:88;2774:9;2770:104;2766:113;2758:121;;;;2280:605;;;;:::o" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "207600", - "executionCost": "251", - "totalCost": "207851" - }, - "external": { - "createContract(bytes)": "infinite", - "supportsInterface(bytes4)": "334" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "80" - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 169, - "end": 1177, - "name": "MSTORE", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "CALLVALUE", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "DUP1", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "ISZERO", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH [tag]", - "source": 4, - "value": "1" - }, - { - "begin": 169, - "end": 1177, - "name": "JUMPI", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 169, - "end": 1177, - "name": "DUP1", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "REVERT", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "tag", - "source": 4, - "value": "1" - }, - { - "begin": 169, - "end": 1177, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "POP", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH #[$]", - "source": 4, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 169, - "end": 1177, - "name": "DUP1", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH [$]", - "source": 4, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 169, - "end": 1177, - "name": "CODECOPY", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 169, - "end": 1177, - "name": "RETURN", - "source": 4 - } - ], - ".data": { - "0": { - ".auxdata": "a264697066735822122001c76a69e8b3fef98970ac002bb7976078d0e17b12897e7965b9442691a3a58464736f6c63430008120033", - ".code": [ - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "80" - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 169, - "end": 1177, - "name": "MSTORE", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "4" - }, - { - "begin": 169, - "end": 1177, - "name": "CALLDATASIZE", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "LT", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH [tag]", - "source": 4, - "value": "1" - }, - { - "begin": 169, - "end": 1177, - "name": "JUMPI", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 169, - "end": 1177, - "name": "CALLDATALOAD", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "E0" - }, - { - "begin": 169, - "end": 1177, - "name": "SHR", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "DUP1", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "1FFC9A7" - }, - { - "begin": 169, - "end": 1177, - "name": "EQ", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH [tag]", - "source": 4, - "value": "2" - }, - { - "begin": 169, - "end": 1177, - "name": "JUMPI", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "DUP1", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "90042BAF" - }, - { - "begin": 169, - "end": 1177, - "name": "EQ", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH [tag]", - "source": 4, - "value": "3" - }, - { - "begin": 169, - "end": 1177, - "name": "JUMPI", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "tag", - "source": 4, - "value": "1" - }, - { - "begin": 169, - "end": 1177, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 169, - "end": 1177, - "name": "DUP1", - "source": 4 - }, - { - "begin": 169, - "end": 1177, - "name": "REVERT", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "tag", - "source": 4, - "value": "2" - }, - { - "begin": 942, - "end": 1175, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "CALLVALUE", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "DUP1", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "ISZERO", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH [tag]", - "source": 4, - "value": "4" - }, - { - "begin": 942, - "end": 1175, - "name": "JUMPI", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 942, - "end": 1175, - "name": "DUP1", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "REVERT", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "tag", - "source": 4, - "value": "4" - }, - { - "begin": 942, - "end": 1175, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH [tag]", - "source": 4, - "value": "5" - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH [tag]", - "source": 4, - "value": "6" - }, - { - "begin": 942, - "end": 1175, - "name": "CALLDATASIZE", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH", - "source": 4, - "value": "4" - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH [tag]", - "source": 4, - "value": "7" - }, - { - "begin": 942, - "end": 1175, - "jumpType": "[in]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "tag", - "source": 4, - "value": "6" - }, - { - "begin": 942, - "end": 1175, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH [tag]", - "source": 4, - "value": "8" - }, - { - "begin": 942, - "end": 1175, - "jumpType": "[in]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "tag", - "source": 4, - "value": "5" - }, - { - "begin": 942, - "end": 1175, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 942, - "end": 1175, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 516, - "end": 530, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 516, - "end": 530, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 509, - "end": 531, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 491, - "end": 532, - "name": "DUP2", - "source": 22 - }, - { - "begin": 491, - "end": 532, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 479, - "end": 481, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 464, - "end": 482, - "name": "ADD", - "source": 22 - }, - { - "begin": 942, - "end": 1175, - "name": "tag", - "source": 4, - "value": "9" - }, - { - "begin": 942, - "end": 1175, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 942, - "end": 1175, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "DUP1", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "SUB", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "RETURN", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "tag", - "source": 4, - "value": "3" - }, - { - "begin": 456, - "end": 732, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "11" - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "12" - }, - { - "begin": 456, - "end": 732, - "name": "CALLDATASIZE", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH", - "source": 4, - "value": "4" - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "13" - }, - { - "begin": 456, - "end": 732, - "jumpType": "[in]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "tag", - "source": 4, - "value": "12" - }, - { - "begin": 456, - "end": 732, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "14" - }, - { - "begin": 456, - "end": 732, - "jumpType": "[in]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "tag", - "source": 4, - "value": "11" - }, - { - "begin": 456, - "end": 732, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 456, - "end": 732, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 1893, - "end": 1935, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1881, - "end": 1936, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 1881, - "end": 1936, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 1881, - "end": 1936, - "name": "AND", - "source": 22 - }, - { - "begin": 1863, - "end": 1937, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1863, - "end": 1937, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 1851, - "end": 1853, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 1836, - "end": 1854, - "name": "ADD", - "source": 22 - }, - { - "begin": 456, - "end": 732, - "name": "PUSH [tag]", - "source": 4, - "value": "9" - }, - { - "begin": 1717, - "end": 1943, - "name": "JUMP", - "source": 22 - }, - { - "begin": 942, - "end": 1175, - "name": "tag", - "source": 4, - "value": "8" - }, - { - "begin": 942, - "end": 1175, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 1028, - "end": 1032, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 1044, - "end": 1092, - "name": "PUSH", - "source": 4, - "value": "6FFBD45100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1044, - "end": 1092, - "name": "PUSH", - "source": 4, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1044, - "end": 1092, - "name": "DUP4", - "source": 4 - }, - { - "begin": 1044, - "end": 1092, - "name": "AND", - "source": 4 - }, - { - "begin": 1044, - "end": 1092, - "name": "ADD", - "source": 4 - }, - { - "begin": 1040, - "end": 1120, - "name": "PUSH [tag]", - "source": 4, - "value": "18" - }, - { - "begin": 1040, - "end": 1120, - "name": "JUMPI", - "source": 4 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1109, - "end": 1113, - "name": "PUSH", - "source": 4, - "value": "1" - }, - { - "begin": 1109, - "end": 1113, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 942, - "end": 1175, - "name": "SWAP1", - "source": 4 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 942, - "end": 1175, - "jumpType": "[out]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 1040, - "end": 1120, - "name": "tag", - "source": 4, - "value": "18" - }, - { - "begin": 1040, - "end": 1120, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 709, - "end": 756, - "name": "PUSH", - "source": 5, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 709, - "end": 756, - "name": "AND", - "source": 5 - }, - { - "begin": 725, - "end": 756, - "name": "PUSH", - "source": 5, - "value": "1FFC9A700000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 709, - "end": 756, - "name": "EQ", - "source": 5 - }, - { - "begin": 709, - "end": 756, - "name": "SWAP1", - "source": 5 - }, - { - "begin": 942, - "end": 1175, - "jumpType": "[out]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "tag", - "source": 4, - "value": "14" - }, - { - "begin": 456, - "end": 732, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 550, - "end": 562, - "name": "PUSH", - "source": 4, - "value": "0" - }, - { - "begin": 178, - "end": 188, - "name": "CALLER", - "source": 8 - }, - { - "begin": 200, - "end": 204, - "name": "ADDRESS", - "source": 8 - }, - { - "begin": 178, - "end": 205, - "name": "EQ", - "source": 8 - }, - { - "begin": 174, - "end": 268, - "name": "PUSH [tag]", - "source": 8, - "value": "22" - }, - { - "begin": 174, - "end": 268, - "name": "JUMPI", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "40" - }, - { - "begin": 222, - "end": 261, - "name": "MLOAD", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "E125889400000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 222, - "end": 261, - "name": "DUP2", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "MSTORE", - "source": 8 - }, - { - "begin": 235, - "end": 245, - "name": "CALLER", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "4" - }, - { - "begin": 222, - "end": 261, - "name": "DUP3", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "ADD", - "source": 8 - }, - { - "begin": 2183, - "end": 2217, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 255, - "end": 259, - "name": "ADDRESS", - "source": 8 - }, - { - "begin": 2233, - "end": 2251, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 2233, - "end": 2251, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2233, - "end": 2251, - "name": "ADD", - "source": 22 - }, - { - "begin": 2226, - "end": 2269, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2095, - "end": 2113, - "name": "PUSH", - "source": 22, - "value": "44" - }, - { - "begin": 2095, - "end": 2113, - "name": "ADD", - "source": 22 - }, - { - "begin": 222, - "end": 261, - "name": "tag", - "source": 8, - "value": "23" - }, - { - "begin": 222, - "end": 261, - "name": "JUMPDEST", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "PUSH", - "source": 8, - "value": "40" - }, - { - "begin": 222, - "end": 261, - "name": "MLOAD", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "DUP1", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "SWAP2", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "SUB", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "SWAP1", - "source": 8 - }, - { - "begin": 222, - "end": 261, - "name": "REVERT", - "source": 8 - }, - { - "begin": 174, - "end": 268, - "name": "tag", - "source": 8, - "value": "22" - }, - { - "begin": 174, - "end": 268, - "name": "JUMPDEST", - "source": 8 - }, - { - "begin": 631, - "end": 636, - "modifierDepth": 1, - "name": "DUP2", - "source": 4 - }, - { - "begin": 625, - "end": 637, - "modifierDepth": 1, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 620, - "end": 622, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "20" - }, - { - "begin": 613, - "end": 618, - "modifierDepth": 1, - "name": "DUP4", - "source": 4 - }, - { - "begin": 609, - "end": 623, - "modifierDepth": 1, - "name": "ADD", - "source": 4 - }, - { - "begin": 596, - "end": 607, - "modifierDepth": 1, - "name": "CALLVALUE", - "source": 4 - }, - { - "begin": 589, - "end": 638, - "modifierDepth": 1, - "name": "CREATE", - "source": 4 - }, - { - "begin": 581, - "end": 638, - "name": "SWAP1", - "source": 4 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 649, - "end": 667, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 649, - "end": 667, - "name": "DUP2", - "source": 4 - }, - { - "begin": 649, - "end": 667, - "modifierDepth": 1, - "name": "AND", - "source": 4 - }, - { - "begin": 645, - "end": 695, - "modifierDepth": 1, - "name": "PUSH [tag]", - "source": 4, - "value": "26" - }, - { - "begin": 645, - "end": 695, - "modifierDepth": 1, - "name": "JUMPI", - "source": 4 - }, - { - "begin": 689, - "end": 694, - "modifierDepth": 1, - "name": "DUP2", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "D25719100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "DUP2", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "MSTORE", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "4" - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "ADD", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH [tag]", - "source": 4, - "value": "23" - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 676, - "end": 695, - "modifierDepth": 1, - "name": "PUSH [tag]", - "source": 4, - "value": "28" - }, - { - "begin": 676, - "end": 695, - "jumpType": "[in]", - "modifierDepth": 1, - "name": "JUMP", - "source": 4 - }, - { - "begin": 645, - "end": 695, - "modifierDepth": 1, - "name": "tag", - "source": 4, - "value": "26" - }, - { - "begin": 645, - "end": 695, - "modifierDepth": 1, - "name": "JUMPDEST", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 706, - "end": 727, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 1893, - "end": 1935, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1881, - "end": 1936, - "name": "DUP3", - "source": 22 - }, - { - "begin": 1881, - "end": 1936, - "name": "AND", - "source": 22 - }, - { - "begin": 1863, - "end": 1937, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1863, - "end": 1937, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "A506AD4E7F05ECEBA62A023C3219E5BD98A615F4FA87E2AFB08A2DA5CF62BF0C" - }, - { - "begin": 706, - "end": 727, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 1851, - "end": 1853, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 1836, - "end": 1854, - "name": "ADD", - "source": 22 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "PUSH", - "source": 4, - "value": "40" - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "MLOAD", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "DUP1", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "SUB", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 706, - "end": 727, - "modifierDepth": 1, - "name": "LOG1", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "SWAP2", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "SWAP1", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "name": "POP", - "source": 4 - }, - { - "begin": 456, - "end": 732, - "jumpType": "[out]", - "name": "JUMP", - "source": 4 - }, - { - "begin": 14, - "end": 346, - "name": "tag", - "source": 22, - "value": "7" - }, - { - "begin": 14, - "end": 346, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 72, - "end": 78, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 125, - "end": 127, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 113, - "end": 122, - "name": "DUP3", - "source": 22 - }, - { - "begin": 104, - "end": 111, - "name": "DUP5", - "source": 22 - }, - { - "begin": 100, - "end": 123, - "name": "SUB", - "source": 22 - }, - { - "begin": 96, - "end": 128, - "name": "SLT", - "source": 22 - }, - { - "begin": 93, - "end": 145, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 93, - "end": 145, - "name": "PUSH [tag]", - "source": 22, - "value": "34" - }, - { - "begin": 93, - "end": 145, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 141, - "end": 142, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 138, - "end": 139, - "name": "DUP1", - "source": 22 - }, - { - "begin": 131, - "end": 143, - "name": "REVERT", - "source": 22 - }, - { - "begin": 93, - "end": 145, - "name": "tag", - "source": 22, - "value": "34" - }, - { - "begin": 93, - "end": 145, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 180, - "end": 189, - "name": "DUP2", - "source": 22 - }, - { - "begin": 167, - "end": 190, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 230, - "end": 296, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFF00000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 223, - "end": 228, - "name": "DUP2", - "source": 22 - }, - { - "begin": 219, - "end": 297, - "name": "AND", - "source": 22 - }, - { - "begin": 212, - "end": 217, - "name": "DUP2", - "source": 22 - }, - { - "begin": 209, - "end": 298, - "name": "EQ", - "source": 22 - }, - { - "begin": 199, - "end": 316, - "name": "PUSH [tag]", - "source": 22, - "value": "35" - }, - { - "begin": 199, - "end": 316, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 312, - "end": 313, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 309, - "end": 310, - "name": "DUP1", - "source": 22 - }, - { - "begin": 302, - "end": 314, - "name": "REVERT", - "source": 22 - }, - { - "begin": 199, - "end": 316, - "name": "tag", - "source": 22, - "value": "35" - }, - { - "begin": 199, - "end": 316, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 335, - "end": 340, - "name": "SWAP4", - "source": 22 - }, - { - "begin": 14, - "end": 346, - "name": "SWAP3", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 14, - "end": 346, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 543, - "end": 727, - "name": "tag", - "source": 22, - "value": "31" - }, - { - "begin": 543, - "end": 727, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 595, - "end": 672, - "name": "PUSH", - "source": 22, - "value": "4E487B7100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 592, - "end": 593, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 585, - "end": 673, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 692, - "end": 696, - "name": "PUSH", - "source": 22, - "value": "41" - }, - { - "begin": 689, - "end": 690, - "name": "PUSH", - "source": 22, - "value": "4" - }, - { - "begin": 682, - "end": 697, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 716, - "end": 720, - "name": "PUSH", - "source": 22, - "value": "24" - }, - { - "begin": 713, - "end": 714, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 706, - "end": 721, - "name": "REVERT", - "source": 22 - }, - { - "begin": 732, - "end": 1712, - "name": "tag", - "source": 22, - "value": "13" - }, - { - "begin": 732, - "end": 1712, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 800, - "end": 806, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 853, - "end": 855, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 841, - "end": 850, - "name": "DUP3", - "source": 22 - }, - { - "begin": 832, - "end": 839, - "name": "DUP5", - "source": 22 - }, - { - "begin": 828, - "end": 851, - "name": "SUB", - "source": 22 - }, - { - "begin": 824, - "end": 856, - "name": "SLT", - "source": 22 - }, - { - "begin": 821, - "end": 873, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 821, - "end": 873, - "name": "PUSH [tag]", - "source": 22, - "value": "39" - }, - { - "begin": 821, - "end": 873, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 869, - "end": 870, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 866, - "end": 867, - "name": "DUP1", - "source": 22 - }, - { - "begin": 859, - "end": 871, - "name": "REVERT", - "source": 22 - }, - { - "begin": 821, - "end": 873, - "name": "tag", - "source": 22, - "value": "39" - }, - { - "begin": 821, - "end": 873, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 909, - "end": 918, - "name": "DUP2", - "source": 22 - }, - { - "begin": 896, - "end": 919, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 938, - "end": 956, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFF" - }, - { - "begin": 979, - "end": 981, - "name": "DUP1", - "source": 22 - }, - { - "begin": 971, - "end": 977, - "name": "DUP3", - "source": 22 - }, - { - "begin": 968, - "end": 982, - "name": "GT", - "source": 22 - }, - { - "begin": 965, - "end": 999, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 965, - "end": 999, - "name": "PUSH [tag]", - "source": 22, - "value": "40" - }, - { - "begin": 965, - "end": 999, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 995, - "end": 996, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 992, - "end": 993, - "name": "DUP1", - "source": 22 - }, - { - "begin": 985, - "end": 997, - "name": "REVERT", - "source": 22 - }, - { - "begin": 965, - "end": 999, - "name": "tag", - "source": 22, - "value": "40" - }, - { - "begin": 965, - "end": 999, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1033, - "end": 1039, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1022, - "end": 1031, - "name": "DUP5", - "source": 22 - }, - { - "begin": 1018, - "end": 1040, - "name": "ADD", - "source": 22 - }, - { - "begin": 1008, - "end": 1040, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 1008, - "end": 1040, - "name": "POP", - "source": 22 - }, - { - "begin": 1078, - "end": 1085, - "name": "DUP5", - "source": 22 - }, - { - "begin": 1071, - "end": 1075, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 1067, - "end": 1069, - "name": "DUP4", - "source": 22 - }, - { - "begin": 1063, - "end": 1076, - "name": "ADD", - "source": 22 - }, - { - "begin": 1059, - "end": 1086, - "name": "SLT", - "source": 22 - }, - { - "begin": 1049, - "end": 1104, - "name": "PUSH [tag]", - "source": 22, - "value": "41" - }, - { - "begin": 1049, - "end": 1104, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 1100, - "end": 1101, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1097, - "end": 1098, - "name": "DUP1", - "source": 22 - }, - { - "begin": 1090, - "end": 1102, - "name": "REVERT", - "source": 22 - }, - { - "begin": 1049, - "end": 1104, - "name": "tag", - "source": 22, - "value": "41" - }, - { - "begin": 1049, - "end": 1104, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1136, - "end": 1138, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1123, - "end": 1139, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 1158, - "end": 1160, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1154, - "end": 1156, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1151, - "end": 1161, - "name": "GT", - "source": 22 - }, - { - "begin": 1148, - "end": 1184, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 1148, - "end": 1184, - "name": "PUSH [tag]", - "source": 22, - "value": "43" - }, - { - "begin": 1148, - "end": 1184, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 1164, - "end": 1182, - "name": "PUSH [tag]", - "source": 22, - "value": "43" - }, - { - "begin": 1164, - "end": 1182, - "name": "PUSH [tag]", - "source": 22, - "value": "31" - }, - { - "begin": 1164, - "end": 1182, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 1164, - "end": 1182, - "name": "tag", - "source": 22, - "value": "43" - }, - { - "begin": 1164, - "end": 1182, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1298, - "end": 1300, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 1292, - "end": 1301, - "name": "MLOAD", - "source": 22 - }, - { - "begin": 1360, - "end": 1364, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 1352, - "end": 1365, - "name": "DUP3", - "source": 22 - }, - { - "begin": 1352, - "end": 1365, - "name": "ADD", - "source": 22 - }, - { - "begin": 1203, - "end": 1269, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 1348, - "end": 1370, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 1348, - "end": 1370, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1348, - "end": 1370, - "name": "AND", - "source": 22 - }, - { - "begin": 1372, - "end": 1374, - "name": "PUSH", - "source": 22, - "value": "3F" - }, - { - "begin": 1344, - "end": 1375, - "name": "ADD", - "source": 22 - }, - { - "begin": 1340, - "end": 1380, - "name": "AND", - "source": 22 - }, - { - "begin": 1328, - "end": 1381, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1328, - "end": 1381, - "name": "ADD", - "source": 22 - }, - { - "begin": 1328, - "end": 1381, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 1396, - "end": 1414, - "name": "DUP4", - "source": 22 - }, - { - "begin": 1396, - "end": 1414, - "name": "DUP3", - "source": 22 - }, - { - "begin": 1396, - "end": 1414, - "name": "GT", - "source": 22 - }, - { - "begin": 1416, - "end": 1438, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1416, - "end": 1438, - "name": "DUP4", - "source": 22 - }, - { - "begin": 1416, - "end": 1438, - "name": "LT", - "source": 22 - }, - { - "begin": 1393, - "end": 1439, - "name": "OR", - "source": 22 - }, - { - "begin": 1390, - "end": 1462, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 1390, - "end": 1462, - "name": "PUSH [tag]", - "source": 22, - "value": "45" - }, - { - "begin": 1390, - "end": 1462, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 1442, - "end": 1460, - "name": "PUSH [tag]", - "source": 22, - "value": "45" - }, - { - "begin": 1442, - "end": 1460, - "name": "PUSH [tag]", - "source": 22, - "value": "31" - }, - { - "begin": 1442, - "end": 1460, - "jumpType": "[in]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 1442, - "end": 1460, - "name": "tag", - "source": 22, - "value": "45" - }, - { - "begin": 1442, - "end": 1460, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1482, - "end": 1492, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1478, - "end": 1480, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 1471, - "end": 1493, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 1517, - "end": 1519, - "name": "DUP3", - "source": 22 - }, - { - "begin": 1509, - "end": 1515, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1502, - "end": 1520, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 1557, - "end": 1564, - "name": "DUP8", - "source": 22 - }, - { - "begin": 1552, - "end": 1554, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 1547, - "end": 1549, - "name": "DUP5", - "source": 22 - }, - { - "begin": 1543, - "end": 1545, - "name": "DUP8", - "source": 22 - }, - { - "begin": 1539, - "end": 1550, - "name": "ADD", - "source": 22 - }, - { - "begin": 1535, - "end": 1555, - "name": "ADD", - "source": 22 - }, - { - "begin": 1532, - "end": 1565, - "name": "GT", - "source": 22 - }, - { - "begin": 1529, - "end": 1582, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 1529, - "end": 1582, - "name": "PUSH [tag]", - "source": 22, - "value": "46" - }, - { - "begin": 1529, - "end": 1582, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 1578, - "end": 1579, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1575, - "end": 1576, - "name": "DUP1", - "source": 22 - }, - { - "begin": 1568, - "end": 1580, - "name": "REVERT", - "source": 22 - }, - { - "begin": 1529, - "end": 1582, - "name": "tag", - "source": 22, - "value": "46" - }, - { - "begin": 1529, - "end": 1582, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 1634, - "end": 1636, - "name": "DUP3", - "source": 22 - }, - { - "begin": 1629, - "end": 1631, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 1625, - "end": 1627, - "name": "DUP7", - "source": 22 - }, - { - "begin": 1621, - "end": 1632, - "name": "ADD", - "source": 22 - }, - { - "begin": 1616, - "end": 1618, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 1608, - "end": 1614, - "name": "DUP4", - "source": 22 - }, - { - "begin": 1604, - "end": 1619, - "name": "ADD", - "source": 22 - }, - { - "begin": 1591, - "end": 1637, - "name": "CALLDATACOPY", - "source": 22 - }, - { - "begin": 1679, - "end": 1680, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 1657, - "end": 1672, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 1657, - "end": 1672, - "name": "DUP2", - "source": 22 - }, - { - "begin": 1657, - "end": 1672, - "name": "ADD", - "source": 22 - }, - { - "begin": 1674, - "end": 1676, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 1653, - "end": 1677, - "name": "ADD", - "source": 22 - }, - { - "begin": 1646, - "end": 1681, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 1646, - "end": 1681, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 1646, - "end": 1681, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 1646, - "end": 1681, - "name": "MSTORE", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 1661, - "end": 1667, - "name": "SWAP6", - "source": 22 - }, - { - "begin": 732, - "end": 1712, - "name": "SWAP5", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 732, - "end": 1712, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - }, - { - "begin": 2280, - "end": 2885, - "name": "tag", - "source": 22, - "value": "28" - }, - { - "begin": 2280, - "end": 2885, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 2390, - "end": 2394, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2419, - "end": 2421, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 2448, - "end": 2450, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2437, - "end": 2446, - "name": "DUP4", - "source": 22 - }, - { - "begin": 2430, - "end": 2451, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2480, - "end": 2486, - "name": "DUP4", - "source": 22 - }, - { - "begin": 2474, - "end": 2487, - "name": "MLOAD", - "source": 22 - }, - { - "begin": 2523, - "end": 2529, - "name": "DUP1", - "source": 22 - }, - { - "begin": 2518, - "end": 2520, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2507, - "end": 2516, - "name": "DUP6", - "source": 22 - }, - { - "begin": 2503, - "end": 2521, - "name": "ADD", - "source": 22 - }, - { - "begin": 2496, - "end": 2530, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2548, - "end": 2549, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2558, - "end": 2698, - "name": "tag", - "source": 22, - "value": "50" - }, - { - "begin": 2558, - "end": 2698, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 2572, - "end": 2578, - "name": "DUP2", - "source": 22 - }, - { - "begin": 2569, - "end": 2570, - "name": "DUP2", - "source": 22 - }, - { - "begin": 2566, - "end": 2579, - "name": "LT", - "source": 22 - }, - { - "begin": 2558, - "end": 2698, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 2558, - "end": 2698, - "name": "PUSH [tag]", - "source": 22, - "value": "52" - }, - { - "begin": 2558, - "end": 2698, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 2667, - "end": 2681, - "name": "DUP6", - "source": 22 - }, - { - "begin": 2667, - "end": 2681, - "name": "DUP2", - "source": 22 - }, - { - "begin": 2667, - "end": 2681, - "name": "ADD", - "source": 22 - }, - { - "begin": 2663, - "end": 2686, - "name": "DUP4", - "source": 22 - }, - { - "begin": 2663, - "end": 2686, - "name": "ADD", - "source": 22 - }, - { - "begin": 2657, - "end": 2687, - "name": "MLOAD", - "source": 22 - }, - { - "begin": 2633, - "end": 2650, - "name": "DUP6", - "source": 22 - }, - { - "begin": 2633, - "end": 2650, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2633, - "end": 2650, - "name": "ADD", - "source": 22 - }, - { - "begin": 2652, - "end": 2654, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 2629, - "end": 2655, - "name": "ADD", - "source": 22 - }, - { - "begin": 2622, - "end": 2688, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2587, - "end": 2597, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2587, - "end": 2597, - "name": "ADD", - "source": 22 - }, - { - "begin": 2558, - "end": 2698, - "name": "PUSH [tag]", - "source": 22, - "value": "50" - }, - { - "begin": 2558, - "end": 2698, - "name": "JUMP", - "source": 22 - }, - { - "begin": 2558, - "end": 2698, - "name": "tag", - "source": 22, - "value": "52" - }, - { - "begin": 2558, - "end": 2698, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 2562, - "end": 2565, - "name": "POP", - "source": 22 - }, - { - "begin": 2747, - "end": 2748, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 2742, - "end": 2744, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 2733, - "end": 2739, - "name": "DUP3", - "source": 22 - }, - { - "begin": 2722, - "end": 2731, - "name": "DUP7", - "source": 22 - }, - { - "begin": 2718, - "end": 2740, - "name": "ADD", - "source": 22 - }, - { - "begin": 2714, - "end": 2745, - "name": "ADD", - "source": 22 - }, - { - "begin": 2707, - "end": 2749, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 2876, - "end": 2878, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 2806, - "end": 2872, - "name": "PUSH", - "source": 22, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 2801, - "end": 2803, - "name": "PUSH", - "source": 22, - "value": "1F" - }, - { - "begin": 2793, - "end": 2799, - "name": "DUP4", - "source": 22 - }, - { - "begin": 2789, - "end": 2804, - "name": "ADD", - "source": 22 - }, - { - "begin": 2785, - "end": 2873, - "name": "AND", - "source": 22 - }, - { - "begin": 2774, - "end": 2783, - "name": "DUP6", - "source": 22 - }, - { - "begin": 2770, - "end": 2874, - "name": "ADD", - "source": 22 - }, - { - "begin": 2766, - "end": 2879, - "name": "ADD", - "source": 22 - }, - { - "begin": 2758, - "end": 2879, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 2758, - "end": 2879, - "name": "POP", - "source": 22 - }, - { - "begin": 2758, - "end": 2879, - "name": "POP", - "source": 22 - }, - { - "begin": 2758, - "end": 2879, - "name": "POP", - "source": 22 - }, - { - "begin": 2280, - "end": 2885, - "name": "SWAP3", - "source": 22 - }, - { - "begin": 2280, - "end": 2885, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 2280, - "end": 2885, - "name": "POP", - "source": 22 - }, - { - "begin": 2280, - "end": 2885, - "name": "POP", - "source": 22 - }, - { - "begin": 2280, - "end": 2885, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": { - "createContract(bytes)": "90042baf", - "supportsInterface(bytes4)": "01ffc9a7" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"CreateFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_self\",\"type\":\"address\"}],\"name\":\"OnlySelfAuth\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"}],\"name\":\"CreatedContract\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"createContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createContract(bytes)\":{\"params\":{\"_code\":\"Creation code of the contract\"},\"returns\":{\"addr\":\"The address of the created contract\"}},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `_interfaceID`\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createContract(bytes)\":{\"notice\":\"Creates a contract forwarding eth value\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":\"ModuleCreator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol\":{\"keccak256\":\"0x16b1400988f6b7bd4d32bdcb36ee2fbd644fb2c8ca571becc0c32e03602bd303\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8bd4681fb4cff10f4e98e45618fbc52ed0a4c7d4fcf614f34a587ad20cd16855\",\"dweb:/ipfs/QmbA2LYBH1x8WX8CaeiFYMU5rjyLGgNCF32r9fQbXuoqwJ\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":{\"keccak256\":\"0xd4ae13a3d20fd7ab52ad16af6a06e7244daea450b796251e911091cac104d05f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8de37ec20a6b649e9fe3fb42276e4660ff546bca8b467f72beb35396ab5e62d6\",\"dweb:/ipfs/QmXT2SxBZKitkbKLbGbbNLhUbw2ataRpQ2DHafvhG953RE\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":{\"keccak256\":\"0x91545de5c77cfac86c5686c4e1f338a18ee7adb689ac0234848d7a7fc8a560db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://dc89d05d8099ba4c3c2cf85737796d439899b5a04e6b87b1ea43f687ae08848a\",\"dweb:/ipfs/QmatU8gRvFkK3Yn1MYAekzi48Waw3cDLtXJpduvju9HFUu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol\":{\"keccak256\":\"0xa206dd3d424b8cd1c4f1400aa344cbc974480fea02f0fb371b872558e5ff4e6d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea14c75f43a0008c582dcbae3ba3c900e446e28039dfdbb059d326ec5cc6a2d2\",\"dweb:/ipfs/QmRfF6BmUWiFkCgzVFbLcHsUCNz5q2XkkcwXPX57ViTK4D\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "createContract(bytes)": { - "notice": "Creates a contract forwarding eth value" - }, - "supportsInterface(bytes4)": { - "notice": "Query if a contract implements an interface" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol": { - "ModuleERC165": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes4", - "name": "_interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "supportsInterface(bytes4)": { - "details": "Adding new hooks will not lead to them being reported by this function without upgrading the wallet. In addition, developers must ensure that all inherited contracts by the main module don't conflict and are accounted to be supported by the supportsInterface method.", - "params": { - "_interfaceID": "The interface identifier, as specified in ERC-165" - }, - "returns": { - "_0": "`true` if the contract implements `_interfaceID`" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": "", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "gasEstimates": null, - "legacyAssembly": null, - "methodIdentifiers": { - "supportsInterface(bytes4)": "01ffc9a7" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Adding new hooks will not lead to them being reported by this function without upgrading the wallet. In addition, developers must ensure that all inherited contracts by the main module don't conflict and are accounted to be supported by the supportsInterface method.\",\"params\":{\"_interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `_interfaceID`\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":\"ModuleERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol\":{\"keccak256\":\"0xd4ae13a3d20fd7ab52ad16af6a06e7244daea450b796251e911091cac104d05f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8de37ec20a6b649e9fe3fb42276e4660ff546bca8b467f72beb35396ab5e62d6\",\"dweb:/ipfs/QmXT2SxBZKitkbKLbGbbNLhUbw2ataRpQ2DHafvhG953RE\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "supportsInterface(bytes4)": { - "notice": "Query if a contract implements an interface" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol": { - "ModuleNonce": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_provided", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - } - ], - "name": "BadNonce", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_space", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_newNonce", - "type": "uint256" - } - ], - "name": "NonceChange", - "type": "event" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_space", - "type": "uint256" - } - ], - "name": "readNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "nonce()": { - "details": "The default nonce space is 0x00", - "returns": { - "_0": "The next nonce" - } - }, - "readNonce(uint256)": { - "params": { - "_space": "Nonce space, each space keeps an independent nonce count" - }, - "returns": { - "_0": "The next nonce" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":145:2076 contract ModuleNonce {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":145:2076 contract ModuleNonce {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x8c3f5563\n eq\n tag_3\n jumpi\n dup1\n 0xaffed0e0\n eq\n tag_4\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":938:1094 function readNonce(uint256 _space) public virtual view returns (uint256) {... */\n tag_3:\n tag_5\n tag_6\n calldatasize\n 0x04\n tag_7\n jump\t// in\n tag_6:\n tag_8\n jump\t// in\n tag_5:\n mload(0x40)\n /* \"#utility.yul\":345:370 */\n swap1\n dup2\n mstore\n /* \"#utility.yul\":333:335 */\n 0x20\n /* \"#utility.yul\":318:336 */\n add\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":938:1094 function readNonce(uint256 _space) public virtual view returns (uint256) {... */\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":670:757 function nonce() external virtual view returns (uint256) {... */\n tag_4:\n tag_5\n tag_12\n jump\t// in\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":938:1094 function readNonce(uint256 _space) public virtual view returns (uint256) {... */\n tag_8:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1002:1009 uint256 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1032:1088 ModuleStorage.readBytes32Map(NONCE_KEY, bytes32(_space)) */\n tag_15\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":453:519 0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e */\n 0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1080:1086 _space */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1032:1060 ModuleStorage.readBytes32Map */\n tag_16\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1032:1088 ModuleStorage.readBytes32Map(NONCE_KEY, bytes32(_space)) */\n jump\t// in\n tag_15:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":1024:1089 uint256(ModuleStorage.readBytes32Map(NONCE_KEY, bytes32(_space))) */\n swap3\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":938:1094 function readNonce(uint256 _space) public virtual view returns (uint256) {... */\n swap2\n pop\n pop\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":670:757 function nonce() external virtual view returns (uint256) {... */\n tag_12:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":718:725 uint256 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":740:752 readNonce(0) */\n tag_18\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":750:751 0 */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":740:749 readNonce */\n tag_8\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":740:752 readNonce(0) */\n jump\t// in\n tag_18:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":733:752 return readNonce(0) */\n swap1\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":670:757 function nonce() external virtual view returns (uint256) {... */\n swap1\n jump\t// out\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":490:677 function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) {... */\n tag_16:\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":568:579 bytes32 val */\n 0x00\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":587:598 bytes32 key */\n dup1\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":622:626 _key */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":628:635 _subKey */\n dup4\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":611:636 abi.encode(_key, _subKey) */\n add(0x20, mload(0x40))\n tag_20\n swap3\n swap2\n swap1\n /* \"#utility.yul\":555:580 */\n swap2\n dup3\n mstore\n /* \"#utility.yul\":611:613 */\n 0x20\n /* \"#utility.yul\":596:614 */\n dup3\n add\n /* \"#utility.yul\":589:623 */\n mstore\n /* \"#utility.yul\":543:545 */\n 0x40\n /* \"#utility.yul\":528:546 */\n add\n swap1\n /* \"#utility.yul\":381:629 */\n jump\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":611:636 abi.encode(_key, _subKey) */\n tag_20:\n 0x40\n dup1\n mload\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n dup2\n dup5\n sub\n add\n dup2\n mstore\n swap2\n swap1\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":601:637 keccak256(abi.encode(_key, _subKey)) */\n dup1\n mload\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":611:636 abi.encode(_key, _subKey) */\n 0x20\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":601:637 keccak256(abi.encode(_key, _subKey)) */\n swap1\n swap2\n add\n keccak256\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":661:671 sload(key) */\n sload\n swap5\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":490:677 function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) {... */\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14:194 */\n tag_7:\n /* \"#utility.yul\":73:79 */\n 0x00\n /* \"#utility.yul\":126:128 */\n 0x20\n /* \"#utility.yul\":114:123 */\n dup3\n /* \"#utility.yul\":105:112 */\n dup5\n /* \"#utility.yul\":101:124 */\n sub\n /* \"#utility.yul\":97:129 */\n slt\n /* \"#utility.yul\":94:146 */\n iszero\n tag_24\n jumpi\n /* \"#utility.yul\":142:143 */\n 0x00\n /* \"#utility.yul\":139:140 */\n dup1\n /* \"#utility.yul\":132:144 */\n revert\n /* \"#utility.yul\":94:146 */\n tag_24:\n pop\n /* \"#utility.yul\":165:188 */\n calldataload\n swap2\n /* \"#utility.yul\":14:194 */\n swap1\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122096307c37b71eb1ad75d89220df55103f539339b39b69638a2d573cf67d84ea6164736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638c3f55631461003b578063affed0e014610060575b600080fd5b61004e610049366004610109565b610068565b60405190815260200160405180910390f35b61004e61009a565b60006100947f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e836100ab565b92915050565b60006100a66000610068565b905090565b60008083836040516020016100ca929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012054949350505050565b60006020828403121561011b57600080fd5b503591905056fea264697066735822122096307c37b71eb1ad75d89220df55103f539339b39b69638a2d573cf67d84ea6164736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C3F5563 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xAFFED0E0 EQ PUSH2 0x60 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x109 JUMP JUMPDEST PUSH2 0x68 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E PUSH2 0x9A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94 PUSH32 0x8D0BF1FD623D628C741362C1289948E57B3E2905218C676D3E69ABEE36D6AE2E DUP4 PUSH2 0xAB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA6 PUSH1 0x0 PUSH2 0x68 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCA SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 ADDRESS PUSH29 0x37B71EB1AD75D89220DF55103F539339B39B69638A2D573CF67D84EA61 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "145:1931:6:-:0;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": { - "@nonce_955": { - "entryPoint": 154, - "id": 955, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@readBytes32Map_1178": { - "entryPoint": 171, - "id": 1178, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@readNonce_976": { - "entryPoint": 104, - "id": 976, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_tuple_t_uint256": { - "entryPoint": 265, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:631:22", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:22", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "84:110:22", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "130:16:22", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "139:1:22", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "142:1:22", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "132:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "132:12:22" - }, - "nodeType": "YulExpressionStatement", - "src": "132:12:22" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "105:7:22" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "114:9:22" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "101:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "101:23:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "126:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "97:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "97:32:22" - }, - "nodeType": "YulIf", - "src": "94:52:22" - }, - { - "nodeType": "YulAssignment", - "src": "155:33:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "178:9:22" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "165:12:22" - }, - "nodeType": "YulFunctionCall", - "src": "165:23:22" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "155:6:22" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "50:9:22", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "61:7:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "73:6:22", - "type": "" - } - ], - "src": "14:180:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "300:76:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "310:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "322:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "333:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "318:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "318:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "310:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "352:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "363:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "345:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "345:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "345:25:22" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "269:9:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "280:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "291:4:22", - "type": "" - } - ], - "src": "199:177:22" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "510:119:22", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "520:26:22", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "532:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "543:2:22", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "528:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "528:18:22" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "520:4:22" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "562:9:22" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "573:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "555:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "555:25:22" - }, - "nodeType": "YulExpressionStatement", - "src": "555:25:22" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "600:9:22" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "611:2:22", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "596:3:22" - }, - "nodeType": "YulFunctionCall", - "src": "596:18:22" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "616:6:22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "589:6:22" - }, - "nodeType": "YulFunctionCall", - "src": "589:34:22" - }, - "nodeType": "YulExpressionStatement", - "src": "589:34:22" - } - ] - }, - "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "471:9:22", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "482:6:22", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "490:6:22", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "501:4:22", - "type": "" - } - ], - "src": "381:248:22" - } - ] - }, - "contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n}", - "id": 22, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80638c3f55631461003b578063affed0e014610060575b600080fd5b61004e610049366004610109565b610068565b60405190815260200160405180910390f35b61004e61009a565b60006100947f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e836100ab565b92915050565b60006100a66000610068565b905090565b60008083836040516020016100ca929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012054949350505050565b60006020828403121561011b57600080fd5b503591905056fea264697066735822122096307c37b71eb1ad75d89220df55103f539339b39b69638a2d573cf67d84ea6164736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C3F5563 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xAFFED0E0 EQ PUSH2 0x60 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x109 JUMP JUMPDEST PUSH2 0x68 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E PUSH2 0x9A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94 PUSH32 0x8D0BF1FD623D628C741362C1289948E57B3E2905218C676D3E69ABEE36D6AE2E DUP4 PUSH2 0xAB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA6 PUSH1 0x0 PUSH2 0x68 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCA SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 ADDRESS PUSH29 0x37B71EB1AD75D89220DF55103F539339B39B69638A2D573CF67D84EA61 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "145:1931:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;938:156;;;;;;:::i;:::-;;:::i;:::-;;;345:25:22;;;333:2;318:18;938:156:6;;;;;;;670:87;;;:::i;938:156::-;1002:7;1032:56;453:66;1080:6;1032:28;:56::i;:::-;1024:65;938:156;-1:-1:-1;;938:156:6:o;670:87::-;718:7;740:12;750:1;740:9;:12::i;:::-;733:19;;670:87;:::o;490:187:9:-;568:11;587;622:4;628:7;611:25;;;;;;;;555::22;;;611:2;596:18;;589:34;543:2;528:18;;381:248;611:25:9;;;;;;;;;;;;;;601:36;;611:25;601:36;;;;661:10;;490:187;-1:-1:-1;;;;490:187:9:o;14:180:22:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:22;;14:180;-1:-1:-1;14:180:22:o" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "68800", - "executionCost": "117", - "totalCost": "68917" - }, - "external": { - "nonce()": "2567", - "readNonce(uint256)": "2584" - }, - "internal": { - "_validateNonce(uint256)": "infinite", - "_writeNonce(uint256,uint256)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "80" - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "40" - }, - { - "begin": 145, - "end": 2076, - "name": "MSTORE", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "CALLVALUE", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "DUP1", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "ISZERO", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH [tag]", - "source": 6, - "value": "1" - }, - { - "begin": 145, - "end": 2076, - "name": "JUMPI", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 145, - "end": 2076, - "name": "DUP1", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "REVERT", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "tag", - "source": 6, - "value": "1" - }, - { - "begin": 145, - "end": 2076, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "POP", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH #[$]", - "source": 6, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 145, - "end": 2076, - "name": "DUP1", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH [$]", - "source": 6, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 145, - "end": 2076, - "name": "CODECOPY", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 145, - "end": 2076, - "name": "RETURN", - "source": 6 - } - ], - ".data": { - "0": { - ".auxdata": "a264697066735822122096307c37b71eb1ad75d89220df55103f539339b39b69638a2d573cf67d84ea6164736f6c63430008120033", - ".code": [ - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "80" - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "40" - }, - { - "begin": 145, - "end": 2076, - "name": "MSTORE", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "CALLVALUE", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "DUP1", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "ISZERO", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH [tag]", - "source": 6, - "value": "1" - }, - { - "begin": 145, - "end": 2076, - "name": "JUMPI", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 145, - "end": 2076, - "name": "DUP1", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "REVERT", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "tag", - "source": 6, - "value": "1" - }, - { - "begin": 145, - "end": 2076, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "POP", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "4" - }, - { - "begin": 145, - "end": 2076, - "name": "CALLDATASIZE", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "LT", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH [tag]", - "source": 6, - "value": "2" - }, - { - "begin": 145, - "end": 2076, - "name": "JUMPI", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 145, - "end": 2076, - "name": "CALLDATALOAD", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "E0" - }, - { - "begin": 145, - "end": 2076, - "name": "SHR", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "DUP1", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "8C3F5563" - }, - { - "begin": 145, - "end": 2076, - "name": "EQ", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH [tag]", - "source": 6, - "value": "3" - }, - { - "begin": 145, - "end": 2076, - "name": "JUMPI", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "DUP1", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "AFFED0E0" - }, - { - "begin": 145, - "end": 2076, - "name": "EQ", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH [tag]", - "source": 6, - "value": "4" - }, - { - "begin": 145, - "end": 2076, - "name": "JUMPI", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "tag", - "source": 6, - "value": "2" - }, - { - "begin": 145, - "end": 2076, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 145, - "end": 2076, - "name": "DUP1", - "source": 6 - }, - { - "begin": 145, - "end": 2076, - "name": "REVERT", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "tag", - "source": 6, - "value": "3" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "5" - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "6" - }, - { - "begin": 938, - "end": 1094, - "name": "CALLDATASIZE", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH", - "source": 6, - "value": "4" - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "7" - }, - { - "begin": 938, - "end": 1094, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "tag", - "source": 6, - "value": "6" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH [tag]", - "source": 6, - "value": "8" - }, - { - "begin": 938, - "end": 1094, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "tag", - "source": 6, - "value": "5" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH", - "source": 6, - "value": "40" - }, - { - "begin": 938, - "end": 1094, - "name": "MLOAD", - "source": 6 - }, - { - "begin": 345, - "end": 370, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 345, - "end": 370, - "name": "DUP2", - "source": 22 - }, - { - "begin": 345, - "end": 370, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 333, - "end": 335, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 318, - "end": 336, - "name": "ADD", - "source": 22 - }, - { - "begin": 938, - "end": 1094, - "name": "PUSH", - "source": 6, - "value": "40" - }, - { - "begin": 938, - "end": 1094, - "name": "MLOAD", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "DUP1", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "SWAP2", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "SUB", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "SWAP1", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "RETURN", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "tag", - "source": 6, - "value": "4" - }, - { - "begin": 670, - "end": 757, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "PUSH [tag]", - "source": 6, - "value": "5" - }, - { - "begin": 670, - "end": 757, - "name": "PUSH [tag]", - "source": 6, - "value": "12" - }, - { - "begin": 670, - "end": 757, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "tag", - "source": 6, - "value": "8" - }, - { - "begin": 938, - "end": 1094, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 1002, - "end": 1009, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 1032, - "end": 1088, - "name": "PUSH [tag]", - "source": 6, - "value": "15" - }, - { - "begin": 453, - "end": 519, - "name": "PUSH", - "source": 6, - "value": "8D0BF1FD623D628C741362C1289948E57B3E2905218C676D3E69ABEE36D6AE2E" - }, - { - "begin": 1080, - "end": 1086, - "name": "DUP4", - "source": 6 - }, - { - "begin": 1032, - "end": 1060, - "name": "PUSH [tag]", - "source": 6, - "value": "16" - }, - { - "begin": 1032, - "end": 1088, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 1032, - "end": 1088, - "name": "tag", - "source": 6, - "value": "15" - }, - { - "begin": 1032, - "end": 1088, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 1024, - "end": 1089, - "name": "SWAP3", - "source": 6 - }, - { - "begin": 938, - "end": 1094, - "name": "SWAP2", - "source": 6 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 938, - "end": 1094, - "jumpType": "[out]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "tag", - "source": 6, - "value": "12" - }, - { - "begin": 670, - "end": 757, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 718, - "end": 725, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 740, - "end": 752, - "name": "PUSH [tag]", - "source": 6, - "value": "18" - }, - { - "begin": 750, - "end": 751, - "name": "PUSH", - "source": 6, - "value": "0" - }, - { - "begin": 740, - "end": 749, - "name": "PUSH [tag]", - "source": 6, - "value": "8" - }, - { - "begin": 740, - "end": 752, - "jumpType": "[in]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 740, - "end": 752, - "name": "tag", - "source": 6, - "value": "18" - }, - { - "begin": 740, - "end": 752, - "name": "JUMPDEST", - "source": 6 - }, - { - "begin": 733, - "end": 752, - "name": "SWAP1", - "source": 6 - }, - { - "begin": 733, - "end": 752, - "name": "POP", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "name": "SWAP1", - "source": 6 - }, - { - "begin": 670, - "end": 757, - "jumpType": "[out]", - "name": "JUMP", - "source": 6 - }, - { - "begin": 490, - "end": 677, - "name": "tag", - "source": 9, - "value": "16" - }, - { - "begin": 490, - "end": 677, - "name": "JUMPDEST", - "source": 9 - }, - { - "begin": 568, - "end": 579, - "name": "PUSH", - "source": 9, - "value": "0" - }, - { - "begin": 587, - "end": 598, - "name": "DUP1", - "source": 9 - }, - { - "begin": 622, - "end": 626, - "name": "DUP4", - "source": 9 - }, - { - "begin": 628, - "end": 635, - "name": "DUP4", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "40" - }, - { - "begin": 611, - "end": 636, - "name": "MLOAD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "20" - }, - { - "begin": 611, - "end": 636, - "name": "ADD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH [tag]", - "source": 9, - "value": "20" - }, - { - "begin": 611, - "end": 636, - "name": "SWAP3", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SWAP2", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SWAP1", - "source": 9 - }, - { - "begin": 555, - "end": 580, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 555, - "end": 580, - "name": "DUP3", - "source": 22 - }, - { - "begin": 555, - "end": 580, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 611, - "end": 613, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 596, - "end": 614, - "name": "DUP3", - "source": 22 - }, - { - "begin": 596, - "end": 614, - "name": "ADD", - "source": 22 - }, - { - "begin": 589, - "end": 623, - "name": "MSTORE", - "source": 22 - }, - { - "begin": 543, - "end": 545, - "name": "PUSH", - "source": 22, - "value": "40" - }, - { - "begin": 528, - "end": 546, - "name": "ADD", - "source": 22 - }, - { - "begin": 528, - "end": 546, - "name": "SWAP1", - "source": 22 - }, - { - "begin": 381, - "end": 629, - "name": "JUMP", - "source": 22 - }, - { - "begin": 611, - "end": 636, - "name": "tag", - "source": 9, - "value": "20" - }, - { - "begin": 611, - "end": 636, - "name": "JUMPDEST", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "40" - }, - { - "begin": 611, - "end": 636, - "name": "DUP1", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "MLOAD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 611, - "end": 636, - "name": "DUP2", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "DUP5", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SUB", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "ADD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "DUP2", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "MSTORE", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SWAP2", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "SWAP1", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "MSTORE", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "DUP1", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "MLOAD", - "source": 9 - }, - { - "begin": 611, - "end": 636, - "name": "PUSH", - "source": 9, - "value": "20" - }, - { - "begin": 601, - "end": 637, - "name": "SWAP1", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "SWAP2", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "ADD", - "source": 9 - }, - { - "begin": 601, - "end": 637, - "name": "KECCAK256", - "source": 9 - }, - { - "begin": 661, - "end": 671, - "name": "SLOAD", - "source": 9 - }, - { - "begin": 661, - "end": 671, - "name": "SWAP5", - "source": 9 - }, - { - "begin": 490, - "end": 677, - "name": "SWAP4", - "source": 9 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 490, - "end": 677, - "jumpType": "[out]", - "name": "JUMP", - "source": 9 - }, - { - "begin": 14, - "end": 194, - "name": "tag", - "source": 22, - "value": "7" - }, - { - "begin": 14, - "end": 194, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": 73, - "end": 79, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 126, - "end": 128, - "name": "PUSH", - "source": 22, - "value": "20" - }, - { - "begin": 114, - "end": 123, - "name": "DUP3", - "source": 22 - }, - { - "begin": 105, - "end": 112, - "name": "DUP5", - "source": 22 - }, - { - "begin": 101, - "end": 124, - "name": "SUB", - "source": 22 - }, - { - "begin": 97, - "end": 129, - "name": "SLT", - "source": 22 - }, - { - "begin": 94, - "end": 146, - "name": "ISZERO", - "source": 22 - }, - { - "begin": 94, - "end": 146, - "name": "PUSH [tag]", - "source": 22, - "value": "24" - }, - { - "begin": 94, - "end": 146, - "name": "JUMPI", - "source": 22 - }, - { - "begin": 142, - "end": 143, - "name": "PUSH", - "source": 22, - "value": "0" - }, - { - "begin": 139, - "end": 140, - "name": "DUP1", - "source": 22 - }, - { - "begin": 132, - "end": 144, - "name": "REVERT", - "source": 22 - }, - { - "begin": 94, - "end": 146, - "name": "tag", - "source": 22, - "value": "24" - }, - { - "begin": 94, - "end": 146, - "name": "JUMPDEST", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 165, - "end": 188, - "name": "CALLDATALOAD", - "source": 22 - }, - { - "begin": 165, - "end": 188, - "name": "SWAP2", - "source": 22 - }, - { - "begin": 14, - "end": 194, - "name": "SWAP1", - "source": 22 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 14, - "end": 194, - "jumpType": "[out]", - "name": "JUMP", - "source": 22 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": { - "nonce()": "affed0e0", - "readNonce(uint256)": "8c3f5563" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"nonce()\":{\"details\":\"The default nonce space is 0x00\",\"returns\":{\"_0\":\"The next nonce\"}},\"readNonce(uint256)\":{\"params\":{\"_space\":\"Nonce space, each space keeps an independent nonce count\"},\"returns\":{\"_0\":\"The next nonce\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"nonce()\":{\"notice\":\"Returns the next nonce of the default nonce space\"},\"readNonce(uint256)\":{\"notice\":\"Returns the next nonce of the given nonce space\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":\"ModuleNonce\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol\":{\"keccak256\":\"0x3b5388842f763a5347d632a0e0e8499a54b6f0b0a6eb7f7d3d848319defa042d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b36fa5a88a4e174967f850bf2bb78c787d8016ef7b5eee3e2f883fbfe9b87a7d\",\"dweb:/ipfs/QmTDZiPiQGe1fmTKKzdwzBE1xjkh8apTotW1SQRUCFXf4q\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":{\"keccak256\":\"0x876c6a40cba975df4f7dfe24e02d153b2ee758975b6d1eda494ecd4b7244aa8e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9be3f7930476d528ce10a121701421f0fb251b7d6b7cd579917375e6b283bb4\",\"dweb:/ipfs/QmSbvbYQvTk8KYJZ7QqSKB9Y4M1X3UDhS6k765Zr1BAwK8\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol\":{\"keccak256\":\"0x98520e740b0822ec053d21f376b8be8a58e93228f3758f9228a7d00e1f60950f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://31226706c004f1a4315d6b8d37621b46f4d5807c16e1ce72675c1431ed9006a2\",\"dweb:/ipfs/QmdSSyCuPex2E2VTd6UMYy9WAq9eJNZ6vHSUomntNknzXE\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "nonce()": { - "notice": "Returns the next nonce of the default nonce space" - }, - "readNonce(uint256)": { - "notice": "Returns the next nonce of the given nonce space" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol": { - "ModuleOnlyDelegatecall": { - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "OnlyDelegatecall", - "type": "error" - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":65:420 contract ModuleOnlyDelegatecall {... */\n mstore(0x40, 0xa0)\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":165:210 constructor() {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":200:204 this */\n address\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":185:205 self = address(this) */\n 0x80\n mstore\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":65:420 contract ModuleOnlyDelegatecall {... */\n mload(0x80)\n codecopy(0x00, dataOffset(sub_0), dataSize(sub_0))\n 0x00\n assignImmutable(\"0x4ffc9d227228e624d76834105f24ceb5cb9c5a8675150ad2031c88a10259e303\")\n return(0x00, dataSize(sub_0))\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":65:420 contract ModuleOnlyDelegatecall {... */\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212201515345980b9c882b79d269c45fcfe8e69bce35d66d1c0de8bfe8dba0fe333fc64736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": { - "@_1068": { - "entryPoint": null, - "id": 1068, - "parameterSlots": 0, - "returnSlots": 0 - } - }, - "generatedSources": [], - "linkReferences": {}, - "object": "60a0604052348015600f57600080fd5b5030608052608051603f602960003960005050603f6000f3fe6080604052600080fdfea26469706673582212201515345980b9c882b79d269c45fcfe8e69bce35d66d1c0de8bfe8dba0fe333fc64736f6c63430008120033", - "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH1 0x3F PUSH1 0x29 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO ISZERO CALLVALUE MSIZE DUP1 0xB9 0xC8 DUP3 0xB7 SWAP14 0x26 SWAP13 GASLIMIT 0xFC INVALID DUP15 PUSH10 0xBCE35D66D1C0DE8BFE8D 0xBA 0xF 0xE3 CALLER 0xFC PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "65:355:7:-:0;;;165:45;;;;;;;;;-1:-1:-1;200:4:7;185:20;;65:355;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "6080604052600080fdfea26469706673582212201515345980b9c882b79d269c45fcfe8e69bce35d66d1c0de8bfe8dba0fe333fc64736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO ISZERO CALLVALUE MSIZE DUP1 0xB9 0xC8 DUP3 0xB7 SWAP14 0x26 SWAP13 GASLIMIT 0xFC INVALID DUP15 PUSH10 0xBCE35D66D1C0DE8BFE8D 0xBA 0xF 0xE3 CALLER 0xFC PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "65:355:7:-:0;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "12600", - "executionCost": "infinite", - "totalCost": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "A0" - }, - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "40" - }, - { - "begin": 65, - "end": 420, - "name": "MSTORE", - "source": 7 - }, - { - "begin": 165, - "end": 210, - "name": "CALLVALUE", - "source": 7 - }, - { - "begin": 165, - "end": 210, - "name": "DUP1", - "source": 7 - }, - { - "begin": 165, - "end": 210, - "name": "ISZERO", - "source": 7 - }, - { - "begin": 165, - "end": 210, - "name": "PUSH [tag]", - "source": 7, - "value": "1" - }, - { - "begin": 165, - "end": 210, - "name": "JUMPI", - "source": 7 - }, - { - "begin": 165, - "end": 210, - "name": "PUSH", - "source": 7, - "value": "0" - }, - { - "begin": 165, - "end": 210, - "name": "DUP1", - "source": 7 - }, - { - "begin": 165, - "end": 210, - "name": "REVERT", - "source": 7 - }, - { - "begin": 165, - "end": 210, - "name": "tag", - "source": 7, - "value": "1" - }, - { - "begin": 165, - "end": 210, - "name": "JUMPDEST", - "source": 7 - }, - { - "begin": -1, - "end": -1, - "name": "POP", - "source": -1 - }, - { - "begin": 200, - "end": 204, - "name": "ADDRESS", - "source": 7 - }, - { - "begin": 185, - "end": 205, - "name": "PUSH", - "source": 7, - "value": "80" - }, - { - "begin": 185, - "end": 205, - "name": "MSTORE", - "source": 7 - }, - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "80" - }, - { - "begin": 65, - "end": 420, - "name": "MLOAD", - "source": 7 - }, - { - "begin": 65, - "end": 420, - "name": "PUSH #[$]", - "source": 7, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 420, - "name": "PUSH [$]", - "source": 7, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "0" - }, - { - "begin": 65, - "end": 420, - "name": "CODECOPY", - "source": 7 - }, - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "0" - }, - { - "begin": 65, - "end": 420, - "name": "ASSIGNIMMUTABLE", - "source": 7, - "value": "1055" - }, - { - "begin": 65, - "end": 420, - "name": "PUSH #[$]", - "source": 7, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "0" - }, - { - "begin": 65, - "end": 420, - "name": "RETURN", - "source": 7 - } - ], - ".data": { - "0": { - ".auxdata": "a26469706673582212201515345980b9c882b79d269c45fcfe8e69bce35d66d1c0de8bfe8dba0fe333fc64736f6c63430008120033", - ".code": [ - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "80" - }, - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "40" - }, - { - "begin": 65, - "end": 420, - "name": "MSTORE", - "source": 7 - }, - { - "begin": 65, - "end": 420, - "name": "PUSH", - "source": 7, - "value": "0" - }, - { - "begin": 65, - "end": 420, - "name": "DUP1", - "source": 7 - }, - { - "begin": 65, - "end": 420, - "name": "REVERT", - "source": 7 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"OnlyDelegatecall\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":\"ModuleOnlyDelegatecall\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol\":{\"keccak256\":\"0x32bdb1d343eee2e32fd9d0f1d6dc0e265411d0821bd908881822f0f26f0887f8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1537c4f60a609751013bdc69eb1c6e6218982d91013115bc4e28cb84f816cd91\",\"dweb:/ipfs/QmSjkSTrrB4vuxECcm5cRG7YmraF53QWRgftxS827KcQLW\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol": { - "ModuleSelfAuth": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_sender", - "type": "address" - }, - { - "internalType": "address", - "name": "_self", - "type": "address" - } - ], - "name": "OnlySelfAuth", - "type": "error" - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":65:281 contract ModuleSelfAuth {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":65:281 contract ModuleSelfAuth {... */\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220396fc0aa947578a12e6d47ac958aa78118e45e6db5b5f8680d4fcb2019dc056664736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220396fc0aa947578a12e6d47ac958aa78118e45e6db5b5f8680d4fcb2019dc056664736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY PUSH16 0xC0AA947578A12E6D47AC958AA78118E4 0x5E PUSH14 0xB5B5F8680D4FCB2019DC05666473 PUSH16 0x6C634300081200330000000000000000 ", - "sourceMap": "65:216:8:-:0;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "6080604052600080fdfea2646970667358221220396fc0aa947578a12e6d47ac958aa78118e45e6db5b5f8680d4fcb2019dc056664736f6c63430008120033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY PUSH16 0xC0AA947578A12E6D47AC958AA78118E4 0x5E PUSH14 0xB5B5F8680D4FCB2019DC05666473 PUSH16 0x6C634300081200330000000000000000 ", - "sourceMap": "65:216:8:-:0;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "12600", - "executionCost": "66", - "totalCost": "12666" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 65, - "end": 281, - "name": "PUSH", - "source": 8, - "value": "80" - }, - { - "begin": 65, - "end": 281, - "name": "PUSH", - "source": 8, - "value": "40" - }, - { - "begin": 65, - "end": 281, - "name": "MSTORE", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "CALLVALUE", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "DUP1", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "ISZERO", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "PUSH [tag]", - "source": 8, - "value": "1" - }, - { - "begin": 65, - "end": 281, - "name": "JUMPI", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "PUSH", - "source": 8, - "value": "0" - }, - { - "begin": 65, - "end": 281, - "name": "DUP1", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "REVERT", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "tag", - "source": 8, - "value": "1" - }, - { - "begin": 65, - "end": 281, - "name": "JUMPDEST", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "POP", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "PUSH #[$]", - "source": 8, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 281, - "name": "DUP1", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "PUSH [$]", - "source": 8, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 281, - "name": "PUSH", - "source": 8, - "value": "0" - }, - { - "begin": 65, - "end": 281, - "name": "CODECOPY", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "PUSH", - "source": 8, - "value": "0" - }, - { - "begin": 65, - "end": 281, - "name": "RETURN", - "source": 8 - } - ], - ".data": { - "0": { - ".auxdata": "a2646970667358221220396fc0aa947578a12e6d47ac958aa78118e45e6db5b5f8680d4fcb2019dc056664736f6c63430008120033", - ".code": [ - { - "begin": 65, - "end": 281, - "name": "PUSH", - "source": 8, - "value": "80" - }, - { - "begin": 65, - "end": 281, - "name": "PUSH", - "source": 8, - "value": "40" - }, - { - "begin": 65, - "end": 281, - "name": "MSTORE", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "PUSH", - "source": 8, - "value": "0" - }, - { - "begin": 65, - "end": 281, - "name": "DUP1", - "source": 8 - }, - { - "begin": 65, - "end": 281, - "name": "REVERT", - "source": 8 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_self\",\"type\":\"address\"}],\"name\":\"OnlySelfAuth\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":\"ModuleSelfAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":{\"keccak256\":\"0x91545de5c77cfac86c5686c4e1f338a18ee7adb689ac0234848d7a7fc8a560db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://dc89d05d8099ba4c3c2cf85737796d439899b5a04e6b87b1ea43f687ae08848a\",\"dweb:/ipfs/QmatU8gRvFkK3Yn1MYAekzi48Waw3cDLtXJpduvju9HFUu\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol": { - "ModuleStorage": { - "abi": [], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":65:679 library ModuleStorage {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":65:679 library ModuleStorage {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa264697066735822122055b5e58f321540dc1eb3c539fbeff9918a32f6db2cb889e0c660fd49a99fd80d64736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055b5e58f321540dc1eb3c539fbeff9918a32f6db2cb889e0c660fd49a99fd80d64736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE 0xB5 0xE5 DUP16 ORIGIN ISZERO BLOCKHASH 0xDC 0x1E 0xB3 0xC5 CODECOPY 0xFB 0xEF 0xF9 SWAP2 DUP11 ORIGIN 0xF6 0xDB 0x2C 0xB8 DUP10 0xE0 0xC6 PUSH1 0xFD 0x49 0xA9 SWAP16 0xD8 0xD PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "65:614:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:614:9;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055b5e58f321540dc1eb3c539fbeff9918a32f6db2cb889e0c660fd49a99fd80d64736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE 0xB5 0xE5 DUP16 ORIGIN ISZERO BLOCKHASH 0xDC 0x1E 0xB3 0xC5 CODECOPY 0xFB 0xEF 0xF9 SWAP2 DUP11 ORIGIN 0xF6 0xDB 0x2C 0xB8 DUP10 0xE0 0xC6 PUSH1 0xFD 0x49 0xA9 SWAP16 0xD8 0xD PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "65:614:9:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "readBytes32(bytes32)": "infinite", - "readBytes32Map(bytes32,bytes32)": "infinite", - "writeBytes32(bytes32,bytes32)": "infinite", - "writeBytes32Map(bytes32,bytes32,bytes32)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 65, - "end": 679, - "name": "PUSH #[$]", - "source": 9, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 679, - "name": "PUSH [$]", - "source": 9, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "B" - }, - { - "begin": 65, - "end": 679, - "name": "DUP3", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "DUP3", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "DUP3", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "CODECOPY", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "DUP1", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "MLOAD", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "0" - }, - { - "begin": 65, - "end": 679, - "name": "BYTE", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "73" - }, - { - "begin": 65, - "end": 679, - "name": "EQ", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH [tag]", - "source": 9, - "value": "1" - }, - { - "begin": 65, - "end": 679, - "name": "JUMPI", - "source": 9 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "0" - }, - { - "begin": 65, - "end": 679, - "name": "MSTORE", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "0" - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "4" - }, - { - "begin": 65, - "end": 679, - "name": "MSTORE", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "24" - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "0" - }, - { - "begin": 65, - "end": 679, - "name": "REVERT", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "tag", - "source": 9, - "value": "1" - }, - { - "begin": 65, - "end": 679, - "name": "JUMPDEST", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "ADDRESS", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "0" - }, - { - "begin": 65, - "end": 679, - "name": "MSTORE", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "73" - }, - { - "begin": 65, - "end": 679, - "name": "DUP2", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "MSTORE8", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "DUP3", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "DUP2", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "RETURN", - "source": 9 - } - ], - ".data": { - "0": { - ".auxdata": "a264697066735822122055b5e58f321540dc1eb3c539fbeff9918a32f6db2cb889e0c660fd49a99fd80d64736f6c63430008120033", - ".code": [ - { - "begin": 65, - "end": 679, - "name": "PUSHDEPLOYADDRESS", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "ADDRESS", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "EQ", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "80" - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "40" - }, - { - "begin": 65, - "end": 679, - "name": "MSTORE", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "PUSH", - "source": 9, - "value": "0" - }, - { - "begin": 65, - "end": 679, - "name": "DUP1", - "source": 9 - }, - { - "begin": 65, - "end": 679, - "name": "REVERT", - "source": 9 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":\"ModuleStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":{\"keccak256\":\"0x876c6a40cba975df4f7dfe24e02d153b2ee758975b6d1eda494ecd4b7244aa8e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9be3f7930476d528ce10a121701421f0fb251b7d6b7cd579917375e6b283bb4\",\"dweb:/ipfs/QmSbvbYQvTk8KYJZ7QqSKB9Y4M1X3UDhS6k765Zr1BAwK8\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol": { - "IModuleAuth": { - "abi": [ - { - "inputs": [], - "name": "ImageHashIsZero", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes1", - "name": "_type", - "type": "bytes1" - } - ], - "name": "InvalidSignatureType", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "newImageHash", - "type": "bytes32" - } - ], - "name": "ImageHashUpdated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_digest", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "signatureRecovery", - "outputs": [ - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "weight", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "imageHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "subdigest", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "checkpoint", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_imageHash", - "type": "bytes32" - } - ], - "name": "updateImageHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "updateImageHash(bytes32)": { - "params": { - "_imageHash": "New required image hash of the signature" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": "", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "gasEstimates": null, - "legacyAssembly": null, - "methodIdentifiers": { - "signatureRecovery(bytes32,bytes)": "853c5068", - "updateImageHash(bytes32)": "29561426" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes1\",\"name\":\"_type\",\"type\":\"bytes1\"}],\"name\":\"InvalidSignatureType\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"signatureRecovery\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"subdigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"updateImageHash(bytes32)\":{\"params\":{\"_imageHash\":\"New required image hash of the signature\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"updateImageHash(bytes32)\":{\"notice\":\"Updates the signers configuration of the wallet\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol\":\"IModuleAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol\":{\"keccak256\":\"0x24c6b05c32cb344b3b0aebd01fbd8bfc69f8c8e29fca340b262d9612c34d51e2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5f6c004946f0cbc4b3e52d45248337146bc82569da894ecff3cbdc5a0dca95c3\",\"dweb:/ipfs/QmNSgDMQ7SHL6AJuzTSRbY2kgciHF1SKWfH6MaPH1N3TpR\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "updateImageHash(bytes32)": { - "notice": "Updates the signers configuration of the wallet" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol": { - "IModuleCalls": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_requested", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_available", - "type": "uint256" - } - ], - "name": "NotEnoughGas", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "TxExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_tx", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_reason", - "type": "bytes" - } - ], - "name": "TxFailed", - "type": "event" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "_nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "execute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "delegateCall", - "type": "bool" - }, - { - "internalType": "bool", - "name": "revertOnError", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IModuleCalls.Transaction[]", - "name": "_txs", - "type": "tuple[]" - } - ], - "name": "selfExecute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": { - "params": { - "_nonce": "Signature nonce (may contain an encoded space)", - "_signature": "Encoded signature", - "_txs": "Transactions to process" - } - }, - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": { - "params": { - "_txs": "Transactions to execute" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": "", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "gasEstimates": null, - "legacyAssembly": null, - "methodIdentifiers": { - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": "7a9a1628", - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": "61c2926c" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requested\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_available\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_tx\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"TxExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_tx\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_reason\",\"type\":\"bytes\"}],\"name\":\"TxFailed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"revertOnError\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IModuleCalls.Transaction[]\",\"name\":\"_txs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"revertOnError\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IModuleCalls.Transaction[]\",\"name\":\"_txs\",\"type\":\"tuple[]\"}],\"name\":\"selfExecute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)\":{\"params\":{\"_nonce\":\"Signature nonce (may contain an encoded space)\",\"_signature\":\"Encoded signature\",\"_txs\":\"Transactions to process\"}},\"selfExecute((bool,bool,uint256,address,uint256,bytes)[])\":{\"params\":{\"_txs\":\"Transactions to execute\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)\":{\"notice\":\"Allow wallet owner to execute an action\"},\"selfExecute((bool,bool,uint256,address,uint256,bytes)[])\":{\"notice\":\"Allow wallet to execute an action without signing the message\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol\":\"IModuleCalls\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol\":{\"keccak256\":\"0xde065c15e38eb009c3dc8f99dfefdd1d6d244dd12a889a8b57edd90d32fb4395\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://23608955786060457f79267795a61eb89b3910b683fc136c749548369425088f\",\"dweb:/ipfs/QmXNorcQBF1Qk21y3aEJRiiHVtwm61zP4ttA1ZzmRjyHnz\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "execute((bool,bool,uint256,address,uint256,bytes)[],uint256,bytes)": { - "notice": "Allow wallet owner to execute an action" - }, - "selfExecute((bool,bool,uint256,address,uint256,bytes)[])": { - "notice": "Allow wallet to execute an action without signing the message" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol": { - "IModuleCreator": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "CreateFailed", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_code", - "type": "bytes" - } - ], - "name": "createContract", - "outputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "stateMutability": "payable", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "createContract(bytes)": { - "params": { - "_code": "Creation code of the contract" - }, - "returns": { - "addr": "The address of the created contract" - } - } - }, - "version": 1 - }, - "evm": { - "assembly": "", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "gasEstimates": null, - "legacyAssembly": null, - "methodIdentifiers": { - "createContract(bytes)": "90042baf" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"CreateFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"createContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createContract(bytes)\":{\"params\":{\"_code\":\"Creation code of the contract\"},\"returns\":{\"addr\":\"The address of the created contract\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createContract(bytes)\":{\"notice\":\"Creates a contract forwarding eth value\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol\":\"IModuleCreator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol\":{\"keccak256\":\"0xa206dd3d424b8cd1c4f1400aa344cbc974480fea02f0fb371b872558e5ff4e6d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea14c75f43a0008c582dcbae3ba3c900e446e28039dfdbb059d326ec5cc6a2d2\",\"dweb:/ipfs/QmRfF6BmUWiFkCgzVFbLcHsUCNz5q2XkkcwXPX57ViTK4D\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "createContract(bytes)": { - "notice": "Creates a contract forwarding eth value" - } - }, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol": { - "SequenceBaseSig": { - "abi": [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_addr", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidNestedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_flag", - "type": "uint256" - } - ], - "name": "InvalidSignatureFlag", - "type": "error" - } - ], - "devdoc": { - "author": "Agustin Aguilar (aa@horizon.io)", - "kind": "dev", - "methods": {}, - "title": "SequenceBaseSig Library", - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":419:9536 library SequenceBaseSig {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":419:9536 library SequenceBaseSig {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212208df7fadefb88448ef7f4d3ade6c9b119a5809f9dda955b39d53d545dfcdfed0a64736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208df7fadefb88448ef7f4d3ade6c9b119a5809f9dda955b39d53d545dfcdfed0a64736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 0xF7 STATICCALL 0xDE 0xFB DUP9 PREVRANDAO DUP15 0xF7 DELEGATECALL 0xD3 0xAD 0xE6 0xC9 0xB1 NOT 0xA5 DUP1 SWAP16 SWAP14 0xDA SWAP6 JUMPDEST CODECOPY 0xD5 RETURNDATASIZE SLOAD 0x5D 0xFC 0xDF 0xED EXP PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "419:9117:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;419:9117:13;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208df7fadefb88448ef7f4d3ade6c9b119a5809f9dda955b39d53d545dfcdfed0a64736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 0xF7 STATICCALL 0xDE 0xFB DUP9 PREVRANDAO DUP15 0xF7 DELEGATECALL 0xD3 0xAD 0xE6 0xC9 0xB1 NOT 0xA5 DUP1 SWAP16 SWAP14 0xDA SWAP6 JUMPDEST CODECOPY 0xD5 RETURNDATASIZE SLOAD 0x5D 0xFC 0xDF 0xED EXP PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "419:9117:13:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "_leafForAddressAndWeight(address,uint96)": "infinite", - "_leafForHardcodedSubdigest(bytes32)": "infinite", - "_leafForNested(bytes32,uint256,uint256)": "infinite", - "recover(bytes32,bytes calldata)": "infinite", - "recoverBranch(bytes32,bytes calldata)": "infinite", - "subdigest(bytes32)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 419, - "end": 9536, - "name": "PUSH #[$]", - "source": 13, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH [$]", - "source": 13, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "B" - }, - { - "begin": 419, - "end": 9536, - "name": "DUP3", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "DUP3", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "DUP3", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "CODECOPY", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "DUP1", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "MLOAD", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 419, - "end": 9536, - "name": "BYTE", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "73" - }, - { - "begin": 419, - "end": 9536, - "name": "EQ", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH [tag]", - "source": 13, - "value": "1" - }, - { - "begin": 419, - "end": 9536, - "name": "JUMPI", - "source": 13 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 419, - "end": 9536, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "4" - }, - { - "begin": 419, - "end": 9536, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "24" - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 419, - "end": 9536, - "name": "REVERT", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "tag", - "source": 13, - "value": "1" - }, - { - "begin": 419, - "end": 9536, - "name": "JUMPDEST", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "ADDRESS", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 419, - "end": 9536, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "73" - }, - { - "begin": 419, - "end": 9536, - "name": "DUP2", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "MSTORE8", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "DUP3", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "DUP2", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "RETURN", - "source": 13 - } - ], - ".data": { - "0": { - ".auxdata": "a26469706673582212208df7fadefb88448ef7f4d3ade6c9b119a5809f9dda955b39d53d545dfcdfed0a64736f6c63430008120033", - ".code": [ - { - "begin": 419, - "end": 9536, - "name": "PUSHDEPLOYADDRESS", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "ADDRESS", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "EQ", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "80" - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "40" - }, - { - "begin": 419, - "end": 9536, - "name": "MSTORE", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "PUSH", - "source": 13, - "value": "0" - }, - { - "begin": 419, - "end": 9536, - "name": "DUP1", - "source": 13 - }, - { - "begin": 419, - "end": 9536, - "name": "REVERT", - "source": 13 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidNestedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Agustin Aguilar (aa@horizon.io)\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SequenceBaseSig Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A Solidity implementation for handling signatures in the Sequence protocol.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":\"SequenceBaseSig\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":{\"keccak256\":\"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1\",\"dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":{\"keccak256\":\"0xe0565e24e94204d4b254ace42d124d3279256090921a4818cbbf9747cbb14e04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4293a4762b0816738511f697efd04a0e881d4c409bd15ac1c4e7261fe5e482a2\",\"dweb:/ipfs/QmcHbEBne4fvpcD7RTJHCL6q9czoLa7KHneaCeYfXuWiGu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":{\"keccak256\":\"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98\",\"dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":{\"keccak256\":\"0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25\",\"dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":{\"keccak256\":\"0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335\",\"dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":{\"keccak256\":\"0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353\",\"dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "notice": "A Solidity implementation for handling signatures in the Sequence protocol.", - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol": { - "SequenceChainedSig": { - "abi": [ - { - "inputs": [], - "name": "ImageHashIsZero", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes1", - "name": "_type", - "type": "bytes1" - } - ], - "name": "InvalidSignatureType", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_weight", - "type": "uint256" - } - ], - "name": "LowWeightChainedSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_sender", - "type": "address" - }, - { - "internalType": "address", - "name": "_self", - "type": "address" - } - ], - "name": "OnlySelfAuth", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_current", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_prev", - "type": "uint256" - } - ], - "name": "WrongChainedCheckpointOrder", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "newImageHash", - "type": "bytes32" - } - ], - "name": "ImageHashUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "SET_IMAGE_HASH_TYPE_HASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_digest", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "signatureRecovery", - "outputs": [ - { - "internalType": "uint256", - "name": "threshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "weight", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "imageHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "subdigest", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "checkpoint", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_imageHash", - "type": "bytes32" - } - ], - "name": "updateImageHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "devdoc": { - "author": "Agustin Aguilar (aa@horizon.io)", - "details": "The delegations can be chained together, the first signature is the one that is used to validate the message, the last signature must match the current on-chain configuration of the wallet.", - "kind": "dev", - "methods": { - "updateImageHash(bytes32)": { - "params": { - "_imageHash": "New required image hash of the signature" - } - } - }, - "title": "Sequence chained auth recovery submodule", - "version": 1 - }, - "evm": { - "assembly": "", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "gasEstimates": null, - "legacyAssembly": null, - "methodIdentifiers": { - "SET_IMAGE_HASH_TYPE_HASH()": "57c56d6b", - "signatureRecovery(bytes32,bytes)": "853c5068", - "updateImageHash(bytes32)": "29561426" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes1\",\"name\":\"_type\",\"type\":\"bytes1\"}],\"name\":\"InvalidSignatureType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_self\",\"type\":\"address\"}],\"name\":\"OnlySelfAuth\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_prev\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SET_IMAGE_HASH_TYPE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"signatureRecovery\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"subdigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar (aa@horizon.io)\",\"details\":\"The delegations can be chained together, the first signature is the one that is used to validate the message, the last signature must match the current on-chain configuration of the wallet.\",\"kind\":\"dev\",\"methods\":{\"updateImageHash(bytes32)\":{\"params\":{\"_imageHash\":\"New required image hash of the signature\"}}},\"title\":\"Sequence chained auth recovery submodule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"updateImageHash(bytes32)\":{\"notice\":\"Updates the signers configuration of the wallet\"}},\"notice\":\"Defines Sequence signatures that work by delegating control to new configurations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":\"SequenceChainedSig\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":{\"keccak256\":\"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1\",\"dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol\":{\"keccak256\":\"0x91545de5c77cfac86c5686c4e1f338a18ee7adb689ac0234848d7a7fc8a560db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://dc89d05d8099ba4c3c2cf85737796d439899b5a04e6b87b1ea43f687ae08848a\",\"dweb:/ipfs/QmatU8gRvFkK3Yn1MYAekzi48Waw3cDLtXJpduvju9HFUu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol\":{\"keccak256\":\"0x876c6a40cba975df4f7dfe24e02d153b2ee758975b6d1eda494ecd4b7244aa8e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9be3f7930476d528ce10a121701421f0fb251b7d6b7cd579917375e6b283bb4\",\"dweb:/ipfs/QmSbvbYQvTk8KYJZ7QqSKB9Y4M1X3UDhS6k765Zr1BAwK8\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol\":{\"keccak256\":\"0x24c6b05c32cb344b3b0aebd01fbd8bfc69f8c8e29fca340b262d9612c34d51e2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5f6c004946f0cbc4b3e52d45248337146bc82569da894ecff3cbdc5a0dca95c3\",\"dweb:/ipfs/QmNSgDMQ7SHL6AJuzTSRbY2kgciHF1SKWfH6MaPH1N3TpR\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":{\"keccak256\":\"0xe0565e24e94204d4b254ace42d124d3279256090921a4818cbbf9747cbb14e04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4293a4762b0816738511f697efd04a0e881d4c409bd15ac1c4e7261fe5e482a2\",\"dweb:/ipfs/QmcHbEBne4fvpcD7RTJHCL6q9czoLa7KHneaCeYfXuWiGu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol\":{\"keccak256\":\"0x755fbf6c106fe1c3c375c41c95c38269873717d8e683678b5fdbf6c8d3426306\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7c7c92e72dd94f16b5c004d38c2d92eb2b760fd29a939945ed275633b0f93fa5\",\"dweb:/ipfs/QmVdCG7Aw7aVV67z5mUKZa4VqhXHdLqy3SKxPfxaxq54p2\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":{\"keccak256\":\"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98\",\"dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":{\"keccak256\":\"0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25\",\"dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":{\"keccak256\":\"0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335\",\"dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":{\"keccak256\":\"0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353\",\"dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": { - "updateImageHash(bytes32)": { - "notice": "Updates the signers configuration of the wallet" - } - }, - "notice": "Defines Sequence signatures that work by delegating control to new configurations.", - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol": { - "SequenceDynamicSig": { - "abi": [], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":98:912 library SequenceDynamicSig {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":98:912 library SequenceDynamicSig {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220988e7a0efd834caf932b23f5964fd75fc66e99c5c9a0302666625fa77c52b63864736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220988e7a0efd834caf932b23f5964fd75fc66e99c5c9a0302666625fa77c52b63864736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 DUP15 PUSH27 0xEFD834CAF932B23F5964FD75FC66E99C5C9A0302666625FA77C52 0xB6 CODESIZE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "98:814:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;98:814:15;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220988e7a0efd834caf932b23f5964fd75fc66e99c5c9a0302666625fa77c52b63864736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 DUP15 PUSH27 0xEFD834CAF932B23F5964FD75FC66E99C5C9A0302666625FA77C52 0xB6 CODESIZE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "98:814:15:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "recover(bytes32,bytes calldata)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 98, - "end": 912, - "name": "PUSH #[$]", - "source": 15, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 98, - "end": 912, - "name": "PUSH [$]", - "source": 15, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "B" - }, - { - "begin": 98, - "end": 912, - "name": "DUP3", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "DUP3", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "DUP3", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "CODECOPY", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "DUP1", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "MLOAD", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "0" - }, - { - "begin": 98, - "end": 912, - "name": "BYTE", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "73" - }, - { - "begin": 98, - "end": 912, - "name": "EQ", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH [tag]", - "source": 15, - "value": "1" - }, - { - "begin": 98, - "end": 912, - "name": "JUMPI", - "source": 15 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "0" - }, - { - "begin": 98, - "end": 912, - "name": "MSTORE", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "0" - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "4" - }, - { - "begin": 98, - "end": 912, - "name": "MSTORE", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "24" - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "0" - }, - { - "begin": 98, - "end": 912, - "name": "REVERT", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "tag", - "source": 15, - "value": "1" - }, - { - "begin": 98, - "end": 912, - "name": "JUMPDEST", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "ADDRESS", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "0" - }, - { - "begin": 98, - "end": 912, - "name": "MSTORE", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "73" - }, - { - "begin": 98, - "end": 912, - "name": "DUP2", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "MSTORE8", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "DUP3", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "DUP2", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "RETURN", - "source": 15 - } - ], - ".data": { - "0": { - ".auxdata": "a2646970667358221220988e7a0efd834caf932b23f5964fd75fc66e99c5c9a0302666625fa77c52b63864736f6c63430008120033", - ".code": [ - { - "begin": 98, - "end": 912, - "name": "PUSHDEPLOYADDRESS", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "ADDRESS", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "EQ", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "80" - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "40" - }, - { - "begin": 98, - "end": 912, - "name": "MSTORE", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "PUSH", - "source": 15, - "value": "0" - }, - { - "begin": 98, - "end": 912, - "name": "DUP1", - "source": 15 - }, - { - "begin": 98, - "end": 912, - "name": "REVERT", - "source": 15 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":\"SequenceDynamicSig\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":{\"keccak256\":\"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1\",\"dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol\":{\"keccak256\":\"0xe0565e24e94204d4b254ace42d124d3279256090921a4818cbbf9747cbb14e04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4293a4762b0816738511f697efd04a0e881d4c409bd15ac1c4e7261fe5e482a2\",\"dweb:/ipfs/QmcHbEBne4fvpcD7RTJHCL6q9czoLa7KHneaCeYfXuWiGu\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol\":{\"keccak256\":\"0x6de353f8c7f44c4294914a4917458ce90ae2f7ecd2d84074fe12d4a4f1485ee5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://369f979b79a3d3fd0336ab14b3accadb63e4784324afc34f8db11d1988526afd\",\"dweb:/ipfs/QmavmBZ354wTaXQ6ixBd8GrC9HwtRqn4MoNhCVJcx11off\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":{\"keccak256\":\"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98\",\"dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":{\"keccak256\":\"0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25\",\"dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":{\"keccak256\":\"0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335\",\"dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":{\"keccak256\":\"0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353\",\"dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol": { - "SequenceNoChainIdSig": { - "abi": [], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":65:619 library SequenceNoChainIdSig {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":65:619 library SequenceNoChainIdSig {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa264697066735822122017d1b2b94cb2d25bb2c8abe419506b6917bfa14841e22660d017f50ee442141b64736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017d1b2b94cb2d25bb2c8abe419506b6917bfa14841e22660d017f50ee442141b64736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xD1 0xB2 0xB9 0x4C 0xB2 0xD2 JUMPDEST 0xB2 0xC8 0xAB 0xE4 NOT POP PUSH12 0x6917BFA14841E22660D017F5 0xE 0xE4 TIMESTAMP EQ SHL PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "65:554:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:554:16;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017d1b2b94cb2d25bb2c8abe419506b6917bfa14841e22660d017f50ee442141b64736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xD1 0xB2 0xB9 0x4C 0xB2 0xD2 JUMPDEST 0xB2 0xC8 0xAB 0xE4 NOT POP PUSH12 0x6917BFA14841E22660D017F5 0xE 0xE4 TIMESTAMP EQ SHL PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "65:554:16:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "subdigest(bytes32)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 65, - "end": 619, - "name": "PUSH #[$]", - "source": 16, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 619, - "name": "PUSH [$]", - "source": 16, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "B" - }, - { - "begin": 65, - "end": 619, - "name": "DUP3", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "DUP3", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "DUP3", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "CODECOPY", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "DUP1", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "MLOAD", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "0" - }, - { - "begin": 65, - "end": 619, - "name": "BYTE", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "73" - }, - { - "begin": 65, - "end": 619, - "name": "EQ", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH [tag]", - "source": 16, - "value": "1" - }, - { - "begin": 65, - "end": 619, - "name": "JUMPI", - "source": 16 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "0" - }, - { - "begin": 65, - "end": 619, - "name": "MSTORE", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "0" - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "4" - }, - { - "begin": 65, - "end": 619, - "name": "MSTORE", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "24" - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "0" - }, - { - "begin": 65, - "end": 619, - "name": "REVERT", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "tag", - "source": 16, - "value": "1" - }, - { - "begin": 65, - "end": 619, - "name": "JUMPDEST", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "ADDRESS", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "0" - }, - { - "begin": 65, - "end": 619, - "name": "MSTORE", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "73" - }, - { - "begin": 65, - "end": 619, - "name": "DUP2", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "MSTORE8", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "DUP3", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "DUP2", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "RETURN", - "source": 16 - } - ], - ".data": { - "0": { - ".auxdata": "a264697066735822122017d1b2b94cb2d25bb2c8abe419506b6917bfa14841e22660d017f50ee442141b64736f6c63430008120033", - ".code": [ - { - "begin": 65, - "end": 619, - "name": "PUSHDEPLOYADDRESS", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "ADDRESS", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "EQ", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "80" - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "40" - }, - { - "begin": 65, - "end": 619, - "name": "MSTORE", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "PUSH", - "source": 16, - "value": "0" - }, - { - "begin": 65, - "end": 619, - "name": "DUP1", - "source": 16 - }, - { - "begin": 65, - "end": 619, - "name": "REVERT", - "source": 16 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":\"SequenceNoChainIdSig\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol\":{\"keccak256\":\"0xa3ac8b8d31f20a8732bb4ebad53b42b334ec29041de0224bd494913ef0b2ad07\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5a81d4eb3f47b09a8835b2fd53e0baa2e23cb604db3b10dae82543a5bcc52fa4\",\"dweb:/ipfs/QmQ9XSSgbaagWArmZJJ366bdJ7HfxUxn9jdnWwN6SxUSeY\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol": { - "SubModuleNonce": { - "abi": [], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol\":65:751 library SubModuleNonce {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol\":65:751 library SubModuleNonce {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212208609e09d11153aed5ba8eb4ae9c6915a536fd4523605bce53bc4a2f1e304f84264736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208609e09d11153aed5ba8eb4ae9c6915a536fd4523605bce53bc4a2f1e304f84264736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP7 MULMOD 0xE0 SWAP14 GT ISZERO GASPRICE 0xED JUMPDEST 0xA8 0xEB 0x4A 0xE9 0xC6 SWAP2 GAS MSTORE8 PUSH16 0xD4523605BCE53BC4A2F1E304F8426473 PUSH16 0x6C634300081200330000000000000000 ", - "sourceMap": "65:686:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:686:17;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208609e09d11153aed5ba8eb4ae9c6915a536fd4523605bce53bc4a2f1e304f84264736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP7 MULMOD 0xE0 SWAP14 GT ISZERO GASPRICE 0xED JUMPDEST 0xA8 0xEB 0x4A 0xE9 0xC6 SWAP2 GAS MSTORE8 PUSH16 0xD4523605BCE53BC4A2F1E304F8426473 PUSH16 0x6C634300081200330000000000000000 ", - "sourceMap": "65:686:17:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "decodeNonce(uint256)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 65, - "end": 751, - "name": "PUSH #[$]", - "source": 17, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 751, - "name": "PUSH [$]", - "source": 17, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "B" - }, - { - "begin": 65, - "end": 751, - "name": "DUP3", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "DUP3", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "DUP3", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "CODECOPY", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "DUP1", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "MLOAD", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "0" - }, - { - "begin": 65, - "end": 751, - "name": "BYTE", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "73" - }, - { - "begin": 65, - "end": 751, - "name": "EQ", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH [tag]", - "source": 17, - "value": "1" - }, - { - "begin": 65, - "end": 751, - "name": "JUMPI", - "source": 17 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "0" - }, - { - "begin": 65, - "end": 751, - "name": "MSTORE", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "0" - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "4" - }, - { - "begin": 65, - "end": 751, - "name": "MSTORE", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "24" - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "0" - }, - { - "begin": 65, - "end": 751, - "name": "REVERT", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "tag", - "source": 17, - "value": "1" - }, - { - "begin": 65, - "end": 751, - "name": "JUMPDEST", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "ADDRESS", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "0" - }, - { - "begin": 65, - "end": 751, - "name": "MSTORE", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "73" - }, - { - "begin": 65, - "end": 751, - "name": "DUP2", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "MSTORE8", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "DUP3", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "DUP2", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "RETURN", - "source": 17 - } - ], - ".data": { - "0": { - ".auxdata": "a26469706673582212208609e09d11153aed5ba8eb4ae9c6915a536fd4523605bce53bc4a2f1e304f84264736f6c63430008120033", - ".code": [ - { - "begin": 65, - "end": 751, - "name": "PUSHDEPLOYADDRESS", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "ADDRESS", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "EQ", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "80" - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "40" - }, - { - "begin": 65, - "end": 751, - "name": "MSTORE", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "PUSH", - "source": 17, - "value": "0" - }, - { - "begin": 65, - "end": 751, - "name": "DUP1", - "source": 17 - }, - { - "begin": 65, - "end": 751, - "name": "REVERT", - "source": 17 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol\":\"SubModuleNonce\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol\":{\"keccak256\":\"0x98520e740b0822ec053d21f376b8be8a58e93228f3758f9228a7d00e1f60950f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://31226706c004f1a4315d6b8d37621b46f4d5807c16e1ce72675c1431ed9006a2\",\"dweb:/ipfs/QmdSSyCuPex2E2VTd6UMYy9WAq9eJNZ6vHSUomntNknzXE\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol": { - "LibBytes": { - "abi": [], - "devdoc": { - "author": "Agustin Aguilar (aa@horizon.io)", - "details": "These functions do not check if the input index is within the bounds of the data array. Reading out of bounds may return dirty values.", - "kind": "dev", - "methods": {}, - "title": "Library for reading data from bytes arrays", - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":405:2096 library LibBytes {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":405:2096 library LibBytes {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220b00d0cee4061dc303d853fadda969d1de6324d7d0f32be48bae08404d30b621f64736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b00d0cee4061dc303d853fadda969d1de6324d7d0f32be48bae08404d30b621f64736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xD 0xC 0xEE BLOCKHASH PUSH2 0xDC30 RETURNDATASIZE DUP6 EXTCODEHASH 0xAD 0xDA SWAP7 SWAP14 SAR 0xE6 ORIGIN 0x4D PUSH30 0xF32BE48BAE08404D30B621F64736F6C6343000812003300000000000000 ", - "sourceMap": "405:1691:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;405:1691:18;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b00d0cee4061dc303d853fadda969d1de6324d7d0f32be48bae08404d30b621f64736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xD 0xC 0xEE BLOCKHASH PUSH2 0xDC30 RETURNDATASIZE DUP6 EXTCODEHASH 0xAD 0xDA SWAP7 SWAP14 SAR 0xE6 ORIGIN 0x4D PUSH30 0xF32BE48BAE08404D30B621F64736F6C6343000812003300000000000000 ", - "sourceMap": "405:1691:18:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "readBytes32(bytes calldata,uint256)": "infinite", - "readFirstUint16(bytes calldata)": "infinite", - "readUint32(bytes calldata,uint256)": "infinite", - "readUint8(bytes calldata,uint256)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 405, - "end": 2096, - "name": "PUSH #[$]", - "source": 18, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH [$]", - "source": 18, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "B" - }, - { - "begin": 405, - "end": 2096, - "name": "DUP3", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "DUP3", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "DUP3", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "CODECOPY", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "DUP1", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "MLOAD", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "0" - }, - { - "begin": 405, - "end": 2096, - "name": "BYTE", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "73" - }, - { - "begin": 405, - "end": 2096, - "name": "EQ", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH [tag]", - "source": 18, - "value": "1" - }, - { - "begin": 405, - "end": 2096, - "name": "JUMPI", - "source": 18 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "0" - }, - { - "begin": 405, - "end": 2096, - "name": "MSTORE", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "0" - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "4" - }, - { - "begin": 405, - "end": 2096, - "name": "MSTORE", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "24" - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "0" - }, - { - "begin": 405, - "end": 2096, - "name": "REVERT", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "tag", - "source": 18, - "value": "1" - }, - { - "begin": 405, - "end": 2096, - "name": "JUMPDEST", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "ADDRESS", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "0" - }, - { - "begin": 405, - "end": 2096, - "name": "MSTORE", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "73" - }, - { - "begin": 405, - "end": 2096, - "name": "DUP2", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "MSTORE8", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "DUP3", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "DUP2", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "RETURN", - "source": 18 - } - ], - ".data": { - "0": { - ".auxdata": "a2646970667358221220b00d0cee4061dc303d853fadda969d1de6324d7d0f32be48bae08404d30b621f64736f6c63430008120033", - ".code": [ - { - "begin": 405, - "end": 2096, - "name": "PUSHDEPLOYADDRESS", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "ADDRESS", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "EQ", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "80" - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "40" - }, - { - "begin": 405, - "end": 2096, - "name": "MSTORE", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "PUSH", - "source": 18, - "value": "0" - }, - { - "begin": 405, - "end": 2096, - "name": "DUP1", - "source": 18 - }, - { - "begin": 405, - "end": 2096, - "name": "REVERT", - "source": 18 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar (aa@horizon.io)\",\"details\":\"These functions do not check if the input index is within the bounds of the data array. Reading out of bounds may return dirty values.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for reading data from bytes arrays\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions for reading data from bytes arrays.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":\"LibBytes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":{\"keccak256\":\"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98\",\"dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "notice": "This library contains functions for reading data from bytes arrays.", - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol": { - "LibBytesPointer": { - "abi": [], - "devdoc": { - "author": "Agustin Aguilar (aa@horizon.io)", - "details": "These functions do not check if the input index is within the bounds of the data array. Reading out of bounds may return dirty values.", - "kind": "dev", - "methods": {}, - "title": "Library for reading data from bytes arrays with a pointer", - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":435:4565 library LibBytesPointer {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":435:4565 library LibBytesPointer {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220d0f4a33b1bd37a24b174a2b3b0b481e96309d638af5db4e4de3ac1de1aa243ff64736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d0f4a33b1bd37a24b174a2b3b0b481e96309d638af5db4e4de3ac1de1aa243ff64736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD0 DELEGATECALL LOG3 EXTCODESIZE SHL 0xD3 PUSH27 0x24B174A2B3B0B481E96309D638AF5DB4E4DE3AC1DE1AA243FF6473 PUSH16 0x6C634300081200330000000000000000 ", - "sourceMap": "435:4130:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;435:4130:19;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d0f4a33b1bd37a24b174a2b3b0b481e96309d638af5db4e4de3ac1de1aa243ff64736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD0 DELEGATECALL LOG3 EXTCODESIZE SHL 0xD3 PUSH27 0x24B174A2B3B0B481E96309D638AF5DB4E4DE3AC1DE1AA243FF6473 PUSH16 0x6C634300081200330000000000000000 ", - "sourceMap": "435:4130:19:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "readBytes32(bytes calldata,uint256)": "infinite", - "readFirstUint16(bytes calldata)": "infinite", - "readUint16(bytes calldata,uint256)": "infinite", - "readUint24(bytes calldata,uint256)": "infinite", - "readUint64(bytes calldata,uint256)": "infinite", - "readUint8(bytes calldata,uint256)": "infinite", - "readUint8Address(bytes calldata,uint256)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 435, - "end": 4565, - "name": "PUSH #[$]", - "source": 19, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH [$]", - "source": 19, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "B" - }, - { - "begin": 435, - "end": 4565, - "name": "DUP3", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "DUP3", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "DUP3", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "CODECOPY", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "DUP1", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "MLOAD", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "0" - }, - { - "begin": 435, - "end": 4565, - "name": "BYTE", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "73" - }, - { - "begin": 435, - "end": 4565, - "name": "EQ", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH [tag]", - "source": 19, - "value": "1" - }, - { - "begin": 435, - "end": 4565, - "name": "JUMPI", - "source": 19 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "0" - }, - { - "begin": 435, - "end": 4565, - "name": "MSTORE", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "0" - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "4" - }, - { - "begin": 435, - "end": 4565, - "name": "MSTORE", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "24" - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "0" - }, - { - "begin": 435, - "end": 4565, - "name": "REVERT", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "tag", - "source": 19, - "value": "1" - }, - { - "begin": 435, - "end": 4565, - "name": "JUMPDEST", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "ADDRESS", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "0" - }, - { - "begin": 435, - "end": 4565, - "name": "MSTORE", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "73" - }, - { - "begin": 435, - "end": 4565, - "name": "DUP2", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "MSTORE8", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "DUP3", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "DUP2", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "RETURN", - "source": 19 - } - ], - ".data": { - "0": { - ".auxdata": "a2646970667358221220d0f4a33b1bd37a24b174a2b3b0b481e96309d638af5db4e4de3ac1de1aa243ff64736f6c63430008120033", - ".code": [ - { - "begin": 435, - "end": 4565, - "name": "PUSHDEPLOYADDRESS", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "ADDRESS", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "EQ", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "80" - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "40" - }, - { - "begin": 435, - "end": 4565, - "name": "MSTORE", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "PUSH", - "source": 19, - "value": "0" - }, - { - "begin": 435, - "end": 4565, - "name": "DUP1", - "source": 19 - }, - { - "begin": 435, - "end": 4565, - "name": "REVERT", - "source": 19 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar (aa@horizon.io)\",\"details\":\"These functions do not check if the input index is within the bounds of the data array. Reading out of bounds may return dirty values.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for reading data from bytes arrays with a pointer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions for reading data from bytes arrays with a pointer.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":\"LibBytesPointer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol\":{\"keccak256\":\"0xbda56396592db18a248d4062cd36abd586a11d92a2d25483d8c597f890859b15\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a6ee93bcb7ccd1d1b8979c9530b1ca452d0757794995b62793b6e197670b9f25\",\"dweb:/ipfs/QmbNkhTPzF1YgU4Qgu4SRFXZ8AwFjyG18EzuMZ32anrQ4Y\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "notice": "This library contains functions for reading data from bytes arrays with a pointer.", - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol": { - "LibOptim": { - "abi": [], - "devdoc": { - "author": "Agustin Aguilar (aa@horizon.io)", - "kind": "dev", - "methods": {}, - "title": "Library for optimized EVM operations", - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":244:2587 library LibOptim {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":244:2587 library LibOptim {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212205f4f74640fb3a38d4d73f90f221f7f681ee2035d59f6b9d140c2e9aad1ae2bac64736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205f4f74640fb3a38d4d73f90f221f7f681ee2035d59f6b9d140c2e9aad1ae2bac64736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0x4F PUSH21 0x640FB3A38D4D73F90F221F7F681EE2035D59F6B9D1 BLOCKHASH 0xC2 0xE9 0xAA 0xD1 0xAE 0x2B 0xAC PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "244:2343:20:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;244:2343:20;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205f4f74640fb3a38d4d73f90f221f7f681ee2035d59f6b9d140c2e9aad1ae2bac64736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F 0x4F PUSH21 0x640FB3A38D4D73F90F221F7F681EE2035D59F6B9D1 BLOCKHASH 0xC2 0xE9 0xAA 0xD1 0xAE 0x2B 0xAC PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ", - "sourceMap": "244:2343:20:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "call(address,uint256,uint256,bytes calldata)": "infinite", - "delegatecall(address,uint256,bytes calldata)": "infinite", - "fkeccak256(bytes32,bytes32)": "infinite", - "returnData()": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 244, - "end": 2587, - "name": "PUSH #[$]", - "source": 20, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH [$]", - "source": 20, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "B" - }, - { - "begin": 244, - "end": 2587, - "name": "DUP3", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "DUP3", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "DUP3", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "CODECOPY", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "DUP1", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "MLOAD", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 244, - "end": 2587, - "name": "BYTE", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "73" - }, - { - "begin": 244, - "end": 2587, - "name": "EQ", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH [tag]", - "source": 20, - "value": "1" - }, - { - "begin": 244, - "end": 2587, - "name": "JUMPI", - "source": 20 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 244, - "end": 2587, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "4" - }, - { - "begin": 244, - "end": 2587, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "24" - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 244, - "end": 2587, - "name": "REVERT", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "tag", - "source": 20, - "value": "1" - }, - { - "begin": 244, - "end": 2587, - "name": "JUMPDEST", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "ADDRESS", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 244, - "end": 2587, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "73" - }, - { - "begin": 244, - "end": 2587, - "name": "DUP2", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "MSTORE8", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "DUP3", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "DUP2", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "RETURN", - "source": 20 - } - ], - ".data": { - "0": { - ".auxdata": "a26469706673582212205f4f74640fb3a38d4d73f90f221f7f681ee2035d59f6b9d140c2e9aad1ae2bac64736f6c63430008120033", - ".code": [ - { - "begin": 244, - "end": 2587, - "name": "PUSHDEPLOYADDRESS", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "ADDRESS", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "EQ", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "80" - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "40" - }, - { - "begin": 244, - "end": 2587, - "name": "MSTORE", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "PUSH", - "source": 20, - "value": "0" - }, - { - "begin": 244, - "end": 2587, - "name": "DUP1", - "source": 20 - }, - { - "begin": 244, - "end": 2587, - "name": "REVERT", - "source": 20 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar (aa@horizon.io)\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for optimized EVM operations\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions for optimizing certain EVM operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":\"LibOptim\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol\":{\"keccak256\":\"0x4c558b8c9d0dff2322d5d812e83a3abe25a9e60c8f646507f8a9c7fa2a2453af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6f0796c75d117770e220c136b60d96b5cf1d4875ccbbd0afb564ed27aa220335\",\"dweb:/ipfs/QmQxYm6CMCqJiKsB3sguqWu8rggmaQgpuq8BZhAEveqNAM\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "notice": "This library contains functions for optimizing certain EVM operations.", - "version": 1 - } - } - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol": { - "SignatureValidator": { - "abi": [ - { - "inputs": [], - "name": "EmptySignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "_s", - "type": "bytes32" - } - ], - "name": "InvalidSValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "InvalidSignatureLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_v", - "type": "uint256" - } - ], - "name": "InvalidVValue", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "SignerIsAddress0", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_type", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "_recoverMode", - "type": "bool" - } - ], - "name": "UnsupportedSignatureType", - "type": "error" - } - ], - "devdoc": { - "details": "Contains logic for signature validation. Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md) Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/", - "kind": "dev", - "methods": {}, - "version": 1 - }, - "evm": { - "assembly": " /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":430:5364 library SignatureValidator {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, shl(0xe0, 0x4e487b71))\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":430:5364 library SignatureValidator {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212207a75fc4c1f66fe757bfffc4be7a9fe45a8e63a8665fbf6a76ca76ea37740ce0c64736f6c63430008120033\n}\n", - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207a75fc4c1f66fe757bfffc4be7a9fe45a8e63a8665fbf6a76ca76ea37740ce0c64736f6c63430008120033", - "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0x75FC4C1F66FE757BFFFC4BE7A9FE45A8E63A8665FBF6A76CA76EA3 PUSH24 0x40CE0C64736F6C6343000812003300000000000000000000 ", - "sourceMap": "430:4934:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;430:4934:21;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207a75fc4c1f66fe757bfffc4be7a9fe45a8e63a8665fbf6a76ca76ea37740ce0c64736f6c63430008120033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0x75FC4C1F66FE757BFFFC4BE7A9FE45A8E63A8665FBF6A76CA76EA3 PUSH24 0x40CE0C64736F6C6343000812003300000000000000000000 ", - "sourceMap": "430:4934:21:-:0;;;;;;;;" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "17200", - "executionCost": "103", - "totalCost": "17303" - }, - "internal": { - "isValidSignature(bytes32,address,bytes calldata)": "infinite", - "recoverSigner(bytes32,bytes calldata)": "infinite" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 430, - "end": 5364, - "name": "PUSH #[$]", - "source": 21, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH [$]", - "source": 21, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "B" - }, - { - "begin": 430, - "end": 5364, - "name": "DUP3", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "DUP3", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "DUP3", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "CODECOPY", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "DUP1", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "MLOAD", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 430, - "end": 5364, - "name": "BYTE", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "73" - }, - { - "begin": 430, - "end": 5364, - "name": "EQ", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH [tag]", - "source": 21, - "value": "1" - }, - { - "begin": 430, - "end": 5364, - "name": "JUMPI", - "source": 21 - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "4E487B71" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "source": -1, - "value": "E0" - }, - { - "begin": -1, - "end": -1, - "name": "SHL", - "source": -1 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 430, - "end": 5364, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "4" - }, - { - "begin": 430, - "end": 5364, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "24" - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 430, - "end": 5364, - "name": "REVERT", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "tag", - "source": 21, - "value": "1" - }, - { - "begin": 430, - "end": 5364, - "name": "JUMPDEST", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "ADDRESS", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 430, - "end": 5364, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "73" - }, - { - "begin": 430, - "end": 5364, - "name": "DUP2", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "MSTORE8", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "DUP3", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "DUP2", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "RETURN", - "source": 21 - } - ], - ".data": { - "0": { - ".auxdata": "a26469706673582212207a75fc4c1f66fe757bfffc4be7a9fe45a8e63a8665fbf6a76ca76ea37740ce0c64736f6c63430008120033", - ".code": [ - { - "begin": 430, - "end": 5364, - "name": "PUSHDEPLOYADDRESS", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "ADDRESS", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "EQ", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "80" - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "40" - }, - { - "begin": 430, - "end": 5364, - "name": "MSTORE", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "PUSH", - "source": 21, - "value": "0" - }, - { - "begin": 430, - "end": 5364, - "name": "DUP1", - "source": 21 - }, - { - "begin": 430, - "end": 5364, - "name": "REVERT", - "source": 21 - } - ] - } - }, - "sourceList": [ - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "#utility.yul" - ] - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EmptySignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"InvalidSValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_v\",\"type\":\"uint256\"}],\"name\":\"InvalidVValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"SignerIsAddress0\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_type\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_recoverMode\",\"type\":\"bool\"}],\"name\":\"UnsupportedSignatureType\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Contains logic for signature validation. Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md) Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":\"SignatureValidator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":500000},\"remappings\":[\":@0xsequence/contracts-library/=src/\",\":@0xsequence/erc-1155/=lib/0xsequence/erc-1155/src/\",\":@0xsequence/erc20-meta-token/=lib/0xsequence/erc20-meta-token/src/\",\":@openzeppelin/=lib/openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc721a-upgradeable/=lib/chiru-labs/erc721a-upgradeable/\",\":erc721a/=lib/chiru-labs/erc721a/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol\":{\"keccak256\":\"0x2d7881bca678833feb385fd59e5d8ad6d596160ab51daa7030372654b3dbc38c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://010f44c05b7285a55de939f9989727d53dfb87fd2d2534a832a70e0e081bb5f1\",\"dweb:/ipfs/QmQcujWErxjktsKyyiTySaFuR7Vaq6fUA9SUzPkde2txVK\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol\":{\"keccak256\":\"0xd780faf34527a323c96577c57370d175a2b6149db7ebea0937592eb389e52805\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7a41a47e72f5761d912367c041ddab41620175d63059ad71ff681a87d8cf0e98\",\"dweb:/ipfs/QmfEFuLaVyx9vQc83dS48wTcLtbBiWTNMdHSi5hAWA379i\"]},\"sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol\":{\"keccak256\":\"0x7ac5dd35cbc776693eecfd8e7e86af139c7b054c43be4f97e6c8929417c17dba\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4a452d8acad5246538ac352887081d732098dcab869c79a43a5f916e7e76f353\",\"dweb:/ipfs/QmeazDSxfKBSGyCGjmk7G79UbvYMRcbr2eUU9ThyqSvNhv\"]}},\"version\":1}", - "storageLayout": { - "storage": [], - "types": null - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - } - } - }, - "sources": { - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "exportedSymbols": { - "IERC1271Wallet": [ - 22 - ] - }, - "id": 23, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:0" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IERC1271Wallet", - "contractDependencies": [], - "contractKind": "interface", - "fullyImplemented": false, - "id": 22, - "linearizedBaseContracts": [ - 22 - ], - "name": "IERC1271Wallet", - "nameLocation": "75:14:0", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 2, - "nodeType": "StructuredDocumentation", - "src": "95:633:0", - "text": " @notice Verifies whether the provided signature is valid with respect to the provided data\n @dev MUST return the correct magic value if the signature provided is valid for the provided data\n > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n > This function MAY modify Ethereum's state\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data\n @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise" - }, - "functionSelector": "20c13b0b", - "id": 11, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "isValidSignature", - "nameLocation": "740:16:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4, - "mutability": "mutable", - "name": "_data", - "nameLocation": "777:5:0", - "nodeType": "VariableDeclaration", - "scope": 11, - "src": "762:20:0", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "762:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "803:10:0", - "nodeType": "VariableDeclaration", - "scope": 11, - "src": "788:25:0", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 5, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "788:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "756:58:0" - }, - "returnParameters": { - "id": 10, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9, - "mutability": "mutable", - "name": "magicValue", - "nameLocation": "857:10:0", - "nodeType": "VariableDeclaration", - "scope": 11, - "src": "850:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 8, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "850:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "849:19:0" - }, - "scope": 22, - "src": "731:138:0", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 12, - "nodeType": "StructuredDocumentation", - "src": "873:604:0", - "text": " @notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n > This function MAY modify Ethereum's state\n @param _hash keccak256 hash that was signed\n @param _signature Signature byte array associated with _data\n @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise" - }, - "functionSelector": "1626ba7e", - "id": 21, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "isValidSignature", - "nameLocation": "1489:16:0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 17, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 14, - "mutability": "mutable", - "name": "_hash", - "nameLocation": "1519:5:0", - "nodeType": "VariableDeclaration", - "scope": 21, - "src": "1511:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 13, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1511:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 16, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "1545:10:0", - "nodeType": "VariableDeclaration", - "scope": 21, - "src": "1530:25:0", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 15, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1530:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1505:51:0" - }, - "returnParameters": { - "id": 20, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 19, - "mutability": "mutable", - "name": "magicValue", - "nameLocation": "1599:10:0", - "nodeType": "VariableDeclaration", - "scope": 21, - "src": "1592:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 18, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "1592:6:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "1591:19:0" - }, - "scope": 22, - "src": "1480:131:0", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 23, - "src": "65:1548:0", - "usedErrors": [] - } - ], - "src": "39:1574:0" - }, - "id": 0 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/GuestModule.sol", - "exportedSymbols": { - "GuestModule": [ - 241 - ], - "IERC1271Wallet": [ - 22 - ], - "IModuleAuth": [ - 1249 - ], - "IModuleCalls": [ - 1313 - ], - "IModuleCreator": [ - 1328 - ], - "LibBytes": [ - 2374 - ], - "LibBytesPointer": [ - 2476 - ], - "LibOptim": [ - 2530 - ], - "ModuleAuth": [ - 564 - ], - "ModuleCalls": [ - 833 - ], - "ModuleCreator": [ - 902 - ], - "ModuleERC165": [ - 920 - ], - "ModuleNonce": [ - 1051 - ], - "ModuleOnlyDelegatecall": [ - 1085 - ], - "ModuleSelfAuth": [ - 1116 - ], - "ModuleStorage": [ - 1179 - ], - "SequenceBaseSig": [ - 2021 - ], - "SequenceChainedSig": [ - 2218 - ], - "SequenceDynamicSig": [ - 2247 - ], - "SequenceNoChainIdSig": [ - 2275 - ], - "SignatureValidator": [ - 2798 - ], - "SubModuleNonce": [ - 2324 - ] - }, - "id": 242, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 24, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:1" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "file": "../utils/LibOptim.sol", - "id": 25, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 242, - "sourceUnit": 2531, - "src": "64:31:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "file": "./commons/submodules/auth/SequenceBaseSig.sol", - "id": 26, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 242, - "sourceUnit": 2022, - "src": "97:55:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "file": "./commons/ModuleAuth.sol", - "id": 27, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 242, - "sourceUnit": 565, - "src": "154:34:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "file": "./commons/ModuleCalls.sol", - "id": 28, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 242, - "sourceUnit": 834, - "src": "189:35:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "file": "./commons/ModuleCreator.sol", - "id": 29, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 242, - "sourceUnit": 903, - "src": "225:37:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 31, - "name": "ModuleAuth", - "nameLocations": [ - "666:10:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 564, - "src": "666:10:1" - }, - "id": 32, - "nodeType": "InheritanceSpecifier", - "src": "666:10:1" - }, - { - "baseName": { - "id": 33, - "name": "ModuleCalls", - "nameLocations": [ - "680:11:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 833, - "src": "680:11:1" - }, - "id": 34, - "nodeType": "InheritanceSpecifier", - "src": "680:11:1" - }, - { - "baseName": { - "id": 35, - "name": "ModuleCreator", - "nameLocations": [ - "695:13:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 902, - "src": "695:13:1" - }, - "id": 36, - "nodeType": "InheritanceSpecifier", - "src": "695:13:1" - } - ], - "canonicalName": "GuestModule", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 30, - "nodeType": "StructuredDocumentation", - "src": "265:374:1", - "text": " GuestModule implements a Sequence wallet without signatures, nonce or replay protection.\n executing transactions using this wallet is not an authenticated process, and can be done by any address.\n @notice This contract is completely public with no security, designed to execute pre-signed transactions\n and use Sequence tools without using the wallets." - }, - "fullyImplemented": true, - "id": 241, - "linearizedBaseContracts": [ - 241, - 902, - 833, - 1051, - 564, - 2218, - 1116, - 1085, - 22, - 920, - 1328, - 1249, - 1313 - ], - "name": "GuestModule", - "nameLocation": "649:11:1", - "nodeType": "ContractDefinition", - "nodes": [ - { - "errorSelector": "230d1ccc", - "id": 40, - "name": "DelegateCallNotAllowed", - "nameLocation": "719:22:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 39, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 38, - "mutability": "mutable", - "name": "_index", - "nameLocation": "750:6:1", - "nodeType": "VariableDeclaration", - "scope": 40, - "src": "742:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 37, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "742:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "741:16:1" - }, - "src": "713:45:1" - }, - { - "errorSelector": "a0387940", - "id": 42, - "name": "NotSupported", - "nameLocation": "767:12:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 41, - "nodeType": "ParameterList", - "parameters": [], - "src": "779:2:1" - }, - "src": "761:21:1" - }, - { - "baseFunctions": [ - 637 - ], - "body": { - "id": 73, - "nodeType": "Block", - "src": "993:189:1", - "statements": [ - { - "assignments": [ - 56 - ], - "declarations": [ - { - "constant": false, - "id": 56, - "mutability": "mutable", - "name": "txHash", - "nameLocation": "1038:6:1", - "nodeType": "VariableDeclaration", - "scope": 73, - "src": "1030:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 55, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1030:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 67, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "hexValue": "67756573743a", - "id": 62, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1094:8:1", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4dfa0bed92fb5c2df0b47ce555e6e6b89f746e856aa9783c634a4987edcbf682", - "typeString": "literal_string \"guest:\"" - }, - "value": "guest:" - }, - { - "id": 63, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "1104:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_4dfa0bed92fb5c2df0b47ce555e6e6b89f746e856aa9783c634a4987edcbf682", - "typeString": "literal_string \"guest:\"" - }, - { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - ], - "expression": { - "id": 60, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "1083:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 61, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1087:6:1", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "1083:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 64, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1083:26:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 59, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "1073:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1073:37:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 57, - "name": "SequenceBaseSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2021, - "src": "1047:15:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceBaseSig_$2021_$", - "typeString": "type(library SequenceBaseSig)" - } - }, - "id": 58, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1063:9:1", - "memberName": "subdigest", - "nodeType": "MemberAccess", - "referencedDeclaration": 1394, - "src": "1047:25:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) view returns (bytes32)" - } - }, - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1047:64:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1030:81:1" - }, - { - "expression": { - "arguments": [ - { - "id": 69, - "name": "txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "1164:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 70, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "1172:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - ], - "id": 68, - "name": "_executeGuest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 199, - "src": "1150:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (bytes32,struct IModuleCalls.Transaction calldata[] calldata)" - } - }, - "id": 71, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1150:27:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 72, - "nodeType": "ExpressionStatement", - "src": "1150:27:1" - } - ] - }, - "documentation": { - "id": 43, - "nodeType": "StructuredDocumentation", - "src": "786:101:1", - "text": " @notice Allow any caller to execute an action\n @param _txs Transactions to process" - }, - "functionSelector": "7a9a1628", - "id": 74, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "execute", - "nameLocation": "899:7:1", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 53, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "984:8:1" - }, - "parameters": { - "id": 52, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 47, - "mutability": "mutable", - "name": "_txs", - "nameLocation": "935:4:1", - "nodeType": "VariableDeclaration", - "scope": 74, - "src": "912:27:1", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - }, - "typeName": { - "baseType": { - "id": 45, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 44, - "name": "Transaction", - "nameLocations": [ - "912:11:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "912:11:1" - }, - "referencedDeclaration": 1292, - "src": "912:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "id": 46, - "nodeType": "ArrayTypeName", - "src": "912:13:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_storage_$dyn_storage_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 49, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 74, - "src": "945:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 48, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "945:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 51, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 74, - "src": "958:14:1", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 50, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "958:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "906:70:1" - }, - "returnParameters": { - "id": 54, - "nodeType": "ParameterList", - "parameters": [], - "src": "993:0:1" - }, - "scope": 241, - "src": "890:292:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [ - 667 - ], - "body": { - "id": 101, - "nodeType": "Block", - "src": "1364:188:1", - "statements": [ - { - "assignments": [ - 84 - ], - "declarations": [ - { - "constant": false, - "id": 84, - "mutability": "mutable", - "name": "txHash", - "nameLocation": "1409:6:1", - "nodeType": "VariableDeclaration", - "scope": 101, - "src": "1401:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 83, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1401:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 95, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "hexValue": "73656c663a", - "id": 90, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1465:7:1", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845", - "typeString": "literal_string \"self:\"" - }, - "value": "self:" - }, - { - "id": 91, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "1474:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845", - "typeString": "literal_string \"self:\"" - }, - { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - ], - "expression": { - "id": 88, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "1454:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 89, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1458:6:1", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "1454:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 92, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1454:25:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 87, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "1444:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 93, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1444:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 85, - "name": "SequenceBaseSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2021, - "src": "1418:15:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceBaseSig_$2021_$", - "typeString": "type(library SequenceBaseSig)" - } - }, - "id": 86, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1434:9:1", - "memberName": "subdigest", - "nodeType": "MemberAccess", - "referencedDeclaration": 1394, - "src": "1418:25:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) view returns (bytes32)" - } - }, - "id": 94, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1418:63:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1401:80:1" - }, - { - "expression": { - "arguments": [ - { - "id": 97, - "name": "txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 84, - "src": "1534:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 98, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "1542:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - ], - "id": 96, - "name": "_executeGuest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 199, - "src": "1520:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (bytes32,struct IModuleCalls.Transaction calldata[] calldata)" - } - }, - "id": 99, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1520:27:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 100, - "nodeType": "ExpressionStatement", - "src": "1520:27:1" - } - ] - }, - "documentation": { - "id": 75, - "nodeType": "StructuredDocumentation", - "src": "1186:101:1", - "text": " @notice Allow any caller to execute an action\n @param _txs Transactions to process" - }, - "functionSelector": "61c2926c", - "id": 102, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "selfExecute", - "nameLocation": "1299:11:1", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 81, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1355:8:1" - }, - "parameters": { - "id": 80, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 79, - "mutability": "mutable", - "name": "_txs", - "nameLocation": "1339:4:1", - "nodeType": "VariableDeclaration", - "scope": 102, - "src": "1316:27:1", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - }, - "typeName": { - "baseType": { - "id": 77, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 76, - "name": "Transaction", - "nameLocations": [ - "1316:11:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "1316:11:1" - }, - "referencedDeclaration": 1292, - "src": "1316:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "id": 78, - "nodeType": "ArrayTypeName", - "src": "1316:13:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_storage_$dyn_storage_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - } - }, - "visibility": "internal" - } - ], - "src": "1310:37:1" - }, - "returnParameters": { - "id": 82, - "nodeType": "ParameterList", - "parameters": [], - "src": "1364:0:1" - }, - "scope": 241, - "src": "1290:262:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 198, - "nodeType": "Block", - "src": "1799:745:1", - "statements": [ - { - "assignments": [ - 113 - ], - "declarations": [ - { - "constant": false, - "id": 113, - "mutability": "mutable", - "name": "size", - "nameLocation": "1840:4:1", - "nodeType": "VariableDeclaration", - "scope": 198, - "src": "1832:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 112, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1832:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 116, - "initialValue": { - "expression": { - "id": 114, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "1847:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - }, - "id": 115, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1852:6:1", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1847:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1832:26:1" - }, - { - "body": { - "id": 196, - "nodeType": "Block", - "src": "1899:641:1", - "statements": [ - { - "assignments": [ - 129 - ], - "declarations": [ - { - "constant": false, - "id": 129, - "mutability": "mutable", - "name": "transaction", - "nameLocation": "1928:11:1", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "1907:32:1", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction" - }, - "typeName": { - "id": 128, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 127, - "name": "Transaction", - "nameLocations": [ - "1907:11:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "1907:11:1" - }, - "referencedDeclaration": 1292, - "src": "1907:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "visibility": "internal" - } - ], - "id": 133, - "initialValue": { - "baseExpression": { - "id": 130, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "1942:4:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - }, - "id": 132, - "indexExpression": { - "id": 131, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "1947:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1942:7:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1907:42:1" - }, - { - "condition": { - "expression": { - "id": 134, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "1962:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1974:12:1", - "memberName": "delegateCall", - "nodeType": "MemberAccess", - "referencedDeclaration": 1281, - "src": "1962:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 140, - "nodeType": "IfStatement", - "src": "1958:62:1", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 137, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "2018:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 136, - "name": "DelegateCallNotAllowed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "1995:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", - "typeString": "function (uint256) pure" - } - }, - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1995:25:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 139, - "nodeType": "RevertStatement", - "src": "1988:32:1" - } - }, - { - "assignments": [ - 142 - ], - "declarations": [ - { - "constant": false, - "id": 142, - "mutability": "mutable", - "name": "gasLimit", - "nameLocation": "2037:8:1", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "2029:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 141, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2029:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 145, - "initialValue": { - "expression": { - "id": 143, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "2048:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2060:8:1", - "memberName": "gasLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1285, - "src": "2048:20:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2029:39:1" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 146, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967289, - "src": "2080:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 147, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2080:9:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 148, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 142, - "src": "2092:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2080:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 157, - "nodeType": "IfStatement", - "src": "2076:69:1", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 151, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "2122:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 152, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 142, - "src": "2125:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 153, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967289, - "src": "2135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2135:9:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 150, - "name": "NotEnoughGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1273, - "src": "2109:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256,uint256) pure" - } - }, - "id": 155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2109:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 156, - "nodeType": "RevertStatement", - "src": "2102:43:1" - } - }, - { - "assignments": [ - 159 - ], - "declarations": [ - { - "constant": false, - "id": 159, - "mutability": "mutable", - "name": "success", - "nameLocation": "2159:7:1", - "nodeType": "VariableDeclaration", - "scope": 196, - "src": "2154:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 158, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2154:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 176, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 162, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "2192:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2204:6:1", - "memberName": "target", - "nodeType": "MemberAccess", - "referencedDeclaration": 1287, - "src": "2192:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 164, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "2220:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2232:5:1", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 1289, - "src": "2220:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 168, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 166, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 142, - "src": "2247:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 167, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2259:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2247:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 171, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 142, - "src": "2275:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "2247:36:1", - "trueExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 169, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967289, - "src": "2263:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2263:9:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 173, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "2293:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2305:4:1", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 1291, - "src": "2293:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 160, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "2169:8:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2178:4:1", - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": 2515, - "src": "2169:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,uint256,bytes calldata) returns (bool)" - } - }, - "id": 175, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2169:148:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2154:163:1" - }, - { - "condition": { - "id": 177, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 159, - "src": "2330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 194, - "nodeType": "Block", - "src": "2391:143:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 185, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "2425:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2437:13:1", - "memberName": "revertOnError", - "nodeType": "MemberAccess", - "referencedDeclaration": 1283, - "src": "2425:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 187, - "name": "_txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "2462:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 188, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "2481:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 189, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "2494:8:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 190, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2503:10:1", - "memberName": "returnData", - "nodeType": "MemberAccess", - "referencedDeclaration": 2499, - "src": "2494:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 191, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2494:21:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 184, - "name": "_revertBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 807, - "src": "2401:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bool,bytes32,uint256,bytes memory)" - } - }, - "id": 192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2401:124:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 193, - "nodeType": "ExpressionStatement", - "src": "2401:124:1" - } - ] - }, - "id": 195, - "nodeType": "IfStatement", - "src": "2326:208:1", - "trueBody": { - "id": 183, - "nodeType": "Block", - "src": "2339:46:1", - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 179, - "name": "_txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "2365:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 180, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "2374:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 178, - "name": "TxExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1265, - "src": "2354:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", - "typeString": "function (bytes32,uint256)" - } - }, - "id": 181, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2354:22:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 182, - "nodeType": "EmitStatement", - "src": "2349:27:1" - } - ] - } - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 123, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 121, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "1884:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 122, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "1888:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1884:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 197, - "initializationExpression": { - "assignments": [ - 118 - ], - "declarations": [ - { - "constant": false, - "id": 118, - "mutability": "mutable", - "name": "i", - "nameLocation": "1877:1:1", - "nodeType": "VariableDeclaration", - "scope": 197, - "src": "1869:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 117, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1869:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 120, - "initialValue": { - "hexValue": "30", - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1881:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1869:13:1" - }, - "loopExpression": { - "expression": { - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1894:3:1", - "subExpression": { - "id": 124, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118, - "src": "1894:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 126, - "nodeType": "ExpressionStatement", - "src": "1894:3:1" - }, - "nodeType": "ForStatement", - "src": "1864:676:1" - } - ] - }, - "documentation": { - "id": 103, - "nodeType": "StructuredDocumentation", - "src": "1556:151:1", - "text": " @notice Executes a list of transactions\n @param _txHash Hash of the batch of transactions\n @param _txs Transactions to execute" - }, - "id": 199, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_executeGuest", - "nameLocation": "1719:13:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 110, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 105, - "mutability": "mutable", - "name": "_txHash", - "nameLocation": "1746:7:1", - "nodeType": "VariableDeclaration", - "scope": 199, - "src": "1738:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 104, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1738:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 109, - "mutability": "mutable", - "name": "_txs", - "nameLocation": "1782:4:1", - "nodeType": "VariableDeclaration", - "scope": 199, - "src": "1759:27:1", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - }, - "typeName": { - "baseType": { - "id": 107, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 106, - "name": "Transaction", - "nameLocations": [ - "1759:11:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "1759:11:1" - }, - "referencedDeclaration": 1292, - "src": "1759:11:1", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "id": 108, - "nodeType": "ArrayTypeName", - "src": "1759:13:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_storage_$dyn_storage_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - } - }, - "visibility": "internal" - } - ], - "src": "1732:58:1" - }, - "returnParameters": { - "id": 111, - "nodeType": "ParameterList", - "parameters": [], - "src": "1799:0:1" - }, - "scope": 241, - "src": "1710:834:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "baseFunctions": [ - 1236 - ], - "body": { - "id": 210, - "nodeType": "Block", - "src": "2766:22:1", - "statements": [ - { - "expression": { - "hexValue": "74727565", - "id": 208, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2779:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 207, - "id": 209, - "nodeType": "Return", - "src": "2772:11:1" - } - ] - }, - "documentation": { - "id": 200, - "nodeType": "StructuredDocumentation", - "src": "2548:145:1", - "text": " @notice Validates any signature image, because the wallet is public and has no owner.\n @return true, all signatures are valid." - }, - "id": 211, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_isValidImage", - "nameLocation": "2705:13:1", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 204, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2737:8:1" - }, - "parameters": { - "id": 203, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 202, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 211, - "src": "2719:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 201, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2719:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2718:9:1" - }, - "returnParameters": { - "id": 207, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 206, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 211, - "src": "2760:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 205, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2760:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "2759:6:1" - }, - "scope": 241, - "src": "2696:92:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "baseFunctions": [ - 1248 - ], - "body": { - "id": 221, - "nodeType": "Block", - "src": "2885:32:1", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 218, - "name": "NotSupported", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 42, - "src": "2898:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2898:14:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 220, - "nodeType": "RevertStatement", - "src": "2891:21:1" - } - ] - }, - "documentation": { - "id": 212, - "nodeType": "StructuredDocumentation", - "src": "2792:29:1", - "text": " Not supported." - }, - "id": 222, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_updateImageHash", - "nameLocation": "2833:16:1", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 216, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2868:8:1" - }, - "parameters": { - "id": 215, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 214, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 222, - "src": "2850:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 213, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2850:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2849:9:1" - }, - "returnParameters": { - "id": 217, - "nodeType": "ParameterList", - "parameters": [], - "src": "2885:0:1" - }, - "scope": 241, - "src": "2824:93:1", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - }, - { - "baseFunctions": [ - 549, - 832, - 901 - ], - "body": { - "id": 239, - "nodeType": "Block", - "src": "3276:55:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 236, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 225, - "src": "3313:12:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "expression": { - "id": 234, - "name": "super", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967271, - "src": "3289:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_GuestModule_$241_$", - "typeString": "type(contract super GuestModule)" - } - }, - "id": 235, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3295:17:1", - "memberName": "supportsInterface", - "nodeType": "MemberAccess", - "referencedDeclaration": 901, - "src": "3289:23:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$", - "typeString": "function (bytes4) pure returns (bool)" - } - }, - "id": 237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3289:37:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 233, - "id": 238, - "nodeType": "Return", - "src": "3282:44:1" - } - ] - }, - "documentation": { - "id": 223, - "nodeType": "StructuredDocumentation", - "src": "2921:203:1", - "text": " @notice Query if a contract implements an interface\n @param _interfaceID The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID`" - }, - "functionSelector": "01ffc9a7", - "id": 240, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "supportsInterface", - "nameLocation": "3136:17:1", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 230, - "nodeType": "OverrideSpecifier", - "overrides": [ - { - "id": 227, - "name": "ModuleAuth", - "nameLocations": [ - "3205:10:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 564, - "src": "3205:10:1" - }, - { - "id": 228, - "name": "ModuleCalls", - "nameLocations": [ - "3221:11:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 833, - "src": "3221:11:1" - }, - { - "id": 229, - "name": "ModuleCreator", - "nameLocations": [ - "3238:13:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 902, - "src": "3238:13:1" - } - ], - "src": "3190:65:1" - }, - "parameters": { - "id": 226, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 225, - "mutability": "mutable", - "name": "_interfaceID", - "nameLocation": "3166:12:1", - "nodeType": "VariableDeclaration", - "scope": 240, - "src": "3159:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 224, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3159:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "3153:29:1" - }, - "returnParameters": { - "id": 233, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 232, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 240, - "src": "3270:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 231, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3270:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "3269:6:1" - }, - "scope": 241, - "src": "3127:204:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "public" - } - ], - "scope": 242, - "src": "640:2693:1", - "usedErrors": [ - 40, - 42, - 938, - 1057, - 1093, - 1193, - 1197, - 1273, - 1279, - 1319, - 1367, - 1371, - 2050, - 2056, - 2539, - 2541, - 2547, - 2553, - 2561, - 2565 - ] - } - ], - "src": "39:3295:1" - }, - "id": 1 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleAuth.sol", - "exportedSymbols": { - "IERC1271Wallet": [ - 22 - ], - "IModuleAuth": [ - 1249 - ], - "LibBytes": [ - 2374 - ], - "LibBytesPointer": [ - 2476 - ], - "LibOptim": [ - 2530 - ], - "ModuleAuth": [ - 564 - ], - "ModuleERC165": [ - 920 - ], - "ModuleSelfAuth": [ - 1116 - ], - "ModuleStorage": [ - 1179 - ], - "SequenceBaseSig": [ - 2021 - ], - "SequenceChainedSig": [ - 2218 - ], - "SequenceDynamicSig": [ - 2247 - ], - "SequenceNoChainIdSig": [ - 2275 - ], - "SignatureValidator": [ - 2798 - ] - }, - "id": 565, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 243, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:2" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "file": "../../utils/LibBytes.sol", - "id": 244, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 565, - "sourceUnit": 2375, - "src": "64:34:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "file": "../../interfaces/IERC1271Wallet.sol", - "id": 245, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 565, - "sourceUnit": 23, - "src": "99:45:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "file": "./interfaces/IModuleAuth.sol", - "id": 246, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 565, - "sourceUnit": 1250, - "src": "146:38:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "file": "./ModuleERC165.sol", - "id": 247, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 565, - "sourceUnit": 921, - "src": "186:28:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "file": "./submodules/auth/SequenceBaseSig.sol", - "id": 248, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 565, - "sourceUnit": 2022, - "src": "216:47:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "file": "./submodules/auth/SequenceDynamicSig.sol", - "id": 249, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 565, - "sourceUnit": 2248, - "src": "264:50:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "file": "./submodules/auth/SequenceNoChainIdSig.sol", - "id": 250, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 565, - "sourceUnit": 2276, - "src": "315:52:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "file": "./submodules/auth/SequenceChainedSig.sol", - "id": 251, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 565, - "sourceUnit": 2219, - "src": "368:50:2", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": true, - "baseContracts": [ - { - "baseName": { - "id": 252, - "name": "IModuleAuth", - "nameLocations": [ - "455:11:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1249, - "src": "455:11:2" - }, - "id": 253, - "nodeType": "InheritanceSpecifier", - "src": "455:11:2" - }, - { - "baseName": { - "id": 254, - "name": "ModuleERC165", - "nameLocations": [ - "470:12:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 920, - "src": "470:12:2" - }, - "id": 255, - "nodeType": "InheritanceSpecifier", - "src": "470:12:2" - }, - { - "baseName": { - "id": 256, - "name": "IERC1271Wallet", - "nameLocations": [ - "486:14:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 22, - "src": "486:14:2" - }, - "id": 257, - "nodeType": "InheritanceSpecifier", - "src": "486:14:2" - }, - { - "baseName": { - "id": 258, - "name": "SequenceChainedSig", - "nameLocations": [ - "504:18:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2218, - "src": "504:18:2" - }, - "id": 259, - "nodeType": "InheritanceSpecifier", - "src": "504:18:2" - } - ], - "canonicalName": "ModuleAuth", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": false, - "id": 564, - "linearizedBaseContracts": [ - 564, - 2218, - 1116, - 22, - 920, - 1249 - ], - "name": "ModuleAuth", - "nameLocation": "439:10:2", - "nodeType": "ContractDefinition", - "nodes": [ - { - "global": false, - "id": 262, - "libraryName": { - "id": 260, - "name": "LibBytes", - "nameLocations": [ - "533:8:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2374, - "src": "533:8:2" - }, - "nodeType": "UsingForDirective", - "src": "527:25:2", - "typeName": { - "id": 261, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "546:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - } - }, - { - "constant": true, - "id": 265, - "mutability": "constant", - "name": "LEGACY_TYPE", - "nameLocation": "581:11:2", - "nodeType": "VariableDeclaration", - "scope": 564, - "src": "556:46:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "typeName": { - "id": 263, - "name": "bytes1", - "nodeType": "ElementaryTypeName", - "src": "556:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "value": { - "hexValue": "00", - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "hexString", - "lValueRequested": false, - "nodeType": "Literal", - "src": "595:7:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a", - "typeString": "literal_string hex\"00\"" - }, - "value": "\u0000" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 268, - "mutability": "constant", - "name": "DYNAMIC_TYPE", - "nameLocation": "631:12:2", - "nodeType": "VariableDeclaration", - "scope": 564, - "src": "606:47:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "typeName": { - "id": 266, - "name": "bytes1", - "nodeType": "ElementaryTypeName", - "src": "606:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "value": { - "hexValue": "01", - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "hexString", - "lValueRequested": false, - "nodeType": "Literal", - "src": "646:7:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2", - "typeString": "literal_string hex\"01\"" - }, - "value": "\u0001" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 271, - "mutability": "constant", - "name": "NO_CHAIN_ID_TYPE", - "nameLocation": "682:16:2", - "nodeType": "VariableDeclaration", - "scope": 564, - "src": "657:51:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "typeName": { - "id": 269, - "name": "bytes1", - "nodeType": "ElementaryTypeName", - "src": "657:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "value": { - "hexValue": "02", - "id": 270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "hexString", - "lValueRequested": false, - "nodeType": "Literal", - "src": "701:7:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f2ee15ea639b73fa3db9b34a245bdfa015c260c598b211bf05a1ecc4b3e3b4f2", - "typeString": "literal_string hex\"02\"" - }, - "value": "\u0002" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 274, - "mutability": "constant", - "name": "CHAINED_TYPE", - "nameLocation": "737:12:2", - "nodeType": "VariableDeclaration", - "scope": 564, - "src": "712:47:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "typeName": { - "id": 272, - "name": "bytes1", - "nodeType": "ElementaryTypeName", - "src": "712:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "value": { - "hexValue": "03", - "id": 273, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "hexString", - "lValueRequested": false, - "nodeType": "Literal", - "src": "752:7:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_69c322e3248a5dfc29d73c5b0553b0185a35cd5bb6386747517ef7e53b15e287", - "typeString": "literal_string hex\"03\"" - }, - "value": "\u0003" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 277, - "mutability": "constant", - "name": "SELECTOR_ERC1271_BYTES_BYTES", - "nameLocation": "789:28:2", - "nodeType": "VariableDeclaration", - "scope": 564, - "src": "764:66:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 275, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "764:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "hexValue": "30783230633133623062", - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "820:10:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_549534475_by_1", - "typeString": "int_const 549534475" - }, - "value": "0x20c13b0b" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 280, - "mutability": "constant", - "name": "SELECTOR_ERC1271_BYTES32_BYTES", - "nameLocation": "859:30:2", - "nodeType": "VariableDeclaration", - "scope": 564, - "src": "834:68:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 278, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "834:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "hexValue": "30783136323662613765", - "id": 279, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "892:10:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_371636862_by_1", - "typeString": "int_const 371636862" - }, - "value": "0x1626ba7e" - }, - "visibility": "internal" - }, - { - "baseFunctions": [ - 1225 - ], - "body": { - "id": 412, - "nodeType": "Block", - "src": "1913:1248:2", - "statements": [ - { - "assignments": [ - 300 - ], - "declarations": [ - { - "constant": false, - "id": 300, - "mutability": "mutable", - "name": "signatureType", - "nameLocation": "1926:13:2", - "nodeType": "VariableDeclaration", - "scope": 412, - "src": "1919:20:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "typeName": { - "id": 299, - "name": "bytes1", - "nodeType": "ElementaryTypeName", - "src": "1919:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "visibility": "internal" - } - ], - "id": 304, - "initialValue": { - "baseExpression": { - "id": 301, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "1942:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 303, - "indexExpression": { - "hexValue": "30", - "id": 302, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1953:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1942:13:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1919:36:2" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "id": 307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 305, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 300, - "src": "1966:13:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 306, - "name": "LEGACY_TYPE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 265, - "src": "1983:11:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "src": "1966:28:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 335, - "nodeType": "IfStatement", - "src": "1962:303:2", - "trueBody": { - "id": 334, - "nodeType": "Block", - "src": "1996:269:2", - "statements": [ - { - "expression": { - "id": 313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 308, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2045:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 311, - "name": "_digest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "2083:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 309, - "name": "SequenceBaseSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2021, - "src": "2057:15:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceBaseSig_$2021_$", - "typeString": "type(library SequenceBaseSig)" - } - }, - "id": 310, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2073:9:2", - "memberName": "subdigest", - "nodeType": "MemberAccess", - "referencedDeclaration": 1394, - "src": "2057:25:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) view returns (bytes32)" - } - }, - "id": 312, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2057:34:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2045:46:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 314, - "nodeType": "ExpressionStatement", - "src": "2045:46:2" - }, - { - "expression": { - "id": 325, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 315, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "2100:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 316, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "2111:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 317, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "2119:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 318, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "2130:10:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 319, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "2099:42:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 322, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2168:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 323, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "2179:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 320, - "name": "SequenceBaseSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2021, - "src": "2144:15:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceBaseSig_$2021_$", - "typeString": "type(library SequenceBaseSig)" - } - }, - "id": 321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2160:7:2", - "memberName": "recover", - "nodeType": "MemberAccess", - "referencedDeclaration": 2020, - "src": "2144:23:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,uint256,bytes32,uint256)" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2144:46:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,uint256)" - } - }, - "src": "2099:91:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 326, - "nodeType": "ExpressionStatement", - "src": "2099:91:2" - }, - { - "expression": { - "components": [ - { - "id": 327, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "2206:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 328, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "2217:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 329, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "2225:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 330, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2236:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 331, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "2247:10:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 332, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2205:53:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "functionReturnParameters": 298, - "id": 333, - "nodeType": "Return", - "src": "2198:60:2" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 336, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 300, - "src": "2275:13:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 337, - "name": "DYNAMIC_TYPE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 268, - "src": "2292:12:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "src": "2275:29:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 366, - "nodeType": "IfStatement", - "src": "2271:310:2", - "trueBody": { - "id": 365, - "nodeType": "Block", - "src": "2306:275:2", - "statements": [ - { - "expression": { - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 339, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2358:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 342, - "name": "_digest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "2396:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 340, - "name": "SequenceBaseSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2021, - "src": "2370:15:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceBaseSig_$2021_$", - "typeString": "type(library SequenceBaseSig)" - } - }, - "id": 341, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2386:9:2", - "memberName": "subdigest", - "nodeType": "MemberAccess", - "referencedDeclaration": 1394, - "src": "2370:25:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) view returns (bytes32)" - } - }, - "id": 343, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2370:34:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2358:46:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 345, - "nodeType": "ExpressionStatement", - "src": "2358:46:2" - }, - { - "expression": { - "id": 356, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 346, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "2413:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 347, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "2424:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 348, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "2432:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 349, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "2443:10:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 350, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "2412:42:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 353, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2484:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 354, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "2495:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 351, - "name": "SequenceDynamicSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2247, - "src": "2457:18:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceDynamicSig_$2247_$", - "typeString": "type(library SequenceDynamicSig)" - } - }, - "id": 352, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2476:7:2", - "memberName": "recover", - "nodeType": "MemberAccess", - "referencedDeclaration": 2246, - "src": "2457:26:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,uint256,bytes32,uint256)" - } - }, - "id": 355, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2457:49:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,uint256)" - } - }, - "src": "2412:94:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 357, - "nodeType": "ExpressionStatement", - "src": "2412:94:2" - }, - { - "expression": { - "components": [ - { - "id": 358, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "2522:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 359, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "2533:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 360, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "2541:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 361, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2552:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 362, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "2563:10:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 363, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2521:53:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "functionReturnParameters": 298, - "id": 364, - "nodeType": "Return", - "src": "2514:60:2" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "id": 369, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 367, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 300, - "src": "2591:13:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 368, - "name": "NO_CHAIN_ID_TYPE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "2608:16:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "src": "2591:33:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 397, - "nodeType": "IfStatement", - "src": "2587:319:2", - "trueBody": { - "id": 396, - "nodeType": "Block", - "src": "2626:280:2", - "statements": [ - { - "expression": { - "id": 375, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 370, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2678:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 373, - "name": "_digest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "2721:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 371, - "name": "SequenceNoChainIdSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2275, - "src": "2690:20:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceNoChainIdSig_$2275_$", - "typeString": "type(library SequenceNoChainIdSig)" - } - }, - "id": 372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2711:9:2", - "memberName": "subdigest", - "nodeType": "MemberAccess", - "referencedDeclaration": 2274, - "src": "2690:30:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) view returns (bytes32)" - } - }, - "id": 374, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2690:39:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2678:51:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 376, - "nodeType": "ExpressionStatement", - "src": "2678:51:2" - }, - { - "expression": { - "id": 387, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 377, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "2738:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 378, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "2749:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 379, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "2757:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 380, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "2768:10:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 381, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "2737:42:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 384, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2809:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 385, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "2820:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 382, - "name": "SequenceDynamicSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2247, - "src": "2782:18:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceDynamicSig_$2247_$", - "typeString": "type(library SequenceDynamicSig)" - } - }, - "id": 383, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2801:7:2", - "memberName": "recover", - "nodeType": "MemberAccess", - "referencedDeclaration": 2246, - "src": "2782:26:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,uint256,bytes32,uint256)" - } - }, - "id": 386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2782:49:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,uint256)" - } - }, - "src": "2737:94:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 388, - "nodeType": "ExpressionStatement", - "src": "2737:94:2" - }, - { - "expression": { - "components": [ - { - "id": 389, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "2847:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 390, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "2858:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 391, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "2866:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 392, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "2877:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 393, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "2888:10:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 394, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2846:53:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "functionReturnParameters": 298, - "id": 395, - "nodeType": "Return", - "src": "2839:60:2" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "id": 400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 398, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 300, - "src": "2916:13:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 399, - "name": "CHAINED_TYPE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 274, - "src": "2933:12:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "src": "2916:29:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 407, - "nodeType": "IfStatement", - "src": "2912:196:2", - "trueBody": { - "id": 406, - "nodeType": "Block", - "src": "2947:161:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 402, - "name": "_digest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "3081:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 403, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "3090:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 401, - "name": "chainedRecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2217, - "src": "3066:14:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3066:35:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "functionReturnParameters": 298, - "id": 405, - "nodeType": "Return", - "src": "3059:42:2" - } - ] - } - }, - { - "errorCall": { - "arguments": [ - { - "id": 409, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 300, - "src": "3142:13:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - ], - "id": 408, - "name": "InvalidSignatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1197, - "src": "3121:20:2", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes1_$returns$__$", - "typeString": "function (bytes1) pure" - } - }, - "id": 410, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3121:35:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 411, - "nodeType": "RevertStatement", - "src": "3114:42:2" - } - ] - }, - "documentation": { - "id": 281, - "nodeType": "StructuredDocumentation", - "src": "907:765:2", - "text": " @notice Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature.\n @dev The signature must be prefixed with a type byte, which is used to determine the recovery method.\n @param _digest Digest of the signed data.\n @param _signature A Sequence signature.\n @return threshold The required number of signatures needed to consider the signature valid.\n @return weight The actual number of signatures collected in the signature.\n @return imageHash The imageHash of the configuration that signed the message.\n @return subdigest A modified version of the original digest, unique for each wallet/network.\n @return checkpoint A nonce that is incremented every time a new configuration is set." - }, - "functionSelector": "853c5068", - "id": 413, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "signatureRecovery", - "nameLocation": "1684:17:2", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 287, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1765:8:2" - }, - "parameters": { - "id": 286, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 283, - "mutability": "mutable", - "name": "_digest", - "nameLocation": "1715:7:2", - "nodeType": "VariableDeclaration", - "scope": 413, - "src": "1707:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 282, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1707:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 285, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "1743:10:2", - "nodeType": "VariableDeclaration", - "scope": 413, - "src": "1728:25:2", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 284, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1728:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1701:56:2" - }, - "returnParameters": { - "id": 298, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 289, - "mutability": "mutable", - "name": "threshold", - "nameLocation": "1809:9:2", - "nodeType": "VariableDeclaration", - "scope": 413, - "src": "1801:17:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 288, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1801:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 291, - "mutability": "mutable", - "name": "weight", - "nameLocation": "1832:6:2", - "nodeType": "VariableDeclaration", - "scope": 413, - "src": "1824:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 290, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1824:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 293, - "mutability": "mutable", - "name": "imageHash", - "nameLocation": "1852:9:2", - "nodeType": "VariableDeclaration", - "scope": 413, - "src": "1844:17:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 292, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1844:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 295, - "mutability": "mutable", - "name": "subdigest", - "nameLocation": "1875:9:2", - "nodeType": "VariableDeclaration", - "scope": 413, - "src": "1867:17:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 294, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1867:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 297, - "mutability": "mutable", - "name": "checkpoint", - "nameLocation": "1898:10:2", - "nodeType": "VariableDeclaration", - "scope": 413, - "src": "1890:18:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 296, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1890:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1795:117:2" - }, - "scope": 564, - "src": "1675:1486:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 1208 - ], - "body": { - "id": 456, - "nodeType": "Block", - "src": "3651:215:2", - "statements": [ - { - "assignments": [ - 427 - ], - "declarations": [ - { - "constant": false, - "id": 427, - "mutability": "mutable", - "name": "threshold", - "nameLocation": "3665:9:2", - "nodeType": "VariableDeclaration", - "scope": 456, - "src": "3657:17:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 426, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3657:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 428, - "nodeType": "VariableDeclarationStatement", - "src": "3657:17:2" - }, - { - "assignments": [ - 430 - ], - "declarations": [ - { - "constant": false, - "id": 430, - "mutability": "mutable", - "name": "weight", - "nameLocation": "3684:6:2", - "nodeType": "VariableDeclaration", - "scope": 456, - "src": "3676:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 429, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3676:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 431, - "nodeType": "VariableDeclarationStatement", - "src": "3676:14:2" - }, - { - "assignments": [ - 433 - ], - "declarations": [ - { - "constant": false, - "id": 433, - "mutability": "mutable", - "name": "imageHash", - "nameLocation": "3700:9:2", - "nodeType": "VariableDeclaration", - "scope": 456, - "src": "3692:17:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 432, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3692:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 434, - "nodeType": "VariableDeclarationStatement", - "src": "3692:17:2" - }, - { - "expression": { - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 435, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "3716:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 436, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 430, - "src": "3727:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 437, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "3735:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 438, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "3746:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - null - ], - "id": 439, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "3715:42:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$__$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 441, - "name": "_digest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 416, - "src": "3778:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 442, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "3787:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 440, - "name": "signatureRecovery", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 413 - ], - "referencedDeclaration": 413, - "src": "3760:17:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "id": 443, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3760:38:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "src": "3715:83:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 445, - "nodeType": "ExpressionStatement", - "src": "3715:83:2" - }, - { - "expression": { - "id": 454, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 446, - "name": "isValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "3804:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 453, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 449, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 447, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 430, - "src": "3814:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 448, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "3824:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3814:19:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "arguments": [ - { - "id": 451, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "3851:9:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 450, - "name": "_isValidImage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1236, - "src": "3837:13:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (bytes32) view returns (bool)" - } - }, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3837:24:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3814:47:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3804:57:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 455, - "nodeType": "ExpressionStatement", - "src": "3804:57:2" - } - ] - }, - "documentation": { - "id": 414, - "nodeType": "StructuredDocumentation", - "src": "3165:312:2", - "text": " @dev Validates a signature.\n @param _digest Digest of the signed data.\n @param _signature A Sequence signature.\n @return isValid Indicates whether the signature is valid or not.\n @return subdigest A modified version of the original digest, unique for each wallet/network." - }, - "id": 457, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_signatureValidation", - "nameLocation": "3489:20:2", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 420, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3575:8:2" - }, - "parameters": { - "id": 419, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 416, - "mutability": "mutable", - "name": "_digest", - "nameLocation": "3523:7:2", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "3515:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 415, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3515:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 418, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "3551:10:2", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "3536:25:2", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 417, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3536:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3509:56:2" - }, - "returnParameters": { - "id": 425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 422, - "mutability": "mutable", - "name": "isValid", - "nameLocation": "3616:7:2", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "3611:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 421, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3611:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 424, - "mutability": "mutable", - "name": "subdigest", - "nameLocation": "3637:9:2", - "nodeType": "VariableDeclaration", - "scope": 457, - "src": "3629:17:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 423, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3629:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3605:45:2" - }, - "scope": 564, - "src": "3480:386:2", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "baseFunctions": [ - 11 - ], - "body": { - "id": 487, - "nodeType": "Block", - "src": "4659:198:2", - "statements": [ - { - "assignments": [ - 469, - null - ], - "declarations": [ - { - "constant": false, - "id": 469, - "mutability": "mutable", - "name": "isValid", - "nameLocation": "4698:7:2", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "4693:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 468, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4693:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - null - ], - "id": 476, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 472, - "name": "_data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 460, - "src": "4741:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 471, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "4731:9:2", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 473, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4731:16:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 474, - "name": "_signatures", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "4749:11:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 470, - "name": "_signatureValidation", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 457 - ], - "referencedDeclaration": 457, - "src": "4710:20:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$", - "typeString": "function (bytes32,bytes calldata) view returns (bool,bytes32)" - } - }, - "id": 475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4710:51:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", - "typeString": "tuple(bool,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4692:69:2" - }, - { - "condition": { - "id": 477, - "name": "isValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "4771:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 481, - "nodeType": "IfStatement", - "src": "4767:63:2", - "trueBody": { - "id": 480, - "nodeType": "Block", - "src": "4780:50:2", - "statements": [ - { - "expression": { - "id": 478, - "name": "SELECTOR_ERC1271_BYTES_BYTES", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 277, - "src": "4795:28:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "functionReturnParameters": 467, - "id": 479, - "nodeType": "Return", - "src": "4788:35:2" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "hexValue": "30", - "id": 484, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4850:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4843:6:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - }, - "typeName": { - "id": 482, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "4843:6:2", - "typeDescriptions": {} - } - }, - "id": 485, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4843:9:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "functionReturnParameters": 467, - "id": 486, - "nodeType": "Return", - "src": "4836:16:2" - } - ] - }, - "documentation": { - "id": 458, - "nodeType": "StructuredDocumentation", - "src": "3870:652:2", - "text": " @notice Verifies whether the provided signature is valid with respect to the provided data\n @dev MUST return the correct magic value if the signature provided is valid for the provided data\n > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\"))\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signatures Signature byte array associated with _data.\n Encoded as abi.encode(Signature[], Configs)\n @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise" - }, - "functionSelector": "20c13b0b", - "id": 488, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isValidSignature", - "nameLocation": "4534:16:2", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 464, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "4620:8:2" - }, - "parameters": { - "id": 463, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 460, - "mutability": "mutable", - "name": "_data", - "nameLocation": "4571:5:2", - "nodeType": "VariableDeclaration", - "scope": 488, - "src": "4556:20:2", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 459, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4556:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 462, - "mutability": "mutable", - "name": "_signatures", - "nameLocation": "4597:11:2", - "nodeType": "VariableDeclaration", - "scope": 488, - "src": "4582:26:2", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 461, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4582:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "4550:62:2" - }, - "returnParameters": { - "id": 467, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 466, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 488, - "src": "4651:6:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 465, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "4651:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "4650:8:2" - }, - "scope": 564, - "src": "4525:332:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 21 - ], - "body": { - "id": 516, - "nodeType": "Block", - "src": "5616:189:2", - "statements": [ - { - "assignments": [ - 500, - null - ], - "declarations": [ - { - "constant": false, - "id": 500, - "mutability": "mutable", - "name": "isValid", - "nameLocation": "5655:7:2", - "nodeType": "VariableDeclaration", - "scope": 516, - "src": "5650:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 499, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5650:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - null - ], - "id": 505, - "initialValue": { - "arguments": [ - { - "id": 502, - "name": "_hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "5688:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 503, - "name": "_signatures", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "5695:11:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 501, - "name": "_signatureValidation", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 457 - ], - "referencedDeclaration": 457, - "src": "5667:20:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$", - "typeString": "function (bytes32,bytes calldata) view returns (bool,bytes32)" - } - }, - "id": 504, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5667:40:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", - "typeString": "tuple(bool,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5649:58:2" - }, - { - "condition": { - "id": 506, - "name": "isValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "5717:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 510, - "nodeType": "IfStatement", - "src": "5713:65:2", - "trueBody": { - "id": 509, - "nodeType": "Block", - "src": "5726:52:2", - "statements": [ - { - "expression": { - "id": 507, - "name": "SELECTOR_ERC1271_BYTES32_BYTES", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "5741:30:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "functionReturnParameters": 498, - "id": 508, - "nodeType": "Return", - "src": "5734:37:2" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "hexValue": "30", - "id": 513, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5798:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 512, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5791:6:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - }, - "typeName": { - "id": 511, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "5791:6:2", - "typeDescriptions": {} - } - }, - "id": 514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5791:9:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "functionReturnParameters": 498, - "id": 515, - "nodeType": "Return", - "src": "5784:16:2" - } - ] - }, - "documentation": { - "id": 489, - "nodeType": "StructuredDocumentation", - "src": "4861:625:2", - "text": " @notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))\n @param _hash keccak256 hash that was signed\n @param _signatures Signature byte array associated with _data.\n Encoded as abi.encode(Signature[], Configs)\n @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise" - }, - "functionSelector": "1626ba7e", - "id": 517, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isValidSignature", - "nameLocation": "5498:16:2", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 495, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "5577:8:2" - }, - "parameters": { - "id": 494, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 491, - "mutability": "mutable", - "name": "_hash", - "nameLocation": "5528:5:2", - "nodeType": "VariableDeclaration", - "scope": 517, - "src": "5520:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 490, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5520:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 493, - "mutability": "mutable", - "name": "_signatures", - "nameLocation": "5554:11:2", - "nodeType": "VariableDeclaration", - "scope": 517, - "src": "5539:26:2", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 492, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5539:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "5514:55:2" - }, - "returnParameters": { - "id": 498, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 497, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 517, - "src": "5608:6:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 496, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "5608:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "5607:8:2" - }, - "scope": 564, - "src": "5489:316:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 919 - ], - "body": { - "id": 548, - "nodeType": "Block", - "src": "6107:208:2", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 531, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 526, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "6124:12:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 528, - "name": "IModuleAuth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "6145:11:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IModuleAuth_$1249_$", - "typeString": "type(contract IModuleAuth)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_contract$_IModuleAuth_$1249_$", - "typeString": "type(contract IModuleAuth)" - } - ], - "id": 527, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967269, - "src": "6140:4:2", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 529, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6140:17:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_contract$_IModuleAuth_$1249", - "typeString": "type(contract IModuleAuth)" - } - }, - "id": 530, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "6158:11:2", - "memberName": "interfaceId", - "nodeType": "MemberAccess", - "src": "6140:29:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "6124:45:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 532, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "6179:12:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 534, - "name": "IERC1271Wallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22, - "src": "6200:14:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC1271Wallet_$22_$", - "typeString": "type(contract IERC1271Wallet)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_contract$_IERC1271Wallet_$22_$", - "typeString": "type(contract IERC1271Wallet)" - } - ], - "id": 533, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967269, - "src": "6195:4:2", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 535, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6195:20:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1271Wallet_$22", - "typeString": "type(contract IERC1271Wallet)" - } - }, - "id": 536, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "6216:11:2", - "memberName": "interfaceId", - "nodeType": "MemberAccess", - "src": "6195:32:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "6179:48:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "6124:103:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 542, - "nodeType": "IfStatement", - "src": "6113:147:2", - "trueBody": { - "id": 541, - "nodeType": "Block", - "src": "6234:26:2", - "statements": [ - { - "expression": { - "hexValue": "74727565", - "id": 539, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6249:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 525, - "id": 540, - "nodeType": "Return", - "src": "6242:11:2" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 545, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "6297:12:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "expression": { - "id": 543, - "name": "super", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967271, - "src": "6273:5:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_ModuleAuth_$564_$", - "typeString": "type(contract super ModuleAuth)" - } - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6279:17:2", - "memberName": "supportsInterface", - "nodeType": "MemberAccess", - "referencedDeclaration": 919, - "src": "6273:23:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$", - "typeString": "function (bytes4) pure returns (bool)" - } - }, - "id": 546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6273:37:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 525, - "id": 547, - "nodeType": "Return", - "src": "6266:44:2" - } - ] - }, - "documentation": { - "id": 518, - "nodeType": "StructuredDocumentation", - "src": "5809:203:2", - "text": " @notice Query if a contract implements an interface\n @param _interfaceID The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID`" - }, - "functionSelector": "01ffc9a7", - "id": 549, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "supportsInterface", - "nameLocation": "6024:17:2", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 522, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "6070:8:2" - }, - "parameters": { - "id": 521, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 520, - "mutability": "mutable", - "name": "_interfaceID", - "nameLocation": "6049:12:2", - "nodeType": "VariableDeclaration", - "scope": 549, - "src": "6042:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 519, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "6042:6:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "6041:21:2" - }, - "returnParameters": { - "id": 525, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 524, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 549, - "src": "6101:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 523, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6101:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "6100:6:2" - }, - "scope": 564, - "src": "6015:300:2", - "stateMutability": "pure", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 1242 - ], - "body": { - "id": 562, - "nodeType": "Block", - "src": "6536:39:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 559, - "name": "_imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 552, - "src": "6559:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 558, - "name": "_updateImageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1248, - "src": "6542:16:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", - "typeString": "function (bytes32)" - } - }, - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6542:28:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 561, - "nodeType": "ExpressionStatement", - "src": "6542:28:2" - } - ] - }, - "documentation": { - "id": 550, - "nodeType": "StructuredDocumentation", - "src": "6319:134:2", - "text": " @notice Updates the signers configuration of the wallet\n @param _imageHash New required image hash of the signature" - }, - "functionSelector": "29561426", - "id": 563, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 556, - "kind": "modifierInvocation", - "modifierName": { - "id": 555, - "name": "onlySelf", - "nameLocations": [ - "6527:8:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1115, - "src": "6527:8:2" - }, - "nodeType": "ModifierInvocation", - "src": "6527:8:2" - } - ], - "name": "updateImageHash", - "nameLocation": "6465:15:2", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 554, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "6510:8:2" - }, - "parameters": { - "id": 553, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 552, - "mutability": "mutable", - "name": "_imageHash", - "nameLocation": "6489:10:2", - "nodeType": "VariableDeclaration", - "scope": 563, - "src": "6481:18:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 551, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6481:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "6480:20:2" - }, - "returnParameters": { - "id": 557, - "nodeType": "ParameterList", - "parameters": [], - "src": "6536:0:2" - }, - "scope": 564, - "src": "6456:119:2", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "external" - } - ], - "scope": 565, - "src": "421:6156:2", - "usedErrors": [ - 1093, - 1193, - 1197, - 1367, - 1371, - 2050, - 2056, - 2539, - 2541, - 2547, - 2553, - 2561, - 2565 - ] - } - ], - "src": "39:6539:2" - }, - "id": 2 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCalls.sol", - "exportedSymbols": { - "IERC1271Wallet": [ - 22 - ], - "IModuleAuth": [ - 1249 - ], - "IModuleCalls": [ - 1313 - ], - "LibBytes": [ - 2374 - ], - "LibBytesPointer": [ - 2476 - ], - "LibOptim": [ - 2530 - ], - "ModuleCalls": [ - 833 - ], - "ModuleERC165": [ - 920 - ], - "ModuleNonce": [ - 1051 - ], - "ModuleOnlyDelegatecall": [ - 1085 - ], - "ModuleSelfAuth": [ - 1116 - ], - "ModuleStorage": [ - 1179 - ], - "SequenceBaseSig": [ - 2021 - ], - "SignatureValidator": [ - 2798 - ], - "SubModuleNonce": [ - 2324 - ] - }, - "id": 834, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 566, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:3" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "file": "./ModuleSelfAuth.sol", - "id": 567, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 1117, - "src": "64:30:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "file": "./ModuleStorage.sol", - "id": 568, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 1180, - "src": "95:29:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "file": "./ModuleERC165.sol", - "id": 569, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 921, - "src": "125:28:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "file": "./ModuleNonce.sol", - "id": 570, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 1052, - "src": "154:27:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "file": "./ModuleOnlyDelegatecall.sol", - "id": 571, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 1086, - "src": "182:38:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "file": "./interfaces/IModuleCalls.sol", - "id": 572, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 1314, - "src": "222:39:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "file": "./interfaces/IModuleAuth.sol", - "id": 573, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 1250, - "src": "262:38:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "file": "./submodules/nonce/SubModuleNonce.sol", - "id": 574, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 2325, - "src": "302:47:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "file": "./submodules/auth/SequenceBaseSig.sol", - "id": 575, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 2022, - "src": "350:47:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "file": "../../utils/LibOptim.sol", - "id": 576, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 834, - "sourceUnit": 2531, - "src": "399:34:3", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": true, - "baseContracts": [ - { - "baseName": { - "id": 577, - "name": "IModuleCalls", - "nameLocations": [ - "469:12:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1313, - "src": "469:12:3" - }, - "id": 578, - "nodeType": "InheritanceSpecifier", - "src": "469:12:3" - }, - { - "baseName": { - "id": 579, - "name": "IModuleAuth", - "nameLocations": [ - "483:11:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1249, - "src": "483:11:3" - }, - "id": 580, - "nodeType": "InheritanceSpecifier", - "src": "483:11:3" - }, - { - "baseName": { - "id": 581, - "name": "ModuleERC165", - "nameLocations": [ - "496:12:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 920, - "src": "496:12:3" - }, - "id": 582, - "nodeType": "InheritanceSpecifier", - "src": "496:12:3" - }, - { - "baseName": { - "id": 583, - "name": "ModuleOnlyDelegatecall", - "nameLocations": [ - "510:22:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1085, - "src": "510:22:3" - }, - "id": 584, - "nodeType": "InheritanceSpecifier", - "src": "510:22:3" - }, - { - "baseName": { - "id": 585, - "name": "ModuleSelfAuth", - "nameLocations": [ - "534:14:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1116, - "src": "534:14:3" - }, - "id": 586, - "nodeType": "InheritanceSpecifier", - "src": "534:14:3" - }, - { - "baseName": { - "id": 587, - "name": "ModuleNonce", - "nameLocations": [ - "550:11:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1051, - "src": "550:11:3" - }, - "id": 588, - "nodeType": "InheritanceSpecifier", - "src": "550:11:3" - } - ], - "canonicalName": "ModuleCalls", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": false, - "id": 833, - "linearizedBaseContracts": [ - 833, - 1051, - 1116, - 1085, - 920, - 1249, - 1313 - ], - "name": "ModuleCalls", - "nameLocation": "454:11:3", - "nodeType": "ContractDefinition", - "nodes": [ - { - "baseFunctions": [ - 1304 - ], - "body": { - "id": 636, - "nodeType": "Block", - "src": "1142:420:3", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 604, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 595, - "src": "1196:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 603, - "name": "_validateNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1050, - "src": "1181:14:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1181:22:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 606, - "nodeType": "ExpressionStatement", - "src": "1181:22:3" - }, - { - "assignments": [ - 608, - 610 - ], - "declarations": [ - { - "constant": false, - "id": 608, - "mutability": "mutable", - "name": "isValid", - "nameLocation": "1258:7:3", - "nodeType": "VariableDeclaration", - "scope": 636, - "src": "1253:12:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 607, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1253:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 610, - "mutability": "mutable", - "name": "txHash", - "nameLocation": "1275:6:3", - "nodeType": "VariableDeclaration", - "scope": 636, - "src": "1267:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 609, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1267:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 621, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "id": 615, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 595, - "src": "1354:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 616, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 593, - "src": "1372:4:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - ], - "expression": { - "id": 613, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "1332:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 614, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1336:6:3", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "1332:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1332:54:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 612, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "1313:9:3", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1313:81:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 619, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 597, - "src": "1402:10:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 611, - "name": "_signatureValidation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1208, - "src": "1285:20:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$", - "typeString": "function (bytes32,bytes calldata) view returns (bool,bytes32)" - } - }, - "id": 620, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1285:133:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", - "typeString": "tuple(bool,bytes32)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1252:166:3" - }, - { - "condition": { - "id": 623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1429:8:3", - "subExpression": { - "id": 622, - "name": "isValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 608, - "src": "1430:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 630, - "nodeType": "IfStatement", - "src": "1425:72:3", - "trueBody": { - "id": 629, - "nodeType": "Block", - "src": "1439:58:3", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 625, - "name": "txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 610, - "src": "1471:6:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 626, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 597, - "src": "1479:10:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 624, - "name": "InvalidSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1279, - "src": "1454:16:3", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes32,bytes memory) pure" - } - }, - "id": 627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1454:36:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 628, - "nodeType": "RevertStatement", - "src": "1447:43:3" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 632, - "name": "txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 610, - "src": "1544:6:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 633, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 593, - "src": "1552:4:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - ], - "id": 631, - "name": "_execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "1535:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (bytes32,struct IModuleCalls.Transaction calldata[] calldata)" - } - }, - "id": 634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1535:22:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 635, - "nodeType": "ExpressionStatement", - "src": "1535:22:3" - } - ] - }, - "documentation": { - "id": 589, - "nodeType": "StructuredDocumentation", - "src": "566:425:3", - "text": " @notice Allow wallet owner to execute an action\n @dev Relayers must ensure that the gasLimit specified for each transaction\n is acceptable to them. A user could specify large enough that it could\n consume all the gas available.\n @param _txs Transactions to process\n @param _nonce Signature nonce (may contain an encoded space)\n @param _signature Encoded signature" - }, - "functionSelector": "7a9a1628", - "id": 637, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 601, - "kind": "modifierInvocation", - "modifierName": { - "id": 600, - "name": "onlyDelegatecall", - "nameLocations": [ - "1125:16:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1084, - "src": "1125:16:3" - }, - "nodeType": "ModifierInvocation", - "src": "1125:16:3" - } - ], - "name": "execute", - "nameLocation": "1003:7:3", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 599, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1108:8:3" - }, - "parameters": { - "id": 598, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 593, - "mutability": "mutable", - "name": "_txs", - "nameLocation": "1039:4:3", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "1016:27:3", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - }, - "typeName": { - "baseType": { - "id": 591, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 590, - "name": "Transaction", - "nameLocations": [ - "1016:11:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "1016:11:3" - }, - "referencedDeclaration": 1292, - "src": "1016:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "id": 592, - "nodeType": "ArrayTypeName", - "src": "1016:13:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_storage_$dyn_storage_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 595, - "mutability": "mutable", - "name": "_nonce", - "nameLocation": "1057:6:3", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "1049:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 594, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1049:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 597, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "1084:10:3", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "1069:25:3", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 596, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1069:5:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1010:88:3" - }, - "returnParameters": { - "id": 602, - "nodeType": "ParameterList", - "parameters": [], - "src": "1142:0:3" - }, - "scope": 833, - "src": "994:568:3", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "external" - }, - { - "baseFunctions": [ - 1312 - ], - "body": { - "id": 666, - "nodeType": "Block", - "src": "1795:211:3", - "statements": [ - { - "assignments": [ - 649 - ], - "declarations": [ - { - "constant": false, - "id": 649, - "mutability": "mutable", - "name": "txHash", - "nameLocation": "1840:6:3", - "nodeType": "VariableDeclaration", - "scope": 666, - "src": "1832:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 648, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1832:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 660, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "hexValue": "73656c663a", - "id": 655, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1912:7:3", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845", - "typeString": "literal_string \"self:\"" - }, - "value": "self:" - }, - { - "id": 656, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 642, - "src": "1921:4:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_bf9461da9f9c0123d3a54c61147a274d8fdb5d5c1e488665fb11b9edbbc32845", - "typeString": "literal_string \"self:\"" - }, - { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - ], - "expression": { - "id": 653, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "1901:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1905:6:3", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "1901:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 657, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1901:25:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 652, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "1882:9:3", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 658, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1882:52:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 650, - "name": "SequenceBaseSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2021, - "src": "1849:15:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceBaseSig_$2021_$", - "typeString": "type(library SequenceBaseSig)" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1865:9:3", - "memberName": "subdigest", - "nodeType": "MemberAccess", - "referencedDeclaration": 1394, - "src": "1849:25:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) view returns (bytes32)" - } - }, - "id": 659, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1849:91:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1832:108:3" - }, - { - "expression": { - "arguments": [ - { - "id": 662, - "name": "txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 649, - "src": "1988:6:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 663, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 642, - "src": "1996:4:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - ], - "id": 661, - "name": "_execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "1979:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (bytes32,struct IModuleCalls.Transaction calldata[] calldata)" - } - }, - "id": 664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1979:22:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 665, - "nodeType": "ExpressionStatement", - "src": "1979:22:3" - } - ] - }, - "documentation": { - "id": 638, - "nodeType": "StructuredDocumentation", - "src": "1566:133:3", - "text": " @notice Allow wallet to execute an action\n without signing the message\n @param _txs Transactions to execute" - }, - "functionSelector": "61c2926c", - "id": 667, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 646, - "kind": "modifierInvocation", - "modifierName": { - "id": 645, - "name": "onlySelf", - "nameLocations": [ - "1786:8:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1115, - "src": "1786:8:3" - }, - "nodeType": "ModifierInvocation", - "src": "1786:8:3" - } - ], - "name": "selfExecute", - "nameLocation": "1711:11:3", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 644, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1769:8:3" - }, - "parameters": { - "id": 643, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 642, - "mutability": "mutable", - "name": "_txs", - "nameLocation": "1751:4:3", - "nodeType": "VariableDeclaration", - "scope": 667, - "src": "1728:27:3", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - }, - "typeName": { - "baseType": { - "id": 640, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 639, - "name": "Transaction", - "nameLocations": [ - "1728:11:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "1728:11:3" - }, - "referencedDeclaration": 1292, - "src": "1728:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "id": 641, - "nodeType": "ArrayTypeName", - "src": "1728:13:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_storage_$dyn_storage_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - } - }, - "visibility": "internal" - } - ], - "src": "1722:37:3" - }, - "returnParameters": { - "id": 647, - "nodeType": "ParameterList", - "parameters": [], - "src": "1795:0:3" - }, - "scope": 833, - "src": "1702:304:3", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "external" - }, - { - "body": { - "id": 782, - "nodeType": "Block", - "src": "2248:1060:3", - "statements": [ - { - "id": 781, - "nodeType": "UncheckedBlock", - "src": "2254:1050:3", - "statements": [ - { - "assignments": [ - 678 - ], - "declarations": [ - { - "constant": false, - "id": 678, - "mutability": "mutable", - "name": "size", - "nameLocation": "2309:4:3", - "nodeType": "VariableDeclaration", - "scope": 781, - "src": "2301:12:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 677, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2301:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 681, - "initialValue": { - "expression": { - "id": 679, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "2316:4:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - }, - "id": 680, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2321:6:3", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "2316:11:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2301:26:3" - }, - { - "body": { - "id": 779, - "nodeType": "Block", - "src": "2370:928:3", - "statements": [ - { - "assignments": [ - 694 - ], - "declarations": [ - { - "constant": false, - "id": 694, - "mutability": "mutable", - "name": "transaction", - "nameLocation": "2401:11:3", - "nodeType": "VariableDeclaration", - "scope": 779, - "src": "2380:32:3", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction" - }, - "typeName": { - "id": 693, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 692, - "name": "Transaction", - "nameLocations": [ - "2380:11:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "2380:11:3" - }, - "referencedDeclaration": 1292, - "src": "2380:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "visibility": "internal" - } - ], - "id": 698, - "initialValue": { - "baseExpression": { - "id": 695, - "name": "_txs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "2415:4:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata[] calldata" - } - }, - "id": 697, - "indexExpression": { - "id": 696, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "2420:1:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2415:7:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2380:42:3" - }, - { - "assignments": [ - 700 - ], - "declarations": [ - { - "constant": false, - "id": 700, - "mutability": "mutable", - "name": "gasLimit", - "nameLocation": "2440:8:3", - "nodeType": "VariableDeclaration", - "scope": 779, - "src": "2432:16:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 699, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2432:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 703, - "initialValue": { - "expression": { - "id": 701, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2451:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 702, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2463:8:3", - "memberName": "gasLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1285, - "src": "2451:20:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2432:39:3" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 707, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 704, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967289, - "src": "2486:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 705, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2486:9:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 706, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "2498:8:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2486:20:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 715, - "nodeType": "IfStatement", - "src": "2482:69:3", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 709, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "2528:1:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 710, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "2531:8:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 711, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967289, - "src": "2541:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 712, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2541:9:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 708, - "name": "NotEnoughGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1273, - "src": "2515:12:3", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256,uint256) pure" - } - }, - "id": 713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2515:36:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 714, - "nodeType": "RevertStatement", - "src": "2508:43:3" - } - }, - { - "assignments": [ - 717 - ], - "declarations": [ - { - "constant": false, - "id": 717, - "mutability": "mutable", - "name": "success", - "nameLocation": "2567:7:3", - "nodeType": "VariableDeclaration", - "scope": 779, - "src": "2562:12:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 716, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2562:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 718, - "nodeType": "VariableDeclarationStatement", - "src": "2562:12:3" - }, - { - "condition": { - "expression": { - "id": 719, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2588:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2600:12:3", - "memberName": "delegateCall", - "nodeType": "MemberAccess", - "referencedDeclaration": 1281, - "src": "2588:24:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 758, - "nodeType": "Block", - "src": "2798:201:3", - "statements": [ - { - "expression": { - "id": 756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 739, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2810:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 742, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2847:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2859:6:3", - "memberName": "target", - "nodeType": "MemberAccess", - "referencedDeclaration": 1287, - "src": "2847:18:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 744, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2879:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 745, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2891:5:3", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 1289, - "src": "2879:17:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 748, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 746, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "2910:8:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 747, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2922:1:3", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2910:13:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 751, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "2938:8:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 752, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "2910:36:3", - "trueExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 749, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967289, - "src": "2926:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 750, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2926:9:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 753, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2960:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2972:4:3", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 1291, - "src": "2960:16:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 740, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "2820:8:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2829:4:3", - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": 2515, - "src": "2820:13:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,uint256,bytes calldata) returns (bool)" - } - }, - "id": 755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2820:168:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2810:178:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 757, - "nodeType": "ExpressionStatement", - "src": "2810:178:3" - } - ] - }, - "id": 759, - "nodeType": "IfStatement", - "src": "2584:415:3", - "trueBody": { - "id": 738, - "nodeType": "Block", - "src": "2614:178:3", - "statements": [ - { - "expression": { - "id": 736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 721, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2626:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 724, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2671:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 725, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2683:6:3", - "memberName": "target", - "nodeType": "MemberAccess", - "referencedDeclaration": 1287, - "src": "2671:18:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 726, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "2703:8:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2715:1:3", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2703:13:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 731, - "name": "gasLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "2731:8:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "2703:36:3", - "trueExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 729, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967289, - "src": "2719:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2719:9:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 733, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2753:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2765:4:3", - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 1291, - "src": "2753:16:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 722, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "2636:8:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2645:12:3", - "memberName": "delegatecall", - "nodeType": "MemberAccess", - "referencedDeclaration": 2529, - "src": "2636:21:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes calldata) returns (bool)" - } - }, - "id": 735, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2636:145:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2626:155:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 737, - "nodeType": "ExpressionStatement", - "src": "2626:155:3" - } - ] - } - }, - { - "condition": { - "id": 760, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "3013:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 777, - "nodeType": "Block", - "src": "3078:212:3", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 768, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "3171:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction calldata" - } - }, - "id": 769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3183:13:3", - "memberName": "revertOnError", - "nodeType": "MemberAccess", - "referencedDeclaration": 1283, - "src": "3171:25:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 770, - "name": "_txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "3210:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 771, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "3231:1:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 772, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "3246:8:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3255:10:3", - "memberName": "returnData", - "nodeType": "MemberAccess", - "referencedDeclaration": 2499, - "src": "3246:19:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 774, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3246:21:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 767, - "name": "_revertBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 807, - "src": "3145:12:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bool,bytes32,uint256,bytes memory)" - } - }, - "id": 775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3145:134:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 776, - "nodeType": "ExpressionStatement", - "src": "3145:134:3" - } - ] - }, - "id": 778, - "nodeType": "IfStatement", - "src": "3009:281:3", - "trueBody": { - "id": 766, - "nodeType": "Block", - "src": "3022:50:3", - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 762, - "name": "_txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "3050:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 763, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "3059:1:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 761, - "name": "TxExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1265, - "src": "3039:10:3", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", - "typeString": "function (bytes32,uint256)" - } - }, - "id": 764, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3039:22:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 765, - "nodeType": "EmitStatement", - "src": "3034:27:3" - } - ] - } - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 686, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "2355:1:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 687, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 678, - "src": "2359:4:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2355:8:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 780, - "initializationExpression": { - "assignments": [ - 683 - ], - "declarations": [ - { - "constant": false, - "id": 683, - "mutability": "mutable", - "name": "i", - "nameLocation": "2348:1:3", - "nodeType": "VariableDeclaration", - "scope": 780, - "src": "2340:9:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 682, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2340:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 685, - "initialValue": { - "hexValue": "30", - "id": 684, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2352:1:3", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2340:13:3" - }, - "loopExpression": { - "expression": { - "id": 690, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2365:3:3", - "subExpression": { - "id": 689, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 683, - "src": "2365:1:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 691, - "nodeType": "ExpressionStatement", - "src": "2365:3:3" - }, - "nodeType": "ForStatement", - "src": "2335:963:3" - } - ] - } - ] - }, - "documentation": { - "id": 668, - "nodeType": "StructuredDocumentation", - "src": "2010:151:3", - "text": " @notice Executes a list of transactions\n @param _txHash Hash of the batch of transactions\n @param _txs Transactions to execute" - }, - "id": 783, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_execute", - "nameLocation": "2173:8:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 675, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 670, - "mutability": "mutable", - "name": "_txHash", - "nameLocation": "2195:7:3", - "nodeType": "VariableDeclaration", - "scope": 783, - "src": "2187:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 669, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2187:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 674, - "mutability": "mutable", - "name": "_txs", - "nameLocation": "2231:4:3", - "nodeType": "VariableDeclaration", - "scope": 783, - "src": "2208:27:3", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - }, - "typeName": { - "baseType": { - "id": 672, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 671, - "name": "Transaction", - "nameLocations": [ - "2208:11:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "2208:11:3" - }, - "referencedDeclaration": 1292, - "src": "2208:11:3", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "id": 673, - "nodeType": "ArrayTypeName", - "src": "2208:13:3", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_storage_$dyn_storage_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - } - }, - "visibility": "internal" - } - ], - "src": "2181:58:3" - }, - "returnParameters": { - "id": 676, - "nodeType": "ParameterList", - "parameters": [], - "src": "2248:0:3" - }, - "scope": 833, - "src": "2164:1144:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 806, - "nodeType": "Block", - "src": "3771:159:3", - "statements": [ - { - "condition": { - "id": 795, - "name": "_revertOnError", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 786, - "src": "3781:14:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 804, - "nodeType": "Block", - "src": "3872:54:3", - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 799, - "name": "_txHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 788, - "src": "3894:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 800, - "name": "_index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 790, - "src": "3903:6:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 801, - "name": "_reason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 792, - "src": "3911:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 798, - "name": "TxFailed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1259, - "src": "3885:8:3", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes32,uint256,bytes memory)" - } - }, - "id": 802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3885:34:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 803, - "nodeType": "EmitStatement", - "src": "3880:39:3" - } - ] - }, - "id": 805, - "nodeType": "IfStatement", - "src": "3777:149:3", - "trueBody": { - "id": 797, - "nodeType": "Block", - "src": "3797:69:3", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "3814:46:3", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "_reason", - "nodeType": "YulIdentifier", - "src": "3827:7:3" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3836:4:3", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3823:3:3" - }, - "nodeType": "YulFunctionCall", - "src": "3823:18:3" - }, - { - "arguments": [ - { - "name": "_reason", - "nodeType": "YulIdentifier", - "src": "3849:7:3" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3843:5:3" - }, - "nodeType": "YulFunctionCall", - "src": "3843:14:3" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3816:6:3" - }, - "nodeType": "YulFunctionCall", - "src": "3816:42:3" - }, - "nodeType": "YulExpressionStatement", - "src": "3816:42:3" - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 792, - "isOffset": false, - "isSlot": false, - "src": "3827:7:3", - "valueSize": 1 - }, - { - "declaration": 792, - "isOffset": false, - "isSlot": false, - "src": "3849:7:3", - "valueSize": 1 - } - ], - "id": 796, - "nodeType": "InlineAssembly", - "src": "3805:55:3" - } - ] - } - } - ] - }, - "documentation": { - "id": 784, - "nodeType": "StructuredDocumentation", - "src": "3312:329:3", - "text": " @notice Logs a failed transaction, reverts if the transaction is not optional\n @param _revertOnError Signals if it should revert or just log\n @param _txHash Hash of the transaction\n @param _index Index of the transaction in the batch\n @param _reason Encoded revert message" - }, - "id": 807, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_revertBytes", - "nameLocation": "3653:12:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 793, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 786, - "mutability": "mutable", - "name": "_revertOnError", - "nameLocation": "3676:14:3", - "nodeType": "VariableDeclaration", - "scope": 807, - "src": "3671:19:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 785, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3671:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 788, - "mutability": "mutable", - "name": "_txHash", - "nameLocation": "3704:7:3", - "nodeType": "VariableDeclaration", - "scope": 807, - "src": "3696:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 787, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3696:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 790, - "mutability": "mutable", - "name": "_index", - "nameLocation": "3725:6:3", - "nodeType": "VariableDeclaration", - "scope": 807, - "src": "3717:14:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 789, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3717:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 792, - "mutability": "mutable", - "name": "_reason", - "nameLocation": "3750:7:3", - "nodeType": "VariableDeclaration", - "scope": 807, - "src": "3737:20:3", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 791, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3737:5:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3665:96:3" - }, - "returnParameters": { - "id": 794, - "nodeType": "ParameterList", - "parameters": [], - "src": "3771:0:3" - }, - "scope": 833, - "src": "3644:286:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "baseFunctions": [ - 919 - ], - "body": { - "id": 831, - "nodeType": "Block", - "src": "4232:139:3", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 816, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "4242:12:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 818, - "name": "IModuleCalls", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1313, - "src": "4263:12:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IModuleCalls_$1313_$", - "typeString": "type(contract IModuleCalls)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_contract$_IModuleCalls_$1313_$", - "typeString": "type(contract IModuleCalls)" - } - ], - "id": 817, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967269, - "src": "4258:4:3", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 819, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4258:18:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_contract$_IModuleCalls_$1313", - "typeString": "type(contract IModuleCalls)" - } - }, - "id": 820, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "4277:11:3", - "memberName": "interfaceId", - "nodeType": "MemberAccess", - "src": "4258:30:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4242:46:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 825, - "nodeType": "IfStatement", - "src": "4238:78:3", - "trueBody": { - "id": 824, - "nodeType": "Block", - "src": "4290:26:3", - "statements": [ - { - "expression": { - "hexValue": "74727565", - "id": 822, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4305:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 815, - "id": 823, - "nodeType": "Return", - "src": "4298:11:3" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 828, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 810, - "src": "4353:12:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "expression": { - "id": 826, - "name": "super", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967271, - "src": "4329:5:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_ModuleCalls_$833_$", - "typeString": "type(contract super ModuleCalls)" - } - }, - "id": 827, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4335:17:3", - "memberName": "supportsInterface", - "nodeType": "MemberAccess", - "referencedDeclaration": 919, - "src": "4329:23:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$", - "typeString": "function (bytes4) pure returns (bool)" - } - }, - "id": 829, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4329:37:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 815, - "id": 830, - "nodeType": "Return", - "src": "4322:44:3" - } - ] - }, - "documentation": { - "id": 808, - "nodeType": "StructuredDocumentation", - "src": "3934:203:3", - "text": " @notice Query if a contract implements an interface\n @param _interfaceID The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID`" - }, - "functionSelector": "01ffc9a7", - "id": 832, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "supportsInterface", - "nameLocation": "4149:17:3", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 812, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "4195:8:3" - }, - "parameters": { - "id": 811, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 810, - "mutability": "mutable", - "name": "_interfaceID", - "nameLocation": "4174:12:3", - "nodeType": "VariableDeclaration", - "scope": 832, - "src": "4167:19:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 809, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "4167:6:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "4166:21:3" - }, - "returnParameters": { - "id": 815, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 814, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 832, - "src": "4226:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 813, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4226:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4225:6:3" - }, - "scope": 833, - "src": "4140:231:3", - "stateMutability": "pure", - "virtual": true, - "visibility": "public" - } - ], - "scope": 834, - "src": "436:3937:3", - "usedErrors": [ - 938, - 1057, - 1093, - 1193, - 1197, - 1273, - 1279 - ] - } - ], - "src": "39:4335:3" - }, - "id": 3 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleCreator.sol", - "exportedSymbols": { - "IModuleCreator": [ - 1328 - ], - "ModuleCreator": [ - 902 - ], - "ModuleERC165": [ - 920 - ], - "ModuleSelfAuth": [ - 1116 - ] - }, - "id": 903, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 835, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:4" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "file": "./interfaces/IModuleCreator.sol", - "id": 836, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 903, - "sourceUnit": 1329, - "src": "64:41:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "file": "./ModuleSelfAuth.sol", - "id": 837, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 903, - "sourceUnit": 1117, - "src": "107:30:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "file": "./ModuleERC165.sol", - "id": 838, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 903, - "sourceUnit": 921, - "src": "138:28:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 839, - "name": "IModuleCreator", - "nameLocations": [ - "195:14:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1328, - "src": "195:14:4" - }, - "id": 840, - "nodeType": "InheritanceSpecifier", - "src": "195:14:4" - }, - { - "baseName": { - "id": 841, - "name": "ModuleERC165", - "nameLocations": [ - "211:12:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 920, - "src": "211:12:4" - }, - "id": 842, - "nodeType": "InheritanceSpecifier", - "src": "211:12:4" - }, - { - "baseName": { - "id": 843, - "name": "ModuleSelfAuth", - "nameLocations": [ - "225:14:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1116, - "src": "225:14:4" - }, - "id": 844, - "nodeType": "InheritanceSpecifier", - "src": "225:14:4" - } - ], - "canonicalName": "ModuleCreator", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 902, - "linearizedBaseContracts": [ - 902, - 1116, - 920, - 1328 - ], - "name": "ModuleCreator", - "nameLocation": "178:13:4", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "eventSelector": "a506ad4e7f05eceba62a023c3219e5bd98a615f4fa87e2afb08a2da5cf62bf0c", - "id": 848, - "name": "CreatedContract", - "nameLocation": "250:15:4", - "nodeType": "EventDefinition", - "parameters": { - "id": 847, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 846, - "indexed": false, - "mutability": "mutable", - "name": "_contract", - "nameLocation": "274:9:4", - "nodeType": "VariableDeclaration", - "scope": 848, - "src": "266:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 845, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "266:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "265:19:4" - }, - "src": "244:41:4" - }, - { - "baseFunctions": [ - 1327 - ], - "body": { - "id": 875, - "nodeType": "Block", - "src": "564:168:4", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "579:61:4", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "581:57:4", - "value": { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "callvalue", - "nodeType": "YulIdentifier", - "src": "596:9:4" - }, - "nodeType": "YulFunctionCall", - "src": "596:11:4" - }, - { - "arguments": [ - { - "name": "_code", - "nodeType": "YulIdentifier", - "src": "613:5:4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "620:2:4", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "609:3:4" - }, - "nodeType": "YulFunctionCall", - "src": "609:14:4" - }, - { - "arguments": [ - { - "name": "_code", - "nodeType": "YulIdentifier", - "src": "631:5:4" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "625:5:4" - }, - "nodeType": "YulFunctionCall", - "src": "625:12:4" - } - ], - "functionName": { - "name": "create", - "nodeType": "YulIdentifier", - "src": "589:6:4" - }, - "nodeType": "YulFunctionCall", - "src": "589:49:4" - }, - "variableNames": [ - { - "name": "addr", - "nodeType": "YulIdentifier", - "src": "581:4:4" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 851, - "isOffset": false, - "isSlot": false, - "src": "613:5:4", - "valueSize": 1 - }, - { - "declaration": 851, - "isOffset": false, - "isSlot": false, - "src": "631:5:4", - "valueSize": 1 - }, - { - "declaration": 857, - "isOffset": false, - "isSlot": false, - "src": "581:4:4", - "valueSize": 1 - } - ], - "id": 859, - "nodeType": "InlineAssembly", - "src": "570:70:4" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 865, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 860, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "649:4:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "665:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "657:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 861, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "657:7:4", - "typeDescriptions": {} - } - }, - "id": 864, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "657:10:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "649:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 870, - "nodeType": "IfStatement", - "src": "645:50:4", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 867, - "name": "_code", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "689:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 866, - "name": "CreateFailed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1319, - "src": "676:12:4", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes memory) pure" - } - }, - "id": 868, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "676:19:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 869, - "nodeType": "RevertStatement", - "src": "669:26:4" - } - }, - { - "eventCall": { - "arguments": [ - { - "id": 872, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 857, - "src": "722:4:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 871, - "name": "CreatedContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 848, - "src": "706:15:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 873, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "706:21:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 874, - "nodeType": "EmitStatement", - "src": "701:26:4" - } - ] - }, - "documentation": { - "id": 849, - "nodeType": "StructuredDocumentation", - "src": "289:164:4", - "text": " @notice Creates a contract forwarding eth value\n @param _code Creation code of the contract\n @return addr The address of the created contract" - }, - "functionSelector": "90042baf", - "id": 876, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 855, - "kind": "modifierInvocation", - "modifierName": { - "id": 854, - "name": "onlySelf", - "nameLocations": [ - "532:8:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1115, - "src": "532:8:4" - }, - "nodeType": "ModifierInvocation", - "src": "532:8:4" - } - ], - "name": "createContract", - "nameLocation": "465:14:4", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 853, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "507:8:4" - }, - "parameters": { - "id": 852, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 851, - "mutability": "mutable", - "name": "_code", - "nameLocation": "493:5:4", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "480:18:4", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 850, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "480:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "479:20:4" - }, - "returnParameters": { - "id": 858, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 857, - "mutability": "mutable", - "name": "addr", - "nameLocation": "558:4:4", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "550:12:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 856, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "550:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "549:14:4" - }, - "scope": 902, - "src": "456:276:4", - "stateMutability": "payable", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 919 - ], - "body": { - "id": 900, - "nodeType": "Block", - "src": "1034:141:4", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 890, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 885, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 879, - "src": "1044:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 887, - "name": "IModuleCreator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1328, - "src": "1065:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IModuleCreator_$1328_$", - "typeString": "type(contract IModuleCreator)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_contract$_IModuleCreator_$1328_$", - "typeString": "type(contract IModuleCreator)" - } - ], - "id": 886, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967269, - "src": "1060:4:4", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 888, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1060:20:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_contract$_IModuleCreator_$1328", - "typeString": "type(contract IModuleCreator)" - } - }, - "id": 889, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1081:11:4", - "memberName": "interfaceId", - "nodeType": "MemberAccess", - "src": "1060:32:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "1044:48:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 894, - "nodeType": "IfStatement", - "src": "1040:80:4", - "trueBody": { - "id": 893, - "nodeType": "Block", - "src": "1094:26:4", - "statements": [ - { - "expression": { - "hexValue": "74727565", - "id": 891, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1109:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 884, - "id": 892, - "nodeType": "Return", - "src": "1102:11:4" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 897, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 879, - "src": "1157:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "expression": { - "id": 895, - "name": "super", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967271, - "src": "1133:5:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_ModuleCreator_$902_$", - "typeString": "type(contract super ModuleCreator)" - } - }, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1139:17:4", - "memberName": "supportsInterface", - "nodeType": "MemberAccess", - "referencedDeclaration": 919, - "src": "1133:23:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$", - "typeString": "function (bytes4) pure returns (bool)" - } - }, - "id": 898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1133:37:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 884, - "id": 899, - "nodeType": "Return", - "src": "1126:44:4" - } - ] - }, - "documentation": { - "id": 877, - "nodeType": "StructuredDocumentation", - "src": "736:203:4", - "text": " @notice Query if a contract implements an interface\n @param _interfaceID The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID`" - }, - "functionSelector": "01ffc9a7", - "id": 901, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "supportsInterface", - "nameLocation": "951:17:4", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 881, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "997:8:4" - }, - "parameters": { - "id": 880, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 879, - "mutability": "mutable", - "name": "_interfaceID", - "nameLocation": "976:12:4", - "nodeType": "VariableDeclaration", - "scope": 901, - "src": "969:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 878, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "969:6:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "968:21:4" - }, - "returnParameters": { - "id": 884, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 883, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 901, - "src": "1028:4:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 882, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1028:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1027:6:4" - }, - "scope": 902, - "src": "942:233:4", - "stateMutability": "pure", - "virtual": true, - "visibility": "public" - } - ], - "scope": 903, - "src": "169:1008:4", - "usedErrors": [ - 1093, - 1319 - ] - } - ], - "src": "39:1139:4" - }, - "id": 4 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleERC165.sol", - "exportedSymbols": { - "ModuleERC165": [ - 920 - ] - }, - "id": 921, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 904, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:5" - }, - { - "abstract": true, - "baseContracts": [], - "canonicalName": "ModuleERC165", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 920, - "linearizedBaseContracts": [ - 920 - ], - "name": "ModuleERC165", - "nameLocation": "83:12:5", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 918, - "nodeType": "Block", - "src": "696:65:5", - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 916, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 912, - "name": "_interfaceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 907, - "src": "709:12:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "expression": { - "id": 913, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "725:4:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleERC165_$920", - "typeString": "contract ModuleERC165" - } - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "730:17:5", - "memberName": "supportsInterface", - "nodeType": "MemberAccess", - "referencedDeclaration": 919, - "src": "725:22:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_pure$_t_bytes4_$returns$_t_bool_$", - "typeString": "function (bytes4) pure external returns (bool)" - } - }, - "id": 915, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "748:8:5", - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "725:31:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "709:47:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 911, - "id": 917, - "nodeType": "Return", - "src": "702:54:5" - } - ] - }, - "documentation": { - "id": 905, - "nodeType": "StructuredDocumentation", - "src": "100:510:5", - "text": " @notice Query if a contract implements an interface\n @param _interfaceID The interface identifier, as specified in ERC-165\n @dev Adding new hooks will not lead to them being reported by this function\n without upgrading the wallet. In addition, developers must ensure that\n all inherited contracts by the main module don't conflict and are accounted\n to be supported by the supportsInterface method.\n @return `true` if the contract implements `_interfaceID`" - }, - "functionSelector": "01ffc9a7", - "id": 919, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "supportsInterface", - "nameLocation": "622:17:5", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 908, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 907, - "mutability": "mutable", - "name": "_interfaceID", - "nameLocation": "647:12:5", - "nodeType": "VariableDeclaration", - "scope": 919, - "src": "640:19:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 906, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "640:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "src": "639:21:5" - }, - "returnParameters": { - "id": 911, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 910, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 919, - "src": "690:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 909, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "690:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "689:6:5" - }, - "scope": 920, - "src": "613:148:5", - "stateMutability": "pure", - "virtual": true, - "visibility": "public" - } - ], - "scope": 921, - "src": "65:698:5", - "usedErrors": [] - } - ], - "src": "39:725:5" - }, - "id": 5 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleNonce.sol", - "exportedSymbols": { - "ModuleNonce": [ - 1051 - ], - "ModuleStorage": [ - 1179 - ], - "SubModuleNonce": [ - 2324 - ] - }, - "id": 1052, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 922, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:6" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "file": "./ModuleStorage.sol", - "id": 923, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 1052, - "sourceUnit": 1180, - "src": "64:29:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "file": "./submodules/nonce/SubModuleNonce.sol", - "id": 924, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 1052, - "sourceUnit": 2325, - "src": "95:47:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "ModuleNonce", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 1051, - "linearizedBaseContracts": [ - 1051 - ], - "name": "ModuleNonce", - "nameLocation": "154:11:6", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "eventSelector": "1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881", - "id": 930, - "name": "NonceChange", - "nameLocation": "188:11:6", - "nodeType": "EventDefinition", - "parameters": { - "id": 929, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 926, - "indexed": false, - "mutability": "mutable", - "name": "_space", - "nameLocation": "208:6:6", - "nodeType": "VariableDeclaration", - "scope": 930, - "src": "200:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 925, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "200:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 928, - "indexed": false, - "mutability": "mutable", - "name": "_newNonce", - "nameLocation": "224:9:6", - "nodeType": "VariableDeclaration", - "scope": 930, - "src": "216:17:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 927, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "216:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "199:35:6" - }, - "src": "182:53:6" - }, - { - "errorSelector": "9b6514f4", - "id": 938, - "name": "BadNonce", - "nameLocation": "257:8:6", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 937, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 932, - "mutability": "mutable", - "name": "_space", - "nameLocation": "274:6:6", - "nodeType": "VariableDeclaration", - "scope": 938, - "src": "266:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 931, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "266:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 934, - "mutability": "mutable", - "name": "_provided", - "nameLocation": "290:9:6", - "nodeType": "VariableDeclaration", - "scope": 938, - "src": "282:17:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 933, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "282:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 936, - "mutability": "mutable", - "name": "_current", - "nameLocation": "309:8:6", - "nodeType": "VariableDeclaration", - "scope": 938, - "src": "301:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 935, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "301:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "265:53:6" - }, - "src": "251:68:6" - }, - { - "constant": true, - "id": 944, - "mutability": "constant", - "name": "NONCE_KEY", - "nameLocation": "433:9:6", - "nodeType": "VariableDeclaration", - "scope": 1051, - "src": "408:112:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 939, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "408:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307838643062663166643632336436323863373431333632633132383939343865353762336532393035323138633637366433653639616265653336643661653265", - "id": 942, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "453:66:6", - "typeDescriptions": { - "typeIdentifier": "t_rational_63797217120035063192835264220719863994123296260065566452921212441289018486318_by_1", - "typeString": "int_const 6379...(69 digits omitted)...6318" - }, - "value": "0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_63797217120035063192835264220719863994123296260065566452921212441289018486318_by_1", - "typeString": "int_const 6379...(69 digits omitted)...6318" - } - ], - "id": 941, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "445:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 940, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "445:7:6", - "typeDescriptions": {} - } - }, - "id": 943, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "445:75:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "private" - }, - { - "body": { - "id": 954, - "nodeType": "Block", - "src": "727:30:6", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "30", - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "750:1:6", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 950, - "name": "readNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 976, - "src": "740:9:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "740:12:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 949, - "id": 953, - "nodeType": "Return", - "src": "733:19:6" - } - ] - }, - "documentation": { - "id": 945, - "nodeType": "StructuredDocumentation", - "src": "525:142:6", - "text": " @notice Returns the next nonce of the default nonce space\n @dev The default nonce space is 0x00\n @return The next nonce" - }, - "functionSelector": "affed0e0", - "id": 955, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "nonce", - "nameLocation": "679:5:6", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 946, - "nodeType": "ParameterList", - "parameters": [], - "src": "684:2:6" - }, - "returnParameters": { - "id": 949, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 948, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 955, - "src": "718:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 947, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "718:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "717:9:6" - }, - "scope": 1051, - "src": "670:87:6", - "stateMutability": "view", - "virtual": true, - "visibility": "external" - }, - { - "body": { - "id": 975, - "nodeType": "Block", - "src": "1011:83:6", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 967, - "name": "NONCE_KEY", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 944, - "src": "1061:9:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "id": 970, - "name": "_space", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 958, - "src": "1080:6:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 969, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1072:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 968, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1072:7:6", - "typeDescriptions": {} - } - }, - "id": 971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1072:15:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 965, - "name": "ModuleStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1179, - "src": "1032:13:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleStorage_$1179_$", - "typeString": "type(library ModuleStorage)" - } - }, - "id": 966, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1046:14:6", - "memberName": "readBytes32Map", - "nodeType": "MemberAccess", - "referencedDeclaration": 1178, - "src": "1032:28:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) view returns (bytes32)" - } - }, - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1032:56:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 964, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1024:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 963, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1024:7:6", - "typeDescriptions": {} - } - }, - "id": 973, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1024:65:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 962, - "id": 974, - "nodeType": "Return", - "src": "1017:72:6" - } - ] - }, - "documentation": { - "id": 956, - "nodeType": "StructuredDocumentation", - "src": "761:174:6", - "text": " @notice Returns the next nonce of the given nonce space\n @param _space Nonce space, each space keeps an independent nonce count\n @return The next nonce" - }, - "functionSelector": "8c3f5563", - "id": 976, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readNonce", - "nameLocation": "947:9:6", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 959, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 958, - "mutability": "mutable", - "name": "_space", - "nameLocation": "965:6:6", - "nodeType": "VariableDeclaration", - "scope": 976, - "src": "957:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 957, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "957:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "956:16:6" - }, - "returnParameters": { - "id": 962, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 961, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 976, - "src": "1002:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 960, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1002:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1001:9:6" - }, - "scope": 1051, - "src": "938:156:6", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "body": { - "id": 998, - "nodeType": "Block", - "src": "1356:85:6", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 987, - "name": "NONCE_KEY", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 944, - "src": "1392:9:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "id": 990, - "name": "_space", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 979, - "src": "1411:6:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 989, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1403:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 988, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1403:7:6", - "typeDescriptions": {} - } - }, - "id": 991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1403:15:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "id": 994, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1428:6:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 993, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1420:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 992, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1420:7:6", - "typeDescriptions": {} - } - }, - "id": 995, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1420:15:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 984, - "name": "ModuleStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1179, - "src": "1362:13:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleStorage_$1179_$", - "typeString": "type(library ModuleStorage)" - } - }, - "id": 986, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1376:15:6", - "memberName": "writeBytes32Map", - "nodeType": "MemberAccess", - "referencedDeclaration": 1157, - "src": "1362:29:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32,bytes32)" - } - }, - "id": 996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1362:74:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 997, - "nodeType": "ExpressionStatement", - "src": "1362:74:6" - } - ] - }, - "documentation": { - "id": 977, - "nodeType": "StructuredDocumentation", - "src": "1098:193:6", - "text": " @notice Changes the next nonce of the given nonce space\n @param _space Nonce space, each space keeps an independent nonce count\n @param _nonce Nonce to write on the space" - }, - "id": 999, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_writeNonce", - "nameLocation": "1303:11:6", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 982, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 979, - "mutability": "mutable", - "name": "_space", - "nameLocation": "1323:6:6", - "nodeType": "VariableDeclaration", - "scope": 999, - "src": "1315:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 978, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1315:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 981, - "mutability": "mutable", - "name": "_nonce", - "nameLocation": "1339:6:6", - "nodeType": "VariableDeclaration", - "scope": 999, - "src": "1331:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 980, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1331:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1314:32:6" - }, - "returnParameters": { - "id": 983, - "nodeType": "ParameterList", - "parameters": [], - "src": "1356:0:6" - }, - "scope": 1051, - "src": "1294:147:6", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1049, - "nodeType": "Block", - "src": "1628:446:6", - "statements": [ - { - "assignments": [ - 1006, - 1008 - ], - "declarations": [ - { - "constant": false, - "id": 1006, - "mutability": "mutable", - "name": "space", - "nameLocation": "1689:5:6", - "nodeType": "VariableDeclaration", - "scope": 1049, - "src": "1681:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1005, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1681:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1008, - "mutability": "mutable", - "name": "providedNonce", - "nameLocation": "1704:13:6", - "nodeType": "VariableDeclaration", - "scope": 1049, - "src": "1696:21:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1007, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1696:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1013, - "initialValue": { - "arguments": [ - { - "id": 1011, - "name": "_rawNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1002, - "src": "1748:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1009, - "name": "SubModuleNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2324, - "src": "1721:14:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SubModuleNonce_$2324_$", - "typeString": "type(library SubModuleNonce)" - } - }, - "id": 1010, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1736:11:6", - "memberName": "decodeNonce", - "nodeType": "MemberAccess", - "referencedDeclaration": 2323, - "src": "1721:26:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256,uint256)" - } - }, - "id": 1012, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1721:37:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1680:78:6" - }, - { - "assignments": [ - 1015 - ], - "declarations": [ - { - "constant": false, - "id": 1015, - "mutability": "mutable", - "name": "currentNonce", - "nameLocation": "1773:12:6", - "nodeType": "VariableDeclaration", - "scope": 1049, - "src": "1765:20:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1014, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1765:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1019, - "initialValue": { - "arguments": [ - { - "id": 1017, - "name": "space", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1006, - "src": "1798:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1016, - "name": "readNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 976, - "src": "1788:9:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 1018, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1788:16:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1765:39:6" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1022, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1020, - "name": "currentNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1015, - "src": "1814:12:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 1021, - "name": "providedNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1008, - "src": "1830:13:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1814:29:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1030, - "nodeType": "IfStatement", - "src": "1810:101:6", - "trueBody": { - "id": 1029, - "nodeType": "Block", - "src": "1845:66:6", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 1024, - "name": "space", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1006, - "src": "1869:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1025, - "name": "providedNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1008, - "src": "1876:13:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1026, - "name": "currentNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1015, - "src": "1891:12:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1023, - "name": "BadNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 938, - "src": "1860:8:6", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256,uint256) pure" - } - }, - "id": 1027, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1860:44:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1028, - "nodeType": "RevertStatement", - "src": "1853:51:6" - } - ] - } - }, - { - "id": 1048, - "nodeType": "UncheckedBlock", - "src": "1917:153:6", - "statements": [ - { - "assignments": [ - 1032 - ], - "declarations": [ - { - "constant": false, - "id": 1032, - "mutability": "mutable", - "name": "newNonce", - "nameLocation": "1943:8:6", - "nodeType": "VariableDeclaration", - "scope": 1048, - "src": "1935:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1031, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1935:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1036, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1033, - "name": "providedNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1008, - "src": "1954:13:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 1034, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1970:1:6", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "1954:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1935:36:6" - }, - { - "expression": { - "arguments": [ - { - "id": 1038, - "name": "space", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1006, - "src": "1992:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1039, - "name": "newNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1999:8:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1037, - "name": "_writeNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "1980:11:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256)" - } - }, - "id": 1040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1980:28:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1041, - "nodeType": "ExpressionStatement", - "src": "1980:28:6" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1043, - "name": "space", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1006, - "src": "2033:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1044, - "name": "newNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "2040:8:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1042, - "name": "NonceChange", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "2021:11:6", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256)" - } - }, - "id": 1045, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2021:28:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1046, - "nodeType": "EmitStatement", - "src": "2016:33:6" - }, - { - "functionReturnParameters": 1004, - "id": 1047, - "nodeType": "Return", - "src": "2057:7:6" - } - ] - } - ] - }, - "documentation": { - "id": 1000, - "nodeType": "StructuredDocumentation", - "src": "1445:120:6", - "text": " @notice Verify if a nonce is valid\n @param _rawNonce Nonce to validate (may contain an encoded space)" - }, - "id": 1050, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_validateNonce", - "nameLocation": "1577:14:6", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1003, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1002, - "mutability": "mutable", - "name": "_rawNonce", - "nameLocation": "1600:9:6", - "nodeType": "VariableDeclaration", - "scope": 1050, - "src": "1592:17:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1001, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1592:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1591:19:6" - }, - "returnParameters": { - "id": 1004, - "nodeType": "ParameterList", - "parameters": [], - "src": "1628:0:6" - }, - "scope": 1051, - "src": "1568:506:6", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - } - ], - "scope": 1052, - "src": "145:1931:6", - "usedErrors": [ - 938 - ] - } - ], - "src": "39:2038:6" - }, - "id": 6 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol", - "exportedSymbols": { - "ModuleOnlyDelegatecall": [ - 1085 - ] - }, - "id": 1086, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1053, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:7" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "ModuleOnlyDelegatecall", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 1085, - "linearizedBaseContracts": [ - 1085 - ], - "name": "ModuleOnlyDelegatecall", - "nameLocation": "74:22:7", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1055, - "mutability": "immutable", - "name": "self", - "nameLocation": "127:4:7", - "nodeType": "VariableDeclaration", - "scope": 1085, - "src": "101:30:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1054, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "101:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "private" - }, - { - "errorSelector": "0a57d61d", - "id": 1057, - "name": "OnlyDelegatecall", - "nameLocation": "142:16:7", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1056, - "nodeType": "ParameterList", - "parameters": [], - "src": "158:2:7" - }, - "src": "136:25:7" - }, - { - "body": { - "id": 1067, - "nodeType": "Block", - "src": "179:31:7", - "statements": [ - { - "expression": { - "id": 1065, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1060, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "185:4:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1063, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "200:4:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleOnlyDelegatecall_$1085", - "typeString": "contract ModuleOnlyDelegatecall" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ModuleOnlyDelegatecall_$1085", - "typeString": "contract ModuleOnlyDelegatecall" - } - ], - "id": 1062, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "192:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1061, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "192:7:7", - "typeDescriptions": {} - } - }, - "id": 1064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "192:13:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "185:20:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1066, - "nodeType": "ExpressionStatement", - "src": "185:20:7" - } - ] - }, - "id": 1068, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1058, - "nodeType": "ParameterList", - "parameters": [], - "src": "176:2:7" - }, - "returnParameters": { - "id": 1059, - "nodeType": "ParameterList", - "parameters": [], - "src": "179:0:7" - }, - "scope": 1085, - "src": "165:45:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1083, - "nodeType": "Block", - "src": "334:84:7", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1076, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 1073, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "352:4:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleOnlyDelegatecall_$1085", - "typeString": "contract ModuleOnlyDelegatecall" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ModuleOnlyDelegatecall_$1085", - "typeString": "contract ModuleOnlyDelegatecall" - } - ], - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "344:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1071, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "344:7:7", - "typeDescriptions": {} - } - }, - "id": 1074, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "344:13:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1075, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "361:4:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "344:21:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1081, - "nodeType": "IfStatement", - "src": "340:67:7", - "trueBody": { - "id": 1080, - "nodeType": "Block", - "src": "367:40:7", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1077, - "name": "OnlyDelegatecall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1057, - "src": "382:16:7", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1078, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "382:18:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1079, - "nodeType": "RevertStatement", - "src": "375:25:7" - } - ] - } - }, - { - "id": 1082, - "nodeType": "PlaceholderStatement", - "src": "412:1:7" - } - ] - }, - "documentation": { - "id": 1069, - "nodeType": "StructuredDocumentation", - "src": "214:89:7", - "text": " @notice Modifier that only allows functions to be called via delegatecall." - }, - "id": 1084, - "name": "onlyDelegatecall", - "nameLocation": "315:16:7", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1070, - "nodeType": "ParameterList", - "parameters": [], - "src": "331:2:7" - }, - "src": "306:112:7", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 1086, - "src": "65:355:7", - "usedErrors": [ - 1057 - ] - } - ], - "src": "39:382:7" - }, - "id": 7 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "exportedSymbols": { - "ModuleSelfAuth": [ - 1116 - ] - }, - "id": 1117, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1087, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:8" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "ModuleSelfAuth", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 1116, - "linearizedBaseContracts": [ - 1116 - ], - "name": "ModuleSelfAuth", - "nameLocation": "74:14:8", - "nodeType": "ContractDefinition", - "nodes": [ - { - "errorSelector": "e1258894", - "id": 1093, - "name": "OnlySelfAuth", - "nameLocation": "99:12:8", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1092, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1089, - "mutability": "mutable", - "name": "_sender", - "nameLocation": "120:7:8", - "nodeType": "VariableDeclaration", - "scope": 1093, - "src": "112:15:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1088, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "112:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1091, - "mutability": "mutable", - "name": "_self", - "nameLocation": "137:5:8", - "nodeType": "VariableDeclaration", - "scope": 1093, - "src": "129:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1090, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "129:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "111:32:8" - }, - "src": "93:51:8" - }, - { - "body": { - "id": 1114, - "nodeType": "Block", - "src": "168:111:8", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1095, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "178:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1096, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "182:6:8", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "178:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "id": 1099, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "200:4:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleSelfAuth_$1116", - "typeString": "contract ModuleSelfAuth" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ModuleSelfAuth_$1116", - "typeString": "contract ModuleSelfAuth" - } - ], - "id": 1098, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "192:7:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1097, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "192:7:8", - "typeDescriptions": {} - } - }, - "id": 1100, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "192:13:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "178:27:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1112, - "nodeType": "IfStatement", - "src": "174:94:8", - "trueBody": { - "id": 1111, - "nodeType": "Block", - "src": "207:61:8", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "expression": { - "id": 1103, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "235:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "239:6:8", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "235:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 1107, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "255:4:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleSelfAuth_$1116", - "typeString": "contract ModuleSelfAuth" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ModuleSelfAuth_$1116", - "typeString": "contract ModuleSelfAuth" - } - ], - "id": 1106, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "247:7:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1105, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "247:7:8", - "typeDescriptions": {} - } - }, - "id": 1108, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "247:13:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1102, - "name": "OnlySelfAuth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1093, - "src": "222:12:8", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address) pure" - } - }, - "id": 1109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "222:39:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1110, - "nodeType": "RevertStatement", - "src": "215:46:8" - } - ] - } - }, - { - "id": 1113, - "nodeType": "PlaceholderStatement", - "src": "273:1:8" - } - ] - }, - "id": 1115, - "name": "onlySelf", - "nameLocation": "157:8:8", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1094, - "nodeType": "ParameterList", - "parameters": [], - "src": "165:2:8" - }, - "src": "148:131:8", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 1117, - "src": "65:216:8", - "usedErrors": [ - 1093 - ] - } - ], - "src": "39:243:8" - }, - "id": 8 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "exportedSymbols": { - "ModuleStorage": [ - 1179 - ] - }, - "id": 1180, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1118, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:9" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "ModuleStorage", - "contractDependencies": [], - "contractKind": "library", - "fullyImplemented": true, - "id": 1179, - "linearizedBaseContracts": [ - 1179 - ], - "name": "ModuleStorage", - "nameLocation": "73:13:9", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1126, - "nodeType": "Block", - "src": "150:41:9", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "165:22:9", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "_key", - "nodeType": "YulIdentifier", - "src": "174:4:9" - }, - { - "name": "_val", - "nodeType": "YulIdentifier", - "src": "180:4:9" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "167:6:9" - }, - "nodeType": "YulFunctionCall", - "src": "167:18:9" - }, - "nodeType": "YulExpressionStatement", - "src": "167:18:9" - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 1120, - "isOffset": false, - "isSlot": false, - "src": "174:4:9", - "valueSize": 1 - }, - { - "declaration": 1122, - "isOffset": false, - "isSlot": false, - "src": "180:4:9", - "valueSize": 1 - } - ], - "id": 1125, - "nodeType": "InlineAssembly", - "src": "156:31:9" - } - ] - }, - "id": 1127, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "writeBytes32", - "nameLocation": "100:12:9", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1123, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1120, - "mutability": "mutable", - "name": "_key", - "nameLocation": "121:4:9", - "nodeType": "VariableDeclaration", - "scope": 1127, - "src": "113:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1119, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "113:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1122, - "mutability": "mutable", - "name": "_val", - "nameLocation": "135:4:9", - "nodeType": "VariableDeclaration", - "scope": 1127, - "src": "127:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1121, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "127:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "112:28:9" - }, - "returnParameters": { - "id": 1124, - "nodeType": "ParameterList", - "parameters": [], - "src": "150:0:9" - }, - "scope": 1179, - "src": "91:100:9", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1135, - "nodeType": "Block", - "src": "266:41:9", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "281:22:9", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "283:18:9", - "value": { - "arguments": [ - { - "name": "_key", - "nodeType": "YulIdentifier", - "src": "296:4:9" - } - ], - "functionName": { - "name": "sload", - "nodeType": "YulIdentifier", - "src": "290:5:9" - }, - "nodeType": "YulFunctionCall", - "src": "290:11:9" - }, - "variableNames": [ - { - "name": "val", - "nodeType": "YulIdentifier", - "src": "283:3:9" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 1129, - "isOffset": false, - "isSlot": false, - "src": "296:4:9", - "valueSize": 1 - }, - { - "declaration": 1132, - "isOffset": false, - "isSlot": false, - "src": "283:3:9", - "valueSize": 1 - } - ], - "id": 1134, - "nodeType": "InlineAssembly", - "src": "272:31:9" - } - ] - }, - "id": 1136, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readBytes32", - "nameLocation": "204:11:9", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1130, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1129, - "mutability": "mutable", - "name": "_key", - "nameLocation": "224:4:9", - "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "216:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1128, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "216:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "215:14:9" - }, - "returnParameters": { - "id": 1133, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1132, - "mutability": "mutable", - "name": "val", - "nameLocation": "261:3:9", - "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "253:11:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1131, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "253:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "252:13:9" - }, - "scope": 1179, - "src": "195:112:9", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1156, - "nodeType": "Block", - "src": "390:96:9", - "statements": [ - { - "assignments": [ - 1146 - ], - "declarations": [ - { - "constant": false, - "id": 1146, - "mutability": "mutable", - "name": "key", - "nameLocation": "404:3:9", - "nodeType": "VariableDeclaration", - "scope": 1156, - "src": "396:11:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1145, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "396:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1154, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 1150, - "name": "_key", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "431:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1151, - "name": "_subKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "437:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1148, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "420:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "424:6:9", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "420:10:9", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 1152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "420:25:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1147, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "410:9:9", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 1153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "410:36:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "396:50:9" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "461:21:9", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "key", - "nodeType": "YulIdentifier", - "src": "470:3:9" - }, - { - "name": "_val", - "nodeType": "YulIdentifier", - "src": "475:4:9" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "463:6:9" - }, - "nodeType": "YulFunctionCall", - "src": "463:17:9" - }, - "nodeType": "YulExpressionStatement", - "src": "463:17:9" - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 1142, - "isOffset": false, - "isSlot": false, - "src": "475:4:9", - "valueSize": 1 - }, - { - "declaration": 1146, - "isOffset": false, - "isSlot": false, - "src": "470:3:9", - "valueSize": 1 - } - ], - "id": 1155, - "nodeType": "InlineAssembly", - "src": "452:30:9" - } - ] - }, - "id": 1157, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "writeBytes32Map", - "nameLocation": "320:15:9", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1143, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1138, - "mutability": "mutable", - "name": "_key", - "nameLocation": "344:4:9", - "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "336:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1137, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "336:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1140, - "mutability": "mutable", - "name": "_subKey", - "nameLocation": "358:7:9", - "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "350:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1139, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "350:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1142, - "mutability": "mutable", - "name": "_val", - "nameLocation": "375:4:9", - "nodeType": "VariableDeclaration", - "scope": 1157, - "src": "367:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1141, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "367:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "335:45:9" - }, - "returnParameters": { - "id": 1144, - "nodeType": "ParameterList", - "parameters": [], - "src": "390:0:9" - }, - "scope": 1179, - "src": "311:175:9", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1177, - "nodeType": "Block", - "src": "581:96:9", - "statements": [ - { - "assignments": [ - 1167 - ], - "declarations": [ - { - "constant": false, - "id": 1167, - "mutability": "mutable", - "name": "key", - "nameLocation": "595:3:9", - "nodeType": "VariableDeclaration", - "scope": 1177, - "src": "587:11:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1166, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "587:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1175, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 1171, - "name": "_key", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "622:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1172, - "name": "_subKey", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "628:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1169, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "611:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1170, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "615:6:9", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "611:10:9", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 1173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "611:25:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1168, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "601:9:9", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 1174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "601:36:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "587:50:9" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "652:21:9", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "654:17:9", - "value": { - "arguments": [ - { - "name": "key", - "nodeType": "YulIdentifier", - "src": "667:3:9" - } - ], - "functionName": { - "name": "sload", - "nodeType": "YulIdentifier", - "src": "661:5:9" - }, - "nodeType": "YulFunctionCall", - "src": "661:10:9" - }, - "variableNames": [ - { - "name": "val", - "nodeType": "YulIdentifier", - "src": "654:3:9" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 1167, - "isOffset": false, - "isSlot": false, - "src": "667:3:9", - "valueSize": 1 - }, - { - "declaration": 1164, - "isOffset": false, - "isSlot": false, - "src": "654:3:9", - "valueSize": 1 - } - ], - "id": 1176, - "nodeType": "InlineAssembly", - "src": "643:30:9" - } - ] - }, - "id": 1178, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readBytes32Map", - "nameLocation": "499:14:9", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1162, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1159, - "mutability": "mutable", - "name": "_key", - "nameLocation": "522:4:9", - "nodeType": "VariableDeclaration", - "scope": 1178, - "src": "514:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1158, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "514:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1161, - "mutability": "mutable", - "name": "_subKey", - "nameLocation": "536:7:9", - "nodeType": "VariableDeclaration", - "scope": 1178, - "src": "528:15:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1160, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "528:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "513:31:9" - }, - "returnParameters": { - "id": 1165, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1164, - "mutability": "mutable", - "name": "val", - "nameLocation": "576:3:9", - "nodeType": "VariableDeclaration", - "scope": 1178, - "src": "568:11:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1163, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "568:7:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "567:13:9" - }, - "scope": 1179, - "src": "490:187:9", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 1180, - "src": "65:614:9", - "usedErrors": [] - } - ], - "src": "39:641:9" - }, - "id": 9 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "exportedSymbols": { - "IModuleAuth": [ - 1249 - ] - }, - "id": 1250, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1181, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:10" - }, - { - "abstract": true, - "baseContracts": [], - "canonicalName": "IModuleAuth", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": false, - "id": 1249, - "linearizedBaseContracts": [ - 1249 - ], - "name": "IModuleAuth", - "nameLocation": "83:11:10", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1187, - "mutability": "constant", - "name": "IMAGE_HASH_KEY", - "nameLocation": "231:14:10", - "nodeType": "VariableDeclaration", - "scope": 1249, - "src": "205:118:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1182, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "205:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "307865613731353766613235653361613137643061653264353238306661346532346434323163363138343261613835653435313934653131343561613732626638", - "id": 1185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "256:66:10", - "typeDescriptions": { - "typeIdentifier": "t_rational_106041467482713340379632507891644215435067329692436463218523020519418825747448_by_1", - "typeString": "int_const 1060...(70 digits omitted)...7448" - }, - "value": "0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_106041467482713340379632507891644215435067329692436463218523020519418825747448_by_1", - "typeString": "int_const 1060...(70 digits omitted)...7448" - } - ], - "id": 1184, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "248:7:10", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1183, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "248:7:10", - "typeDescriptions": {} - } - }, - "id": 1186, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "248:75:10", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "anonymous": false, - "eventSelector": "307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa", - "id": 1191, - "name": "ImageHashUpdated", - "nameLocation": "334:16:10", - "nodeType": "EventDefinition", - "parameters": { - "id": 1190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1189, - "indexed": false, - "mutability": "mutable", - "name": "newImageHash", - "nameLocation": "359:12:10", - "nodeType": "VariableDeclaration", - "scope": 1191, - "src": "351:20:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1188, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "351:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "350:22:10" - }, - "src": "328:45:10" - }, - { - "errorSelector": "4294d127", - "id": 1193, - "name": "ImageHashIsZero", - "nameLocation": "395:15:10", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1192, - "nodeType": "ParameterList", - "parameters": [], - "src": "410:2:10" - }, - "src": "389:24:10" - }, - { - "errorSelector": "6085cd82", - "id": 1197, - "name": "InvalidSignatureType", - "nameLocation": "422:20:10", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1196, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1195, - "mutability": "mutable", - "name": "_type", - "nameLocation": "450:5:10", - "nodeType": "VariableDeclaration", - "scope": 1197, - "src": "443:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - "typeName": { - "id": 1194, - "name": "bytes1", - "nodeType": "ElementaryTypeName", - "src": "443:6:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - "visibility": "internal" - } - ], - "src": "442:14:10" - }, - "src": "416:41:10" - }, - { - "id": 1208, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "_signatureValidation", - "nameLocation": "470:20:10", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1202, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1199, - "mutability": "mutable", - "name": "_digest", - "nameLocation": "504:7:10", - "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "496:15:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1198, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "496:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1201, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "532:10:10", - "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "517:25:10", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1200, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "517:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "490:56:10" - }, - "returnParameters": { - "id": 1207, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1204, - "mutability": "mutable", - "name": "isValid", - "nameLocation": "588:7:10", - "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "583:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1203, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "583:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1206, - "mutability": "mutable", - "name": "subdigest", - "nameLocation": "609:9:10", - "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "601:17:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1205, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "601:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "577:45:10" - }, - "scope": 1249, - "src": "461:162:10", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "functionSelector": "853c5068", - "id": 1225, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "signatureRecovery", - "nameLocation": "636:17:10", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1213, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1210, - "mutability": "mutable", - "name": "_digest", - "nameLocation": "667:7:10", - "nodeType": "VariableDeclaration", - "scope": 1225, - "src": "659:15:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1209, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "659:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1212, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "695:10:10", - "nodeType": "VariableDeclaration", - "scope": 1225, - "src": "680:25:10", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1211, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "680:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "653:56:10" - }, - "returnParameters": { - "id": 1224, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1215, - "mutability": "mutable", - "name": "threshold", - "nameLocation": "752:9:10", - "nodeType": "VariableDeclaration", - "scope": 1225, - "src": "744:17:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1214, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "744:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1217, - "mutability": "mutable", - "name": "weight", - "nameLocation": "775:6:10", - "nodeType": "VariableDeclaration", - "scope": 1225, - "src": "767:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1216, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "767:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1219, - "mutability": "mutable", - "name": "imageHash", - "nameLocation": "795:9:10", - "nodeType": "VariableDeclaration", - "scope": 1225, - "src": "787:17:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1218, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "787:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1221, - "mutability": "mutable", - "name": "subdigest", - "nameLocation": "818:9:10", - "nodeType": "VariableDeclaration", - "scope": 1225, - "src": "810:17:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1220, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "810:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1223, - "mutability": "mutable", - "name": "checkpoint", - "nameLocation": "841:10:10", - "nodeType": "VariableDeclaration", - "scope": 1225, - "src": "833:18:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1222, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "833:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "738:117:10" - }, - "scope": 1249, - "src": "627:229:10", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "body": { - "id": 1235, - "nodeType": "Block", - "src": "1034:23:10", - "statements": [ - { - "expression": { - "hexValue": "66616c7365", - "id": 1233, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1047:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1232, - "id": 1234, - "nodeType": "Return", - "src": "1040:12:10" - } - ] - }, - "documentation": { - "id": 1226, - "nodeType": "StructuredDocumentation", - "src": "860:102:10", - "text": " @notice Validates the signature image\n @return true if the signature image is valid" - }, - "id": 1236, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_isValidImage", - "nameLocation": "974:13:10", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1229, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1228, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 1236, - "src": "988:7:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1227, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "988:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "987:9:10" - }, - "returnParameters": { - "id": 1232, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1231, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 1236, - "src": "1028:4:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1230, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1028:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1027:6:10" - }, - "scope": 1249, - "src": "965:92:10", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "documentation": { - "id": 1237, - "nodeType": "StructuredDocumentation", - "src": "1061:134:10", - "text": " @notice Updates the signers configuration of the wallet\n @param _imageHash New required image hash of the signature" - }, - "functionSelector": "29561426", - "id": 1242, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "updateImageHash", - "nameLocation": "1207:15:10", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1240, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1239, - "mutability": "mutable", - "name": "_imageHash", - "nameLocation": "1231:10:10", - "nodeType": "VariableDeclaration", - "scope": 1242, - "src": "1223:18:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1238, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1223:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1222:20:10" - }, - "returnParameters": { - "id": 1241, - "nodeType": "ParameterList", - "parameters": [], - "src": "1259:0:10" - }, - "scope": 1249, - "src": "1198:62:10", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "external" - }, - { - "documentation": { - "id": 1243, - "nodeType": "StructuredDocumentation", - "src": "1264:134:10", - "text": " @notice Updates the signers configuration of the wallet\n @param _imageHash New required image hash of the signature" - }, - "id": 1248, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "_updateImageHash", - "nameLocation": "1410:16:10", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1246, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1245, - "mutability": "mutable", - "name": "_imageHash", - "nameLocation": "1435:10:10", - "nodeType": "VariableDeclaration", - "scope": 1248, - "src": "1427:18:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1244, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1427:7:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1426:20:10" - }, - "returnParameters": { - "id": 1247, - "nodeType": "ParameterList", - "parameters": [], - "src": "1463:0:10" - }, - "scope": 1249, - "src": "1401:63:10", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - } - ], - "scope": 1250, - "src": "65:1401:10", - "usedErrors": [ - 1193, - 1197 - ] - } - ], - "src": "39:1428:10" - }, - "id": 10 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCalls.sol", - "exportedSymbols": { - "IModuleCalls": [ - 1313 - ] - }, - "id": 1314, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1251, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:11" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IModuleCalls", - "contractDependencies": [], - "contractKind": "interface", - "fullyImplemented": false, - "id": 1313, - "linearizedBaseContracts": [ - 1313 - ], - "name": "IModuleCalls", - "nameLocation": "75:12:11", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "eventSelector": "ab46c69f7f32e1bf09b0725853da82a211e5402a0600296ab499a2fb5ea3b419", - "id": 1259, - "name": "TxFailed", - "nameLocation": "110:8:11", - "nodeType": "EventDefinition", - "parameters": { - "id": 1258, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1253, - "indexed": true, - "mutability": "mutable", - "name": "_tx", - "nameLocation": "135:3:11", - "nodeType": "VariableDeclaration", - "scope": 1259, - "src": "119:19:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1252, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "119:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1255, - "indexed": false, - "mutability": "mutable", - "name": "_index", - "nameLocation": "148:6:11", - "nodeType": "VariableDeclaration", - "scope": 1259, - "src": "140:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1254, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "140:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1257, - "indexed": false, - "mutability": "mutable", - "name": "_reason", - "nameLocation": "162:7:11", - "nodeType": "VariableDeclaration", - "scope": 1259, - "src": "156:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1256, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "156:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "118:52:11" - }, - "src": "104:67:11" - }, - { - "anonymous": false, - "eventSelector": "5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7", - "id": 1265, - "name": "TxExecuted", - "nameLocation": "180:10:11", - "nodeType": "EventDefinition", - "parameters": { - "id": 1264, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1261, - "indexed": true, - "mutability": "mutable", - "name": "_tx", - "nameLocation": "207:3:11", - "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "191:19:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1260, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "191:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1263, - "indexed": false, - "mutability": "mutable", - "name": "_index", - "nameLocation": "220:6:11", - "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "212:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1262, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "212:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "190:37:11" - }, - "src": "174:54:11" - }, - { - "errorSelector": "2bb3e3ba", - "id": 1273, - "name": "NotEnoughGas", - "nameLocation": "250:12:11", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1272, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1267, - "mutability": "mutable", - "name": "_index", - "nameLocation": "271:6:11", - "nodeType": "VariableDeclaration", - "scope": 1273, - "src": "263:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1266, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "263:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1269, - "mutability": "mutable", - "name": "_requested", - "nameLocation": "287:10:11", - "nodeType": "VariableDeclaration", - "scope": 1273, - "src": "279:18:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1268, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "279:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1271, - "mutability": "mutable", - "name": "_available", - "nameLocation": "307:10:11", - "nodeType": "VariableDeclaration", - "scope": 1273, - "src": "299:18:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1270, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "299:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "262:56:11" - }, - "src": "244:75:11" - }, - { - "errorSelector": "8f4a234f", - "id": 1279, - "name": "InvalidSignature", - "nameLocation": "328:16:11", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1278, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1275, - "mutability": "mutable", - "name": "_hash", - "nameLocation": "353:5:11", - "nodeType": "VariableDeclaration", - "scope": 1279, - "src": "345:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1274, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "345:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1277, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "366:10:11", - "nodeType": "VariableDeclaration", - "scope": 1279, - "src": "360:16:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1276, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "360:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "344:33:11" - }, - "src": "322:56:11" - }, - { - "canonicalName": "IModuleCalls.Transaction", - "id": 1292, - "members": [ - { - "constant": false, - "id": 1281, - "mutability": "mutable", - "name": "delegateCall", - "nameLocation": "439:12:11", - "nodeType": "VariableDeclaration", - "scope": 1292, - "src": "434:17:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1280, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "434:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1283, - "mutability": "mutable", - "name": "revertOnError", - "nameLocation": "489:13:11", - "nodeType": "VariableDeclaration", - "scope": 1292, - "src": "484:18:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1282, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "484:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1285, - "mutability": "mutable", - "name": "gasLimit", - "nameLocation": "559:8:11", - "nodeType": "VariableDeclaration", - "scope": 1292, - "src": "551:16:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1284, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "551:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1287, - "mutability": "mutable", - "name": "target", - "nameLocation": "615:6:11", - "nodeType": "VariableDeclaration", - "scope": 1292, - "src": "607:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1286, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "607:7:11", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1289, - "mutability": "mutable", - "name": "value", - "nameLocation": "675:5:11", - "nodeType": "VariableDeclaration", - "scope": 1292, - "src": "667:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1288, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "667:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1291, - "mutability": "mutable", - "name": "data", - "nameLocation": "737:4:11", - "nodeType": "VariableDeclaration", - "scope": 1292, - "src": "731:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1290, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "731:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "name": "Transaction", - "nameLocation": "416:11:11", - "nodeType": "StructDefinition", - "scope": 1313, - "src": "409:366:11", - "visibility": "public" - }, - { - "documentation": { - "id": 1293, - "nodeType": "StructuredDocumentation", - "src": "779:223:11", - "text": " @notice Allow wallet owner to execute an action\n @param _txs Transactions to process\n @param _nonce Signature nonce (may contain an encoded space)\n @param _signature Encoded signature" - }, - "functionSelector": "7a9a1628", - "id": 1304, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "execute", - "nameLocation": "1014:7:11", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1302, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1297, - "mutability": "mutable", - "name": "_txs", - "nameLocation": "1050:4:11", - "nodeType": "VariableDeclaration", - "scope": 1304, - "src": "1027:27:11", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - }, - "typeName": { - "baseType": { - "id": 1295, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1294, - "name": "Transaction", - "nameLocations": [ - "1027:11:11" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "1027:11:11" - }, - "referencedDeclaration": 1292, - "src": "1027:11:11", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "id": 1296, - "nodeType": "ArrayTypeName", - "src": "1027:13:11", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_storage_$dyn_storage_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1299, - "mutability": "mutable", - "name": "_nonce", - "nameLocation": "1068:6:11", - "nodeType": "VariableDeclaration", - "scope": 1304, - "src": "1060:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1298, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1060:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1301, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "1095:10:11", - "nodeType": "VariableDeclaration", - "scope": 1304, - "src": "1080:25:11", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1300, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1080:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1021:88:11" - }, - "returnParameters": { - "id": 1303, - "nodeType": "ParameterList", - "parameters": [], - "src": "1118:0:11" - }, - "scope": 1313, - "src": "1005:114:11", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 1305, - "nodeType": "StructuredDocumentation", - "src": "1123:133:11", - "text": " @notice Allow wallet to execute an action\n without signing the message\n @param _txs Transactions to execute" - }, - "functionSelector": "61c2926c", - "id": 1312, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "selfExecute", - "nameLocation": "1268:11:11", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1310, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1309, - "mutability": "mutable", - "name": "_txs", - "nameLocation": "1308:4:11", - "nodeType": "VariableDeclaration", - "scope": 1312, - "src": "1285:27:11", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - }, - "typeName": { - "baseType": { - "id": 1307, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1306, - "name": "Transaction", - "nameLocations": [ - "1285:11:11" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1292, - "src": "1285:11:11" - }, - "referencedDeclaration": 1292, - "src": "1285:11:11", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1292_storage_ptr", - "typeString": "struct IModuleCalls.Transaction" - } - }, - "id": 1308, - "nodeType": "ArrayTypeName", - "src": "1285:13:11", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1292_storage_$dyn_storage_ptr", - "typeString": "struct IModuleCalls.Transaction[]" - } - }, - "visibility": "internal" - } - ], - "src": "1279:37:11" - }, - "returnParameters": { - "id": 1311, - "nodeType": "ParameterList", - "parameters": [], - "src": "1325:0:11" - }, - "scope": 1313, - "src": "1259:67:11", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 1314, - "src": "65:1263:11", - "usedErrors": [ - 1273, - 1279 - ] - } - ], - "src": "39:1290:11" - }, - "id": 11 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleCreator.sol", - "exportedSymbols": { - "IModuleCreator": [ - 1328 - ] - }, - "id": 1329, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1315, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:12" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IModuleCreator", - "contractDependencies": [], - "contractKind": "interface", - "fullyImplemented": false, - "id": 1328, - "linearizedBaseContracts": [ - 1328 - ], - "name": "IModuleCreator", - "nameLocation": "75:14:12", - "nodeType": "ContractDefinition", - "nodes": [ - { - "errorSelector": "0d257191", - "id": 1319, - "name": "CreateFailed", - "nameLocation": "100:12:12", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1318, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1317, - "mutability": "mutable", - "name": "_code", - "nameLocation": "119:5:12", - "nodeType": "VariableDeclaration", - "scope": 1319, - "src": "113:11:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1316, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "113:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "112:13:12" - }, - "src": "94:32:12" - }, - { - "documentation": { - "id": 1320, - "nodeType": "StructuredDocumentation", - "src": "130:164:12", - "text": " @notice Creates a contract forwarding eth value\n @param _code Creation code of the contract\n @return addr The address of the created contract" - }, - "functionSelector": "90042baf", - "id": 1327, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "createContract", - "nameLocation": "306:14:12", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1323, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1322, - "mutability": "mutable", - "name": "_code", - "nameLocation": "336:5:12", - "nodeType": "VariableDeclaration", - "scope": 1327, - "src": "321:20:12", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1321, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "321:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "320:22:12" - }, - "returnParameters": { - "id": 1326, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1325, - "mutability": "mutable", - "name": "addr", - "nameLocation": "377:4:12", - "nodeType": "VariableDeclaration", - "scope": 1327, - "src": "369:12:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1324, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "369:7:12", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "368:14:12" - }, - "scope": 1328, - "src": "297:86:12", - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 1329, - "src": "65:320:12", - "usedErrors": [ - 1319 - ] - } - ], - "src": "39:347:12" - }, - "id": 12 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "exportedSymbols": { - "IERC1271Wallet": [ - 22 - ], - "LibBytes": [ - 2374 - ], - "LibBytesPointer": [ - 2476 - ], - "LibOptim": [ - 2530 - ], - "SequenceBaseSig": [ - 2021 - ], - "SignatureValidator": [ - 2798 - ] - }, - "id": 2022, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1330, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:13" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "file": "../../../../utils/SignatureValidator.sol", - "id": 1331, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2022, - "sourceUnit": 2799, - "src": "64:50:13", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "file": "../../../../utils/LibBytesPointer.sol", - "id": 1332, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2022, - "sourceUnit": 2477, - "src": "115:47:13", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "file": "../../../../utils/LibBytes.sol", - "id": 1333, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2022, - "sourceUnit": 2375, - "src": "163:40:13", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "file": "../../../../utils/LibOptim.sol", - "id": 1334, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2022, - "sourceUnit": 2531, - "src": "204:40:13", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "SequenceBaseSig", - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 1335, - "nodeType": "StructuredDocumentation", - "src": "247:171:13", - "text": " @title SequenceBaseSig Library\n @author Agustin Aguilar (aa@horizon.io)\n @notice A Solidity implementation for handling signatures in the Sequence protocol." - }, - "fullyImplemented": true, - "id": 2021, - "linearizedBaseContracts": [ - 2021 - ], - "name": "SequenceBaseSig", - "nameLocation": "427:15:13", - "nodeType": "ContractDefinition", - "nodes": [ - { - "global": false, - "id": 1338, - "libraryName": { - "id": 1336, - "name": "LibBytesPointer", - "nameLocations": [ - "453:15:13" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2476, - "src": "453:15:13" - }, - "nodeType": "UsingForDirective", - "src": "447:32:13", - "typeName": { - "id": 1337, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "473:5:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - } - }, - { - "constant": true, - "id": 1341, - "mutability": "constant", - "name": "FLAG_SIGNATURE", - "nameLocation": "508:14:13", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "483:43:13", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1339, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "483:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "30", - "id": 1340, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "525:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 1344, - "mutability": "constant", - "name": "FLAG_ADDRESS", - "nameLocation": "555:12:13", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "530:41:13", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1342, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "530:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "31", - "id": 1343, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "570:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 1347, - "mutability": "constant", - "name": "FLAG_DYNAMIC_SIGNATURE", - "nameLocation": "600:22:13", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "575:51:13", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1345, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "575:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "32", - "id": 1346, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "625:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 1350, - "mutability": "constant", - "name": "FLAG_NODE", - "nameLocation": "655:9:13", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "630:38:13", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1348, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "630:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "33", - "id": 1349, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "667:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 1353, - "mutability": "constant", - "name": "FLAG_BRANCH", - "nameLocation": "697:11:13", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "672:40:13", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1351, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "672:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "34", - "id": 1352, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "711:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 1356, - "mutability": "constant", - "name": "FLAG_SUBDIGEST", - "nameLocation": "741:14:13", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "716:43:13", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1354, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "716:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "35", - "id": 1355, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "758:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 1359, - "mutability": "constant", - "name": "FLAG_NESTED", - "nameLocation": "788:11:13", - "nodeType": "VariableDeclaration", - "scope": 2021, - "src": "763:40:13", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1357, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "763:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "36", - "id": 1358, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "802:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_6_by_1", - "typeString": "int_const 6" - }, - "value": "6" - }, - "visibility": "private" - }, - { - "errorSelector": "9a946232", - "id": 1367, - "name": "InvalidNestedSignature", - "nameLocation": "814:22:13", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1366, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1361, - "mutability": "mutable", - "name": "_hash", - "nameLocation": "845:5:13", - "nodeType": "VariableDeclaration", - "scope": 1367, - "src": "837:13:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1360, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "837:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1363, - "mutability": "mutable", - "name": "_addr", - "nameLocation": "860:5:13", - "nodeType": "VariableDeclaration", - "scope": 1367, - "src": "852:13:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1362, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "852:7:13", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1365, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "873:10:13", - "nodeType": "VariableDeclaration", - "scope": 1367, - "src": "867:16:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1364, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "867:5:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "836:48:13" - }, - "src": "808:77:13" - }, - { - "errorSelector": "b2505f7c", - "id": 1371, - "name": "InvalidSignatureFlag", - "nameLocation": "894:20:13", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 1370, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1369, - "mutability": "mutable", - "name": "_flag", - "nameLocation": "923:5:13", - "nodeType": "VariableDeclaration", - "scope": 1371, - "src": "915:13:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1368, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "915:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "914:15:13" - }, - "src": "888:42:13" - }, - { - "body": { - "id": 1393, - "nodeType": "Block", - "src": "1249:148:13", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "1901", - "id": 1382, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1305:10:13", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", - "typeString": "literal_string hex\"1901\"" - }, - "value": "\u0019\u0001" - }, - { - "expression": { - "id": 1383, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967292, - "src": "1325:5:13", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1384, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1331:7:13", - "memberName": "chainid", - "nodeType": "MemberAccess", - "src": "1325:13:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [ - { - "id": 1387, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "1356:4:13", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SequenceBaseSig_$2021", - "typeString": "library SequenceBaseSig" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SequenceBaseSig_$2021", - "typeString": "library SequenceBaseSig" - } - ], - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1348:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1385, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1348:7:13", - "typeDescriptions": {} - } - }, - "id": 1388, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1348:13:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1389, - "name": "_digest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "1371:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", - "typeString": "literal_string hex\"1901\"" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1380, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "1279:3:13", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1381, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "1283:12:13", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "1279:16:13", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 1390, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1279:107:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1379, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "1262:9:13", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 1391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1262:130:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1378, - "id": 1392, - "nodeType": "Return", - "src": "1255:137:13" - } - ] - }, - "documentation": { - "id": 1372, - "nodeType": "StructuredDocumentation", - "src": "934:236:13", - "text": " @notice Generates a subdigest for the input digest (unique for this wallet and network).\n @param _digest The input digest to generate the subdigest from.\n @return bytes32 The subdigest generated from the input digest." - }, - "id": 1394, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "subdigest", - "nameLocation": "1182:9:13", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1375, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1374, - "mutability": "mutable", - "name": "_digest", - "nameLocation": "1205:7:13", - "nodeType": "VariableDeclaration", - "scope": 1394, - "src": "1197:15:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1373, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1197:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1191:25:13" - }, - "returnParameters": { - "id": 1378, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1377, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 1394, - "src": "1240:7:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1376, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1240:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1239:9:13" - }, - "scope": 2021, - "src": "1173:224:13", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1423, - "nodeType": "Block", - "src": "1834:100:13", - "statements": [ - { - "id": 1422, - "nodeType": "UncheckedBlock", - "src": "1840:90:13", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1419, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 1408, - "name": "_weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "1881:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint96", - "typeString": "uint96" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint96", - "typeString": "uint96" - } - ], - "id": 1407, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1873:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1406, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1873:7:13", - "typeDescriptions": {} - } - }, - "id": 1409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1873:16:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "hexValue": "313630", - "id": 1410, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1893:3:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_160_by_1", - "typeString": "int_const 160" - }, - "value": "160" - }, - "src": "1873:23:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "|", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 1416, - "name": "_addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1397, - "src": "1915:5:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1415, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1907:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 1414, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1907:7:13", - "typeDescriptions": {} - } - }, - "id": 1417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1907:14:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "id": 1413, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1899:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1412, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1899:7:13", - "typeDescriptions": {} - } - }, - "id": 1418, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1899:23:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1873:49:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1405, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1865:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1404, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1865:7:13", - "typeDescriptions": {} - } - }, - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1865:58:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1403, - "id": 1421, - "nodeType": "Return", - "src": "1858:65:13" - } - ] - } - ] - }, - "documentation": { - "id": 1395, - "nodeType": "StructuredDocumentation", - "src": "1401:321:13", - "text": " @notice Generates the leaf for an address and weight.\n @dev The leaf is generated by concatenating the address and weight.\n @param _addr The address to generate the leaf for.\n @param _weight The weight to generate the leaf for.\n @return bytes32 The leaf generated from the address and weight." - }, - "id": 1424, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_leafForAddressAndWeight", - "nameLocation": "1734:24:13", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1400, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1397, - "mutability": "mutable", - "name": "_addr", - "nameLocation": "1772:5:13", - "nodeType": "VariableDeclaration", - "scope": 1424, - "src": "1764:13:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1396, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1764:7:13", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1399, - "mutability": "mutable", - "name": "_weight", - "nameLocation": "1790:7:13", - "nodeType": "VariableDeclaration", - "scope": 1424, - "src": "1783:14:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint96", - "typeString": "uint96" - }, - "typeName": { - "id": 1398, - "name": "uint96", - "nodeType": "ElementaryTypeName", - "src": "1783:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint96", - "typeString": "uint96" - } - }, - "visibility": "internal" - } - ], - "src": "1758:43:13" - }, - "returnParameters": { - "id": 1403, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1402, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 1424, - "src": "1825:7:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1401, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1825:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1824:9:13" - }, - "scope": 2021, - "src": "1725:209:13", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1440, - "nodeType": "Block", - "src": "2323:86:13", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "53657175656e636520737461746963206469676573743a0a", - "id": 1435, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2363:27:13", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c", - "typeString": "literal_string hex\"53657175656e636520737461746963206469676573743a0a\"" - }, - "value": "Sequence static digest:\n" - }, - { - "id": 1436, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1427, - "src": "2392:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c", - "typeString": "literal_string hex\"53657175656e636520737461746963206469676573743a0a\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1433, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "2346:3:13", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1434, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2350:12:13", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "2346:16:13", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 1437, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2346:57:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1432, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "2336:9:13", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 1438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2336:68:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1431, - "id": 1439, - "nodeType": "Return", - "src": "2329:75:13" - } - ] - }, - "documentation": { - "id": 1425, - "nodeType": "StructuredDocumentation", - "src": "1938:286:13", - "text": " @notice Generates the leaf for a hardcoded subdigest.\n @dev The leaf is generated by hashing 'Sequence static digest:\\n' and the subdigest.\n @param _subdigest The subdigest to generate the leaf for.\n @return bytes32 The leaf generated from the hardcoded subdigest." - }, - "id": 1441, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_leafForHardcodedSubdigest", - "nameLocation": "2236:26:13", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1428, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1427, - "mutability": "mutable", - "name": "_subdigest", - "nameLocation": "2276:10:13", - "nodeType": "VariableDeclaration", - "scope": 1441, - "src": "2268:18:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1426, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2268:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2262:28:13" - }, - "returnParameters": { - "id": 1431, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1430, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 1441, - "src": "2314:7:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1429, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2314:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2313:9:13" - }, - "scope": 2021, - "src": "2227:182:13", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1463, - "nodeType": "Block", - "src": "2953:102:13", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "53657175656e6365206e657374656420636f6e6669673a0a", - "id": 1456, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2993:27:13", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7", - "typeString": "literal_string hex\"53657175656e6365206e657374656420636f6e6669673a0a\"" - }, - "value": "Sequence nested config:\n" - }, - { - "id": 1457, - "name": "_node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1444, - "src": "3022:5:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1458, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "3029:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1459, - "name": "_weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1448, - "src": "3041:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7", - "typeString": "literal_string hex\"53657175656e6365206e657374656420636f6e6669673a0a\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1454, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "2976:3:13", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1455, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "2980:12:13", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "2976:16:13", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2976:73:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1453, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "2966:9:13", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 1461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2966:84:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1452, - "id": 1462, - "nodeType": "Return", - "src": "2959:91:13" - } - ] - }, - "documentation": { - "id": 1442, - "nodeType": "StructuredDocumentation", - "src": "2413:413:13", - "text": " @notice Generates the leaf for a nested tree node.\n @dev The leaf is generated by hashing 'Sequence nested config:\\n', the node, the threshold and the weight.\n @param _node The root of the node to generate the leaf for.\n @param _threshold The internal threshold of the tree.\n @param _weight The external weight of the tree.\n @return bytes32 The leaf generated from the nested tree." - }, - "id": 1464, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_leafForNested", - "nameLocation": "2838:14:13", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1449, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1444, - "mutability": "mutable", - "name": "_node", - "nameLocation": "2866:5:13", - "nodeType": "VariableDeclaration", - "scope": 1464, - "src": "2858:13:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1443, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2858:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1446, - "mutability": "mutable", - "name": "_threshold", - "nameLocation": "2885:10:13", - "nodeType": "VariableDeclaration", - "scope": 1464, - "src": "2877:18:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1445, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2877:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1448, - "mutability": "mutable", - "name": "_weight", - "nameLocation": "2909:7:13", - "nodeType": "VariableDeclaration", - "scope": 1464, - "src": "2901:15:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1447, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2901:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2852:68:13" - }, - "returnParameters": { - "id": 1452, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1451, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 1464, - "src": "2944:7:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1450, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2944:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2943:9:13" - }, - "scope": 2021, - "src": "2829:226:13", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1953, - "nodeType": "Block", - "src": "3672:4561:13", - "statements": [ - { - "id": 1952, - "nodeType": "UncheckedBlock", - "src": "3678:4551:13", - "statements": [ - { - "assignments": [ - 1477 - ], - "declarations": [ - { - "constant": false, - "id": 1477, - "mutability": "mutable", - "name": "rindex", - "nameLocation": "3704:6:13", - "nodeType": "VariableDeclaration", - "scope": 1952, - "src": "3696:14:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1476, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3696:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1478, - "nodeType": "VariableDeclarationStatement", - "src": "3696:14:13" - }, - { - "body": { - "id": 1950, - "nodeType": "Block", - "src": "3800:4423:13", - "statements": [ - { - "assignments": [ - 1484 - ], - "declarations": [ - { - "constant": false, - "id": 1484, - "mutability": "mutable", - "name": "flag", - "nameLocation": "3849:4:13", - "nodeType": "VariableDeclaration", - "scope": 1950, - "src": "3841:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1483, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3841:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1485, - "nodeType": "VariableDeclarationStatement", - "src": "3841:12:13" - }, - { - "expression": { - "id": 1493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1486, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "3864:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1487, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "3870:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1488, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "3863:14:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1491, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "3901:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1489, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "3880:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3891:9:13", - "memberName": "readUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 2403, - "src": "3880:20:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint8,uint256)" - } - }, - "id": 1492, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3880:28:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_uint256_$", - "typeString": "tuple(uint8,uint256)" - } - }, - "src": "3863:45:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1494, - "nodeType": "ExpressionStatement", - "src": "3863:45:13" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1495, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "3923:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1496, - "name": "FLAG_ADDRESS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1344, - "src": "3931:12:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3923:20:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1539, - "nodeType": "IfStatement", - "src": "3919:402:13", - "trueBody": { - "id": 1538, - "nodeType": "Block", - "src": "3945:376:13", - "statements": [ - { - "assignments": [ - 1499 - ], - "declarations": [ - { - "constant": false, - "id": 1499, - "mutability": "mutable", - "name": "addrWeight", - "nameLocation": "3995:10:13", - "nodeType": "VariableDeclaration", - "scope": 1538, - "src": "3989:16:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1498, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3989:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 1500, - "nodeType": "VariableDeclarationStatement", - "src": "3989:16:13" - }, - { - "assignments": [ - 1502 - ], - "declarations": [ - { - "constant": false, - "id": 1502, - "mutability": "mutable", - "name": "addr", - "nameLocation": "4015:4:13", - "nodeType": "VariableDeclaration", - "scope": 1538, - "src": "4007:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1501, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4007:7:13", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 1503, - "nodeType": "VariableDeclarationStatement", - "src": "4007:12:13" - }, - { - "expression": { - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1504, - "name": "addrWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "4032:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "id": 1505, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1502, - "src": "4044:4:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1506, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "4050:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1507, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "4031:26:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_address_$_t_uint256_$", - "typeString": "tuple(uint8,address,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1510, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "4088:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1508, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "4060:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4071:16:13", - "memberName": "readUint8Address", - "nodeType": "MemberAccess", - "referencedDeclaration": 2419, - "src": "4060:27:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint8,address,uint256)" - } - }, - "id": 1511, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4060:35:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_address_$_t_uint256_$", - "typeString": "tuple(uint8,address,uint256)" - } - }, - "src": "4031:64:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1513, - "nodeType": "ExpressionStatement", - "src": "4031:64:13" - }, - { - "assignments": [ - 1515 - ], - "declarations": [ - { - "constant": false, - "id": 1515, - "mutability": "mutable", - "name": "node", - "nameLocation": "4163:4:13", - "nodeType": "VariableDeclaration", - "scope": 1538, - "src": "4155:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1514, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4155:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1520, - "initialValue": { - "arguments": [ - { - "id": 1517, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1502, - "src": "4195:4:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1518, - "name": "addrWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "4201:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1516, - "name": "_leafForAddressAndWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1424, - "src": "4170:24:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint96_$returns$_t_bytes32_$", - "typeString": "function (address,uint96) pure returns (bytes32)" - } - }, - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4170:42:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4155:57:13" - }, - { - "expression": { - "id": 1535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1521, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "4224:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1522, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "4231:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1525, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4247:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1524, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4239:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1523, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4239:7:13", - "typeDescriptions": {} - } - }, - "id": 1526, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4239:10:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "4231:18:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 1533, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1515, - "src": "4286:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "4231:59:13", - "trueExpression": { - "arguments": [ - { - "id": 1530, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "4272:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1531, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1515, - "src": "4278:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1528, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "4252:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 1529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4261:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "4252:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 1532, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4252:31:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "4224:66:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1536, - "nodeType": "ExpressionStatement", - "src": "4224:66:13" - }, - { - "id": 1537, - "nodeType": "Continue", - "src": "4302:8:13" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1540, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "4335:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1541, - "name": "FLAG_SIGNATURE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1341, - "src": "4343:14:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4335:22:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1605, - "nodeType": "IfStatement", - "src": "4331:679:13", - "trueBody": { - "id": 1604, - "nodeType": "Block", - "src": "4359:651:13", - "statements": [ - { - "assignments": [ - 1544 - ], - "declarations": [ - { - "constant": false, - "id": 1544, - "mutability": "mutable", - "name": "addrWeight", - "nameLocation": "4402:10:13", - "nodeType": "VariableDeclaration", - "scope": 1604, - "src": "4396:16:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1543, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4396:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 1545, - "nodeType": "VariableDeclarationStatement", - "src": "4396:16:13" - }, - { - "expression": { - "id": 1553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1546, - "name": "addrWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1544, - "src": "4425:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "id": 1547, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "4437:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1548, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "4424:20:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_uint256_$", - "typeString": "tuple(uint8,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1551, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "4468:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1549, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "4447:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4458:9:13", - "memberName": "readUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 2403, - "src": "4447:20:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint8,uint256)" - } - }, - "id": 1552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4447:28:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_uint256_$", - "typeString": "tuple(uint8,uint256)" - } - }, - "src": "4424:51:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1554, - "nodeType": "ExpressionStatement", - "src": "4424:51:13" - }, - { - "assignments": [ - 1556 - ], - "declarations": [ - { - "constant": false, - "id": 1556, - "mutability": "mutable", - "name": "nrindex", - "nameLocation": "4550:7:13", - "nodeType": "VariableDeclaration", - "scope": 1604, - "src": "4542:15:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4542:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1560, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1557, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "4560:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "3636", - "id": 1558, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4569:2:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "4560:11:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4542:29:13" - }, - { - "assignments": [ - 1562 - ], - "declarations": [ - { - "constant": false, - "id": 1562, - "mutability": "mutable", - "name": "addr", - "nameLocation": "4591:4:13", - "nodeType": "VariableDeclaration", - "scope": 1604, - "src": "4583:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1561, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4583:7:13", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 1571, - "initialValue": { - "arguments": [ - { - "id": 1565, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1467, - "src": "4631:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 1566, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "4643:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 1568, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1556, - "src": "4661:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "4643:26:13", - "startExpression": { - "id": 1567, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "4654:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "expression": { - "id": 1563, - "name": "SignatureValidator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2798, - "src": "4598:18:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SignatureValidator_$2798_$", - "typeString": "type(library SignatureValidator)" - } - }, - "id": 1564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4617:13:13", - "memberName": "recoverSigner", - "nodeType": "MemberAccess", - "referencedDeclaration": 2715, - "src": "4598:32:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_address_$", - "typeString": "function (bytes32,bytes calldata) pure returns (address)" - } - }, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4598:72:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4583:87:13" - }, - { - "expression": { - "id": 1574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1572, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "4682:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1573, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1556, - "src": "4691:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4682:16:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1575, - "nodeType": "ExpressionStatement", - "src": "4682:16:13" - }, - { - "expression": { - "id": 1578, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1576, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "4764:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 1577, - "name": "addrWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1544, - "src": "4774:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4764:20:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1579, - "nodeType": "ExpressionStatement", - "src": "4764:20:13" - }, - { - "assignments": [ - 1581 - ], - "declarations": [ - { - "constant": false, - "id": 1581, - "mutability": "mutable", - "name": "node", - "nameLocation": "4852:4:13", - "nodeType": "VariableDeclaration", - "scope": 1604, - "src": "4844:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1580, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4844:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1586, - "initialValue": { - "arguments": [ - { - "id": 1583, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1562, - "src": "4884:4:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1584, - "name": "addrWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1544, - "src": "4890:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1582, - "name": "_leafForAddressAndWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1424, - "src": "4859:24:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint96_$returns$_t_bytes32_$", - "typeString": "function (address,uint96) pure returns (bytes32)" - } - }, - "id": 1585, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4859:42:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4844:57:13" - }, - { - "expression": { - "id": 1601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1587, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "4913:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1593, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1588, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "4920:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1591, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4936:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1590, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4928:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1589, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4928:7:13", - "typeDescriptions": {} - } - }, - "id": 1592, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4928:10:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "4920:18:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 1599, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "4975:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1600, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "4920:59:13", - "trueExpression": { - "arguments": [ - { - "id": 1596, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "4961:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1597, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1581, - "src": "4967:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1594, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "4941:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 1595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4950:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "4941:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 1598, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4941:31:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "4913:66:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1602, - "nodeType": "ExpressionStatement", - "src": "4913:66:13" - }, - { - "id": 1603, - "nodeType": "Continue", - "src": "4991:8:13" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1606, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "5024:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1607, - "name": "FLAG_DYNAMIC_SIGNATURE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1347, - "src": "5032:22:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5024:30:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1697, - "nodeType": "IfStatement", - "src": "5020:932:13", - "trueBody": { - "id": 1696, - "nodeType": "Block", - "src": "5056:896:13", - "statements": [ - { - "assignments": [ - 1610 - ], - "declarations": [ - { - "constant": false, - "id": 1610, - "mutability": "mutable", - "name": "addrWeight", - "nameLocation": "5110:10:13", - "nodeType": "VariableDeclaration", - "scope": 1696, - "src": "5104:16:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1609, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5104:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 1611, - "nodeType": "VariableDeclarationStatement", - "src": "5104:16:13" - }, - { - "assignments": [ - 1613 - ], - "declarations": [ - { - "constant": false, - "id": 1613, - "mutability": "mutable", - "name": "addr", - "nameLocation": "5130:4:13", - "nodeType": "VariableDeclaration", - "scope": 1696, - "src": "5122:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1612, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5122:7:13", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 1614, - "nodeType": "VariableDeclarationStatement", - "src": "5122:12:13" - }, - { - "expression": { - "id": 1623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1615, - "name": "addrWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1610, - "src": "5147:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "id": 1616, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "5159:4:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1617, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "5165:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1618, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "5146:26:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_address_$_t_uint256_$", - "typeString": "tuple(uint8,address,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1621, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "5203:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1619, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "5175:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1620, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5186:16:13", - "memberName": "readUint8Address", - "nodeType": "MemberAccess", - "referencedDeclaration": 2419, - "src": "5175:27:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint8,address,uint256)" - } - }, - "id": 1622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5175:35:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_address_$_t_uint256_$", - "typeString": "tuple(uint8,address,uint256)" - } - }, - "src": "5146:64:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1624, - "nodeType": "ExpressionStatement", - "src": "5146:64:13" - }, - { - "assignments": [ - 1626 - ], - "declarations": [ - { - "constant": false, - "id": 1626, - "mutability": "mutable", - "name": "size", - "nameLocation": "5264:4:13", - "nodeType": "VariableDeclaration", - "scope": 1696, - "src": "5256:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1625, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5256:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1627, - "nodeType": "VariableDeclarationStatement", - "src": "5256:12:13" - }, - { - "expression": { - "id": 1635, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1628, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1626, - "src": "5281:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1629, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "5287:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1630, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "5280:14:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1633, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "5319:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1631, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "5297:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5308:10:13", - "memberName": "readUint24", - "nodeType": "MemberAccess", - "referencedDeclaration": 2447, - "src": "5297:21:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint24,uint256)" - } - }, - "id": 1634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5297:29:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint24_$_t_uint256_$", - "typeString": "tuple(uint24,uint256)" - } - }, - "src": "5280:46:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1636, - "nodeType": "ExpressionStatement", - "src": "5280:46:13" - }, - { - "assignments": [ - 1638 - ], - "declarations": [ - { - "constant": false, - "id": 1638, - "mutability": "mutable", - "name": "nrindex", - "nameLocation": "5388:7:13", - "nodeType": "VariableDeclaration", - "scope": 1696, - "src": "5380:15:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1637, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5380:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1642, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1639, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "5398:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 1640, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1626, - "src": "5407:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5398:13:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5380:31:13" - }, - { - "condition": { - "id": 1652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "5427:82:13", - "subExpression": { - "arguments": [ - { - "id": 1645, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1467, - "src": "5464:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1646, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "5476:4:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { - "id": 1647, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "5482:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 1649, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1638, - "src": "5500:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "5482:26:13", - "startExpression": { - "id": 1648, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "5493:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "expression": { - "id": 1643, - "name": "SignatureValidator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2798, - "src": "5428:18:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SignatureValidator_$2798_$", - "typeString": "type(library SignatureValidator)" - } - }, - "id": 1644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5447:16:13", - "memberName": "isValidSignature", - "nodeType": "MemberAccess", - "referencedDeclaration": 2797, - "src": "5428:35:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bool_$", - "typeString": "function (bytes32,address,bytes calldata) view returns (bool)" - } - }, - "id": 1651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5428:81:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1663, - "nodeType": "IfStatement", - "src": "5423:190:13", - "trueBody": { - "id": 1662, - "nodeType": "Block", - "src": "5511:102:13", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 1654, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1467, - "src": "5555:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1655, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "5567:4:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { - "id": 1656, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "5573:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 1658, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1638, - "src": "5591:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1659, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "5573:26:13", - "startExpression": { - "id": 1657, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "5584:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "id": 1653, - "name": "InvalidNestedSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1367, - "src": "5532:22:13", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes32,address,bytes memory) pure" - } - }, - "id": 1660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5532:68:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1661, - "nodeType": "RevertStatement", - "src": "5525:75:13" - } - ] - } - }, - { - "expression": { - "id": 1666, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1664, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "5624:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1665, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1638, - "src": "5633:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5624:16:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1667, - "nodeType": "ExpressionStatement", - "src": "5624:16:13" - }, - { - "expression": { - "id": 1670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1668, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "5706:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 1669, - "name": "addrWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1610, - "src": "5716:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5706:20:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1671, - "nodeType": "ExpressionStatement", - "src": "5706:20:13" - }, - { - "assignments": [ - 1673 - ], - "declarations": [ - { - "constant": false, - "id": 1673, - "mutability": "mutable", - "name": "node", - "nameLocation": "5794:4:13", - "nodeType": "VariableDeclaration", - "scope": 1696, - "src": "5786:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1672, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5786:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1678, - "initialValue": { - "arguments": [ - { - "id": 1675, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "5826:4:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1676, - "name": "addrWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1610, - "src": "5832:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1674, - "name": "_leafForAddressAndWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1424, - "src": "5801:24:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint96_$returns$_t_bytes32_$", - "typeString": "function (address,uint96) pure returns (bytes32)" - } - }, - "id": 1677, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5801:42:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5786:57:13" - }, - { - "expression": { - "id": 1693, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1679, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "5855:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1680, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "5862:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1683, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5878:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1682, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5870:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1681, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5870:7:13", - "typeDescriptions": {} - } - }, - "id": 1684, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5870:10:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5862:18:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 1691, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1673, - "src": "5917:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1692, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "5862:59:13", - "trueExpression": { - "arguments": [ - { - "id": 1688, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "5903:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1689, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1673, - "src": "5909:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1686, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "5883:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 1687, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5892:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "5883:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 1690, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5883:31:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5855:66:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1694, - "nodeType": "ExpressionStatement", - "src": "5855:66:13" - }, - { - "id": 1695, - "nodeType": "Continue", - "src": "5933:8:13" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1700, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1698, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "5966:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1699, - "name": "FLAG_NODE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1350, - "src": "5974:9:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5966:17:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1731, - "nodeType": "IfStatement", - "src": "5962:243:13", - "trueBody": { - "id": 1730, - "nodeType": "Block", - "src": "5985:220:13", - "statements": [ - { - "assignments": [ - 1702 - ], - "declarations": [ - { - "constant": false, - "id": 1702, - "mutability": "mutable", - "name": "node", - "nameLocation": "6033:4:13", - "nodeType": "VariableDeclaration", - "scope": 1730, - "src": "6025:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1701, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6025:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1703, - "nodeType": "VariableDeclarationStatement", - "src": "6025:12:13" - }, - { - "expression": { - "id": 1711, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1704, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1702, - "src": "6050:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1705, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6056:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1706, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "6049:14:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(bytes32,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1709, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6089:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1707, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "6066:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1708, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6077:11:13", - "memberName": "readBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 2475, - "src": "6066:22:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (bytes32,uint256)" - } - }, - "id": 1710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6066:30:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(bytes32,uint256)" - } - }, - "src": "6049:47:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1712, - "nodeType": "ExpressionStatement", - "src": "6049:47:13" - }, - { - "expression": { - "id": 1727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1713, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "6108:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1714, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "6115:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1717, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6131:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1716, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6123:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1715, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6123:7:13", - "typeDescriptions": {} - } - }, - "id": 1718, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6123:10:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "6115:18:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 1725, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1702, - "src": "6170:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "6115:59:13", - "trueExpression": { - "arguments": [ - { - "id": 1722, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "6156:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1723, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1702, - "src": "6162:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1720, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "6136:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 1721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6145:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "6136:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 1724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6136:31:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "6108:66:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1728, - "nodeType": "ExpressionStatement", - "src": "6108:66:13" - }, - { - "id": 1729, - "nodeType": "Continue", - "src": "6186:8:13" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1732, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "6219:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1733, - "name": "FLAG_BRANCH", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1353, - "src": "6227:11:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6219:19:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1789, - "nodeType": "IfStatement", - "src": "6215:472:13", - "trueBody": { - "id": 1788, - "nodeType": "Block", - "src": "6240:447:13", - "statements": [ - { - "assignments": [ - 1736 - ], - "declarations": [ - { - "constant": false, - "id": 1736, - "mutability": "mutable", - "name": "size", - "nameLocation": "6317:4:13", - "nodeType": "VariableDeclaration", - "scope": 1788, - "src": "6309:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1735, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6309:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1737, - "nodeType": "VariableDeclarationStatement", - "src": "6309:12:13" - }, - { - "expression": { - "id": 1745, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1738, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1736, - "src": "6334:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1739, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6340:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1740, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "6333:14:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1743, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6372:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1741, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "6350:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1742, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6361:10:13", - "memberName": "readUint24", - "nodeType": "MemberAccess", - "referencedDeclaration": 2447, - "src": "6350:21:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint24,uint256)" - } - }, - "id": 1744, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6350:29:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint24_$_t_uint256_$", - "typeString": "tuple(uint24,uint256)" - } - }, - "src": "6333:46:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1746, - "nodeType": "ExpressionStatement", - "src": "6333:46:13" - }, - { - "assignments": [ - 1748 - ], - "declarations": [ - { - "constant": false, - "id": 1748, - "mutability": "mutable", - "name": "nrindex", - "nameLocation": "6399:7:13", - "nodeType": "VariableDeclaration", - "scope": 1788, - "src": "6391:15:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1747, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6391:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1752, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1749, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6409:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 1750, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1736, - "src": "6418:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6409:13:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6391:31:13" - }, - { - "assignments": [ - 1754 - ], - "declarations": [ - { - "constant": false, - "id": 1754, - "mutability": "mutable", - "name": "nweight", - "nameLocation": "6443:7:13", - "nodeType": "VariableDeclaration", - "scope": 1788, - "src": "6435:15:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1753, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6435:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1755, - "nodeType": "VariableDeclarationStatement", - "src": "6435:15:13" - }, - { - "assignments": [ - 1757 - ], - "declarations": [ - { - "constant": false, - "id": 1757, - "mutability": "mutable", - "name": "node", - "nameLocation": "6460:4:13", - "nodeType": "VariableDeclaration", - "scope": 1788, - "src": "6452:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1756, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6452:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1758, - "nodeType": "VariableDeclarationStatement", - "src": "6452:12:13" - }, - { - "expression": { - "id": 1769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1759, - "name": "nweight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1754, - "src": "6477:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1760, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1757, - "src": "6486:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 1761, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "6476:15:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(uint256,bytes32)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1763, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1467, - "src": "6508:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 1764, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "6520:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 1766, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "6538:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1767, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "6520:26:13", - "startExpression": { - "id": 1765, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6531:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "id": 1762, - "name": "recoverBranch", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1954, - "src": "6494:13:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,bytes32)" - } - }, - "id": 1768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6494:53:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(uint256,bytes32)" - } - }, - "src": "6476:71:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1770, - "nodeType": "ExpressionStatement", - "src": "6476:71:13" - }, - { - "expression": { - "id": 1773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1771, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "6560:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 1772, - "name": "nweight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1754, - "src": "6570:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6560:17:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1774, - "nodeType": "ExpressionStatement", - "src": "6560:17:13" - }, - { - "expression": { - "id": 1781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1775, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "6589:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1778, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "6616:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1779, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1757, - "src": "6622:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1776, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "6596:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 1777, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6605:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "6596:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 1780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6596:31:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "6589:38:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1782, - "nodeType": "ExpressionStatement", - "src": "6589:38:13" - }, - { - "expression": { - "id": 1785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1783, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6640:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1784, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "6649:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6640:16:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1786, - "nodeType": "ExpressionStatement", - "src": "6640:16:13" - }, - { - "id": 1787, - "nodeType": "Continue", - "src": "6668:8:13" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1792, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1790, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "6701:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1791, - "name": "FLAG_NESTED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1359, - "src": "6709:11:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6701:19:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1892, - "nodeType": "IfStatement", - "src": "6697:979:13", - "trueBody": { - "id": 1891, - "nodeType": "Block", - "src": "6722:954:13", - "statements": [ - { - "assignments": [ - 1794 - ], - "declarations": [ - { - "constant": false, - "id": 1794, - "mutability": "mutable", - "name": "externalWeight", - "nameLocation": "6872:14:13", - "nodeType": "VariableDeclaration", - "scope": 1891, - "src": "6864:22:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1793, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6864:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1795, - "nodeType": "VariableDeclarationStatement", - "src": "6864:22:13" - }, - { - "expression": { - "id": 1803, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1796, - "name": "externalWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "6899:14:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1797, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6915:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1798, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "6898:24:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1801, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "6946:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1799, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "6925:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6936:9:13", - "memberName": "readUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 2403, - "src": "6925:20:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint8,uint256)" - } - }, - "id": 1802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6925:28:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint8_$_t_uint256_$", - "typeString": "tuple(uint8,uint256)" - } - }, - "src": "6898:55:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1804, - "nodeType": "ExpressionStatement", - "src": "6898:55:13" - }, - { - "assignments": [ - 1806 - ], - "declarations": [ - { - "constant": false, - "id": 1806, - "mutability": "mutable", - "name": "internalThreshold", - "nameLocation": "6974:17:13", - "nodeType": "VariableDeclaration", - "scope": 1891, - "src": "6966:25:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1805, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6966:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1807, - "nodeType": "VariableDeclarationStatement", - "src": "6966:25:13" - }, - { - "expression": { - "id": 1815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1808, - "name": "internalThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "7004:17:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1809, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7023:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1810, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "7003:27:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1813, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7055:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1811, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "7033:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7044:10:13", - "memberName": "readUint16", - "nodeType": "MemberAccess", - "referencedDeclaration": 2433, - "src": "7033:21:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint16_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint16,uint256)" - } - }, - "id": 1814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7033:29:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint16_$_t_uint256_$", - "typeString": "tuple(uint16,uint256)" - } - }, - "src": "7003:59:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1816, - "nodeType": "ExpressionStatement", - "src": "7003:59:13" - }, - { - "assignments": [ - 1818 - ], - "declarations": [ - { - "constant": false, - "id": 1818, - "mutability": "mutable", - "name": "size", - "nameLocation": "7083:4:13", - "nodeType": "VariableDeclaration", - "scope": 1891, - "src": "7075:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1817, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7075:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1819, - "nodeType": "VariableDeclarationStatement", - "src": "7075:12:13" - }, - { - "expression": { - "id": 1827, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1820, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1818, - "src": "7100:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1821, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7106:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1822, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "7099:14:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1825, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7138:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1823, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "7116:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1824, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7127:10:13", - "memberName": "readUint24", - "nodeType": "MemberAccess", - "referencedDeclaration": 2447, - "src": "7116:21:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint24,uint256)" - } - }, - "id": 1826, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7116:29:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint24_$_t_uint256_$", - "typeString": "tuple(uint24,uint256)" - } - }, - "src": "7099:46:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1828, - "nodeType": "ExpressionStatement", - "src": "7099:46:13" - }, - { - "assignments": [ - 1830 - ], - "declarations": [ - { - "constant": false, - "id": 1830, - "mutability": "mutable", - "name": "nrindex", - "nameLocation": "7165:7:13", - "nodeType": "VariableDeclaration", - "scope": 1891, - "src": "7157:15:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1829, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7157:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1834, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1831, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7175:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 1832, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1818, - "src": "7184:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7175:13:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7157:31:13" - }, - { - "assignments": [ - 1836 - ], - "declarations": [ - { - "constant": false, - "id": 1836, - "mutability": "mutable", - "name": "internalWeight", - "nameLocation": "7209:14:13", - "nodeType": "VariableDeclaration", - "scope": 1891, - "src": "7201:22:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1835, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7201:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1837, - "nodeType": "VariableDeclarationStatement", - "src": "7201:22:13" - }, - { - "assignments": [ - 1839 - ], - "declarations": [ - { - "constant": false, - "id": 1839, - "mutability": "mutable", - "name": "internalRoot", - "nameLocation": "7233:12:13", - "nodeType": "VariableDeclaration", - "scope": 1891, - "src": "7225:20:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1838, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7225:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1840, - "nodeType": "VariableDeclarationStatement", - "src": "7225:20:13" - }, - { - "expression": { - "id": 1851, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1841, - "name": "internalWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1836, - "src": "7258:14:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1842, - "name": "internalRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1839, - "src": "7274:12:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 1843, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "7257:30:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(uint256,bytes32)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1845, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1467, - "src": "7304:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 1846, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "7316:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 1848, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1830, - "src": "7334:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "7316:26:13", - "startExpression": { - "id": 1847, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7327:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "id": 1844, - "name": "recoverBranch", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1954, - "src": "7290:13:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,bytes32)" - } - }, - "id": 1850, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7290:53:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(uint256,bytes32)" - } - }, - "src": "7257:86:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1852, - "nodeType": "ExpressionStatement", - "src": "7257:86:13" - }, - { - "expression": { - "id": 1855, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1853, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7355:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1854, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1830, - "src": "7364:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7355:16:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1856, - "nodeType": "ExpressionStatement", - "src": "7355:16:13" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1859, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1857, - "name": "internalWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1836, - "src": "7388:14:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 1858, - "name": "internalThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "7406:17:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7388:35:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1865, - "nodeType": "IfStatement", - "src": "7384:92:13", - "trueBody": { - "id": 1864, - "nodeType": "Block", - "src": "7425:51:13", - "statements": [ - { - "expression": { - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1860, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "7439:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 1861, - "name": "externalWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "7449:14:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7439:24:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1863, - "nodeType": "ExpressionStatement", - "src": "7439:24:13" - } - ] - } - }, - { - "assignments": [ - 1867 - ], - "declarations": [ - { - "constant": false, - "id": 1867, - "mutability": "mutable", - "name": "node", - "nameLocation": "7496:4:13", - "nodeType": "VariableDeclaration", - "scope": 1891, - "src": "7488:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1866, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7488:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1873, - "initialValue": { - "arguments": [ - { - "id": 1869, - "name": "internalRoot", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1839, - "src": "7518:12:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1870, - "name": "internalThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "7532:17:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1871, - "name": "externalWeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "7551:14:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1868, - "name": "_leafForNested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1464, - "src": "7503:14:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (bytes32,uint256,uint256) pure returns (bytes32)" - } - }, - "id": 1872, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7503:63:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7488:78:13" - }, - { - "expression": { - "id": 1888, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1874, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "7578:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1880, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1875, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "7585:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1878, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7601:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1877, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7593:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1876, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7593:7:13", - "typeDescriptions": {} - } - }, - "id": 1879, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7593:10:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "7585:18:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 1886, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1867, - "src": "7640:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1887, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "7585:59:13", - "trueExpression": { - "arguments": [ - { - "id": 1883, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "7626:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1884, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1867, - "src": "7632:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1881, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "7606:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 1882, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7615:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "7606:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7606:31:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "7578:66:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1889, - "nodeType": "ExpressionStatement", - "src": "7578:66:13" - }, - { - "id": 1890, - "nodeType": "Continue", - "src": "7657:8:13" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1893, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "7690:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1894, - "name": "FLAG_SUBDIGEST", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1356, - "src": "7698:14:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7690:22:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1945, - "nodeType": "IfStatement", - "src": "7686:485:13", - "trueBody": { - "id": 1944, - "nodeType": "Block", - "src": "7714:457:13", - "statements": [ - { - "assignments": [ - 1897 - ], - "declarations": [ - { - "constant": false, - "id": 1897, - "mutability": "mutable", - "name": "hardcoded", - "nameLocation": "7831:9:13", - "nodeType": "VariableDeclaration", - "scope": 1944, - "src": "7823:17:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1896, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7823:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1898, - "nodeType": "VariableDeclarationStatement", - "src": "7823:17:13" - }, - { - "expression": { - "id": 1906, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1899, - "name": "hardcoded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1897, - "src": "7853:9:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1900, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7864:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1901, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "7852:19:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(bytes32,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1904, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "7897:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1902, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "7874:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1903, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7885:11:13", - "memberName": "readBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 2475, - "src": "7874:22:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (bytes32,uint256)" - } - }, - "id": 1905, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7874:30:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(bytes32,uint256)" - } - }, - "src": "7852:52:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1907, - "nodeType": "ExpressionStatement", - "src": "7852:52:13" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1908, - "name": "hardcoded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1897, - "src": "7920:9:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1909, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1467, - "src": "7933:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "7920:23:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1920, - "nodeType": "IfStatement", - "src": "7916:82:13", - "trueBody": { - "id": 1919, - "nodeType": "Block", - "src": "7945:53:13", - "statements": [ - { - "expression": { - "id": 1917, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1911, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "7959:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "arguments": [ - { - "id": 1914, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7973:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1913, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7973:7:13", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "id": 1912, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967269, - "src": "7968:4:13", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1915, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7968:13:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint256", - "typeString": "type(uint256)" - } - }, - "id": 1916, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "7982:3:13", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "7968:17:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7959:26:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1918, - "nodeType": "ExpressionStatement", - "src": "7959:26:13" - } - ] - } - }, - { - "assignments": [ - 1922 - ], - "declarations": [ - { - "constant": false, - "id": 1922, - "mutability": "mutable", - "name": "node", - "nameLocation": "8018:4:13", - "nodeType": "VariableDeclaration", - "scope": 1944, - "src": "8010:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1921, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8010:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 1926, - "initialValue": { - "arguments": [ - { - "id": 1924, - "name": "hardcoded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1897, - "src": "8052:9:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1923, - "name": "_leafForHardcodedSubdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1441, - "src": "8025:26:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) pure returns (bytes32)" - } - }, - "id": 1925, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8025:37:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8010:52:13" - }, - { - "expression": { - "id": 1941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1927, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "8074:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1933, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1928, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "8081:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1931, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8097:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8089:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 1929, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8089:7:13", - "typeDescriptions": {} - } - }, - "id": 1932, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8089:10:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8081:18:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 1939, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1922, - "src": "8136:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1940, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "8081:59:13", - "trueExpression": { - "arguments": [ - { - "id": 1936, - "name": "root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1474, - "src": "8122:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1937, - "name": "node", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1922, - "src": "8128:4:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1934, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "8102:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 1935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8111:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "8102:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 1938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8102:31:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8074:66:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1942, - "nodeType": "ExpressionStatement", - "src": "8074:66:13" - }, - { - "id": 1943, - "nodeType": "Continue", - "src": "8152:8:13" - } - ] - } - }, - { - "errorCall": { - "arguments": [ - { - "id": 1947, - "name": "flag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "8209:4:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1946, - "name": "InvalidSignatureFlag", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1371, - "src": "8188:20:13", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", - "typeString": "function (uint256) pure" - } - }, - "id": 1948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8188:26:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1949, - "nodeType": "RevertStatement", - "src": "8181:33:13" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1482, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1479, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1477, - "src": "3772:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 1480, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "3781:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3792:6:13", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3781:17:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3772:26:13", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1951, - "nodeType": "WhileStatement", - "src": "3765:4458:13" - } - ] - } - ] - }, - "documentation": { - "id": 1465, - "nodeType": "StructuredDocumentation", - "src": "3059:463:13", - "text": " @notice Returns the weight and root of a signature branch.\n @dev If the signature contains a hardcoded subdigest, and it matches the input digest, then the weight is set to 2 ** 256 - 1.\n @param _subdigest The digest to verify the signature against.\n @param _signature The signature branch to recover.\n @return weight The total weight of the recovered signatures.\n @return root The root hash of the recovered configuration." - }, - "id": 1954, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "recoverBranch", - "nameLocation": "3534:13:13", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1470, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1467, - "mutability": "mutable", - "name": "_subdigest", - "nameLocation": "3561:10:13", - "nodeType": "VariableDeclaration", - "scope": 1954, - "src": "3553:18:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1466, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3553:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1469, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "3592:10:13", - "nodeType": "VariableDeclaration", - "scope": 1954, - "src": "3577:25:13", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1468, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3577:5:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3547:59:13" - }, - "returnParameters": { - "id": 1475, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1472, - "mutability": "mutable", - "name": "weight", - "nameLocation": "3643:6:13", - "nodeType": "VariableDeclaration", - "scope": 1954, - "src": "3635:14:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1471, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3635:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1474, - "mutability": "mutable", - "name": "root", - "nameLocation": "3663:4:13", - "nodeType": "VariableDeclaration", - "scope": 1954, - "src": "3655:12:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1473, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3655:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3629:42:13" - }, - "scope": 2021, - "src": "3525:4708:13", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2019, - "nodeType": "Block", - "src": "9085:449:13", - "statements": [ - { - "id": 2018, - "nodeType": "UncheckedBlock", - "src": "9091:439:13", - "statements": [ - { - "expression": { - "id": 1979, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1970, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1964, - "src": "9110:6:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1971, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1966, - "src": "9118:9:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 1972, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "9109:19:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(uint256,bytes32)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1974, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1957, - "src": "9145:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 1975, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "9157:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 1977, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "9157:14:13", - "startExpression": { - "hexValue": "36", - "id": 1976, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9168:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_6_by_1", - "typeString": "int_const 6" - }, - "value": "6" - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "id": 1973, - "name": "recoverBranch", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1954, - "src": "9131:13:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,bytes32)" - } - }, - "id": 1978, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9131:41:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(uint256,bytes32)" - } - }, - "src": "9109:63:13", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1980, - "nodeType": "ExpressionStatement", - "src": "9109:63:13" - }, - { - "expression": { - "id": 1986, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1981, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1962, - "src": "9278:9:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1984, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "9315:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "id": 1982, - "name": "LibBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2374, - "src": "9290:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibBytes_$2374_$", - "typeString": "type(library LibBytes)" - } - }, - "id": 1983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9299:15:13", - "memberName": "readFirstUint16", - "nodeType": "MemberAccess", - "referencedDeclaration": 2361, - "src": "9290:24:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint16_$", - "typeString": "function (bytes calldata) pure returns (uint16)" - } - }, - "id": 1985, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9290:36:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "9278:48:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1987, - "nodeType": "ExpressionStatement", - "src": "9278:48:13" - }, - { - "expression": { - "id": 1994, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1988, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1968, - "src": "9334:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1991, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "9367:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "hexValue": "32", - "id": 1992, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9379:1:13", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - } - ], - "expression": { - "id": 1989, - "name": "LibBytes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2374, - "src": "9347:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibBytes_$2374_$", - "typeString": "type(library LibBytes)" - } - }, - "id": 1990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9356:10:13", - "memberName": "readUint32", - "nodeType": "MemberAccess", - "referencedDeclaration": 2373, - "src": "9347:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint32_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint32)" - } - }, - "id": 1993, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9347:34:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "9334:47:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1995, - "nodeType": "ExpressionStatement", - "src": "9334:47:13" - }, - { - "expression": { - "id": 2005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1996, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1966, - "src": "9390:9:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1999, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1966, - "src": "9422:9:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "id": 2002, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1962, - "src": "9441:9:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2001, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9433:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 2000, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9433:7:13", - "typeDescriptions": {} - } - }, - "id": 2003, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9433:18:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 1997, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "9402:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 1998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9411:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "9402:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 2004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9402:50:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "9390:62:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 2006, - "nodeType": "ExpressionStatement", - "src": "9390:62:13" - }, - { - "expression": { - "id": 2016, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2007, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1966, - "src": "9460:9:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2010, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1966, - "src": "9492:9:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "id": 2013, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1968, - "src": "9511:10:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2012, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9503:7:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 2011, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9503:7:13", - "typeDescriptions": {} - } - }, - "id": 2014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9503:19:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 2008, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "9472:8:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 2009, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9481:10:13", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "9472:19:13", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 2015, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9472:51:13", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "9460:63:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 2017, - "nodeType": "ExpressionStatement", - "src": "9460:63:13" - } - ] - } - ] - }, - "documentation": { - "id": 1955, - "nodeType": "StructuredDocumentation", - "src": "8237:652:13", - "text": " @notice Returns the threshold, weight, root, and checkpoint of a signature.\n @dev To verify the signature, the weight must be greater than or equal to the threshold, and the root\n must match the expected `imageHash` of the wallet.\n @param _subdigest The digest to verify the signature against.\n @param _signature The signature to recover.\n @return threshold The minimum weight required for the signature to be valid.\n @return weight The total weight of the recovered signatures.\n @return imageHash The root hash of the recovered configuration\n @return checkpoint The checkpoint of the signature." - }, - "id": 2020, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "recover", - "nameLocation": "8901:7:13", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1960, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1957, - "mutability": "mutable", - "name": "_subdigest", - "nameLocation": "8922:10:13", - "nodeType": "VariableDeclaration", - "scope": 2020, - "src": "8914:18:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1956, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8914:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1959, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "8953:10:13", - "nodeType": "VariableDeclaration", - "scope": 2020, - "src": "8938:25:13", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1958, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8938:5:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "8908:59:13" - }, - "returnParameters": { - "id": 1969, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1962, - "mutability": "mutable", - "name": "threshold", - "nameLocation": "9004:9:13", - "nodeType": "VariableDeclaration", - "scope": 2020, - "src": "8996:17:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1961, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8996:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1964, - "mutability": "mutable", - "name": "weight", - "nameLocation": "9027:6:13", - "nodeType": "VariableDeclaration", - "scope": 2020, - "src": "9019:14:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1963, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9019:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1966, - "mutability": "mutable", - "name": "imageHash", - "nameLocation": "9047:9:13", - "nodeType": "VariableDeclaration", - "scope": 2020, - "src": "9039:17:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1965, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9039:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1968, - "mutability": "mutable", - "name": "checkpoint", - "nameLocation": "9070:10:13", - "nodeType": "VariableDeclaration", - "scope": 2020, - "src": "9062:18:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1967, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9062:7:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "8990:94:13" - }, - "scope": 2021, - "src": "8892:642:13", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2022, - "src": "419:9117:13", - "usedErrors": [ - 1367, - 1371 - ] - } - ], - "src": "39:9498:13" - }, - "id": 13 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol", - "exportedSymbols": { - "IERC1271Wallet": [ - 22 - ], - "IModuleAuth": [ - 1249 - ], - "LibBytes": [ - 2374 - ], - "LibBytesPointer": [ - 2476 - ], - "LibOptim": [ - 2530 - ], - "ModuleSelfAuth": [ - 1116 - ], - "ModuleStorage": [ - 1179 - ], - "SequenceBaseSig": [ - 2021 - ], - "SequenceChainedSig": [ - 2218 - ], - "SignatureValidator": [ - 2798 - ] - }, - "id": 2219, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2023, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:14" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "file": "./SequenceBaseSig.sol", - "id": 2024, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2219, - "sourceUnit": 2022, - "src": "64:31:14", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/interfaces/IModuleAuth.sol", - "file": "../../interfaces/IModuleAuth.sol", - "id": 2025, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2219, - "sourceUnit": 1250, - "src": "97:42:14", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleSelfAuth.sol", - "file": "../../ModuleSelfAuth.sol", - "id": 2026, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2219, - "sourceUnit": 1117, - "src": "141:34:14", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/ModuleStorage.sol", - "file": "../../ModuleStorage.sol", - "id": 2027, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2219, - "sourceUnit": 1180, - "src": "176:33:14", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "file": "../../../../utils/LibBytesPointer.sol", - "id": 2028, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2219, - "sourceUnit": 2477, - "src": "211:47:14", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "file": "../../../../utils/LibOptim.sol", - "id": 2029, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2219, - "sourceUnit": 2531, - "src": "259:40:14", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": true, - "baseContracts": [ - { - "baseName": { - "id": 2031, - "name": "IModuleAuth", - "nameLocations": [ - "743:11:14" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1249, - "src": "743:11:14" - }, - "id": 2032, - "nodeType": "InheritanceSpecifier", - "src": "743:11:14" - }, - { - "baseName": { - "id": 2033, - "name": "ModuleSelfAuth", - "nameLocations": [ - "756:14:14" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1116, - "src": "756:14:14" - }, - "id": 2034, - "nodeType": "InheritanceSpecifier", - "src": "756:14:14" - } - ], - "canonicalName": "SequenceChainedSig", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 2030, - "nodeType": "StructuredDocumentation", - "src": "301:401:14", - "text": " @title Sequence chained auth recovery submodule\n @author Agustin Aguilar (aa@horizon.io)\n @notice Defines Sequence signatures that work by delegating control to new configurations.\n @dev The delegations can be chained together, the first signature is the one that is used to validate\n the message, the last signature must match the current on-chain configuration of the wallet." - }, - "fullyImplemented": false, - "id": 2218, - "linearizedBaseContracts": [ - 2218, - 1116, - 1249 - ], - "name": "SequenceChainedSig", - "nameLocation": "721:18:14", - "nodeType": "ContractDefinition", - "nodes": [ - { - "global": false, - "id": 2037, - "libraryName": { - "id": 2035, - "name": "LibBytesPointer", - "nameLocations": [ - "781:15:14" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2476, - "src": "781:15:14" - }, - "nodeType": "UsingForDirective", - "src": "775:32:14", - "typeName": { - "id": 2036, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "801:5:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - } - }, - { - "constant": true, - "functionSelector": "57c56d6b", - "id": 2042, - "mutability": "constant", - "name": "SET_IMAGE_HASH_TYPE_HASH", - "nameLocation": "835:24:14", - "nodeType": "VariableDeclaration", - "scope": 2218, - "src": "811:95:14", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2038, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "811:7:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "536574496d61676548617368286279746573333220696d6167654861736829", - "id": 2040, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "872:33:14", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d1", - "typeString": "literal_string \"SetImageHash(bytes32 imageHash)\"" - }, - "value": "SetImageHash(bytes32 imageHash)" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_8713a7c4465f6fbee2b6e9d6646d1d9f83fec929edfc4baf661f3c865bdd04d1", - "typeString": "literal_string \"SetImageHash(bytes32 imageHash)\"" - } - ], - "id": 2039, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "862:9:14", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 2041, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "862:44:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { - "errorSelector": "b006aba0", - "id": 2050, - "name": "LowWeightChainedSignature", - "nameLocation": "917:25:14", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 2049, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2044, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "949:10:14", - "nodeType": "VariableDeclaration", - "scope": 2050, - "src": "943:16:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2043, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "943:5:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2046, - "mutability": "mutable", - "name": "threshold", - "nameLocation": "969:9:14", - "nodeType": "VariableDeclaration", - "scope": 2050, - "src": "961:17:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2045, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "961:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2048, - "mutability": "mutable", - "name": "_weight", - "nameLocation": "988:7:14", - "nodeType": "VariableDeclaration", - "scope": 2050, - "src": "980:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2047, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "980:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "942:54:14" - }, - "src": "911:86:14" - }, - { - "errorSelector": "37daf62b", - "id": 2056, - "name": "WrongChainedCheckpointOrder", - "nameLocation": "1006:27:14", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 2055, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2052, - "mutability": "mutable", - "name": "_current", - "nameLocation": "1042:8:14", - "nodeType": "VariableDeclaration", - "scope": 2056, - "src": "1034:16:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2051, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1034:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2054, - "mutability": "mutable", - "name": "_prev", - "nameLocation": "1060:5:14", - "nodeType": "VariableDeclaration", - "scope": 2056, - "src": "1052:13:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2053, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1052:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1033:33:14" - }, - "src": "1000:67:14" - }, - { - "body": { - "id": 2070, - "nodeType": "Block", - "src": "1381:75:14", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 2066, - "name": "SET_IMAGE_HASH_TYPE_HASH", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1414:24:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2067, - "name": "_imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2059, - "src": "1440:10:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 2064, - "name": "LibOptim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2530, - "src": "1394:8:14", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibOptim_$2530_$", - "typeString": "type(library LibOptim)" - } - }, - "id": 2065, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1403:10:14", - "memberName": "fkeccak256", - "nodeType": "MemberAccess", - "referencedDeclaration": 2491, - "src": "1394:19:14", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32,bytes32) pure returns (bytes32)" - } - }, - "id": 2068, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1394:57:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 2063, - "id": 2069, - "nodeType": "Return", - "src": "1387:64:14" - } - ] - }, - "documentation": { - "id": 2057, - "nodeType": "StructuredDocumentation", - "src": "1071:222:14", - "text": " @notice Defined the special token that must be signed to delegate control to a new configuration.\n @param _imageHash The hash of the new configuration.\n @return bytes32 The message hash to be signed." - }, - "id": 2071, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_hashSetImageHashStruct", - "nameLocation": "1305:23:14", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2060, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2059, - "mutability": "mutable", - "name": "_imageHash", - "nameLocation": "1337:10:14", - "nodeType": "VariableDeclaration", - "scope": 2071, - "src": "1329:18:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2058, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1329:7:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1328:20:14" - }, - "returnParameters": { - "id": 2063, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2062, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 2071, - "src": "1372:7:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2061, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1372:7:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1371:9:14" - }, - "scope": 2218, - "src": "1296:160:14", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2216, - "nodeType": "Block", - "src": "2540:1839:14", - "statements": [ - { - "assignments": [ - 2090 - ], - "declarations": [ - { - "constant": false, - "id": 2090, - "mutability": "mutable", - "name": "rindex", - "nameLocation": "2554:6:14", - "nodeType": "VariableDeclaration", - "scope": 2216, - "src": "2546:14:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2089, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2546:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2092, - "initialValue": { - "hexValue": "31", - "id": 2091, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2563:1:14", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2546:18:14" - }, - { - "assignments": [ - 2094 - ], - "declarations": [ - { - "constant": false, - "id": 2094, - "mutability": "mutable", - "name": "sigSize", - "nameLocation": "2578:7:14", - "nodeType": "VariableDeclaration", - "scope": 2216, - "src": "2570:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2093, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2570:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2095, - "nodeType": "VariableDeclarationStatement", - "src": "2570:15:14" - }, - { - "expression": { - "id": 2103, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 2096, - "name": "sigSize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2094, - "src": "2696:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2097, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "2705:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2098, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "2695:17:14", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2101, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "2737:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 2099, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "2715:10:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2100, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2726:10:14", - "memberName": "readUint24", - "nodeType": "MemberAccess", - "referencedDeclaration": 2447, - "src": "2715:21:14", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint24,uint256)" - } - }, - "id": 2102, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2715:29:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint24_$_t_uint256_$", - "typeString": "tuple(uint24,uint256)" - } - }, - "src": "2695:49:14", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2104, - "nodeType": "ExpressionStatement", - "src": "2695:49:14" - }, - { - "assignments": [ - 2106 - ], - "declarations": [ - { - "constant": false, - "id": 2106, - "mutability": "mutable", - "name": "nrindex", - "nameLocation": "2758:7:14", - "nodeType": "VariableDeclaration", - "scope": 2216, - "src": "2750:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2105, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2750:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2110, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2107, - "name": "sigSize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2094, - "src": "2768:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 2108, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "2778:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2768:16:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2750:34:14" - }, - { - "expression": { - "id": 2124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 2111, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2079, - "src": "2799:9:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2112, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "2816:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2113, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "2830:9:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2114, - "name": "subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2085, - "src": "2847:9:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2115, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2087, - "src": "2864:10:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2116, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "2791:89:14", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2118, - "name": "_digest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2074, - "src": "2908:7:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 2119, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "2923:10:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 2121, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "2941:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "2923:26:14", - "startExpression": { - "id": 2120, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "2934:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "id": 2117, - "name": "signatureRecovery", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1225, - "src": "2883:17:14", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "id": 2123, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2883:72:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "src": "2791:164:14", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2125, - "nodeType": "ExpressionStatement", - "src": "2791:164:14" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2128, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2126, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "2966:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 2127, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2079, - "src": "2975:9:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2966:18:14", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2139, - "nodeType": "IfStatement", - "src": "2962:118:14", - "trueBody": { - "id": 2138, - "nodeType": "Block", - "src": "2986:94:14", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "baseExpression": { - "id": 2130, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "3027:10:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 2132, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "3045:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2133, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "3027:26:14", - "startExpression": { - "id": 2131, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "3038:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - }, - { - "id": 2134, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2079, - "src": "3055:9:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2135, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "3066:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2129, - "name": "LowWeightChainedSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2050, - "src": "3001:25:14", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (bytes memory,uint256,uint256) pure" - } - }, - "id": 2136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3001:72:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2137, - "nodeType": "RevertStatement", - "src": "2994:79:14" - } - ] - } - }, - { - "expression": { - "id": 2142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2140, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "3086:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2141, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "3095:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3086:16:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2143, - "nodeType": "ExpressionStatement", - "src": "3086:16:14" - }, - { - "body": { - "id": 2214, - "nodeType": "Block", - "src": "3318:1057:14", - "statements": [ - { - "expression": { - "id": 2155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 2148, - "name": "sigSize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2094, - "src": "3378:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2149, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "3387:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2150, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "3377:17:14", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2153, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "3419:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 2151, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "3397:10:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3408:10:14", - "memberName": "readUint24", - "nodeType": "MemberAccess", - "referencedDeclaration": 2447, - "src": "3397:21:14", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint24,uint256)" - } - }, - "id": 2154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3397:29:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint24_$_t_uint256_$", - "typeString": "tuple(uint24,uint256)" - } - }, - "src": "3377:49:14", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2156, - "nodeType": "ExpressionStatement", - "src": "3377:49:14" - }, - { - "expression": { - "id": 2161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2157, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "3434:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2158, - "name": "sigSize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2094, - "src": "3444:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 2159, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "3454:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3444:16:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3434:26:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2162, - "nodeType": "ExpressionStatement", - "src": "3434:26:14" - }, - { - "assignments": [ - 2164 - ], - "declarations": [ - { - "constant": false, - "id": 2164, - "mutability": "mutable", - "name": "nextCheckpoint", - "nameLocation": "3477:14:14", - "nodeType": "VariableDeclaration", - "scope": 2214, - "src": "3469:22:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2163, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3469:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2165, - "nodeType": "VariableDeclarationStatement", - "src": "3469:22:14" - }, - { - "expression": { - "id": 2180, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 2166, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2079, - "src": "3510:9:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2167, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "3529:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2168, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "3545:9:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - null, - { - "id": 2169, - "name": "nextCheckpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2164, - "src": "3662:14:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2170, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "3500:184:14", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$__$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 2173, - "name": "imageHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "3738:9:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2172, - "name": "_hashSetImageHashStruct", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "3714:23:14", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$", - "typeString": "function (bytes32) pure returns (bytes32)" - } - }, - "id": 2174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3714:34:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 2175, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "3758:10:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 2177, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "3776:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "3758:26:14", - "startExpression": { - "id": 2176, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "3769:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "id": 2171, - "name": "signatureRecovery", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1225, - "src": "3687:17:14", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "id": 2179, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3687:105:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,bytes32,uint256)" - } - }, - "src": "3500:292:14", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2181, - "nodeType": "ExpressionStatement", - "src": "3500:292:14" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2182, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "3833:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 2183, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2079, - "src": "3842:9:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3833:18:14", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2195, - "nodeType": "IfStatement", - "src": "3829:122:14", - "trueBody": { - "id": 2194, - "nodeType": "Block", - "src": "3853:98:14", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "baseExpression": { - "id": 2186, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "3896:10:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "id": 2188, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "3914:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2189, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "3896:26:14", - "startExpression": { - "id": 2187, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "3907:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - }, - { - "id": 2190, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2079, - "src": "3924:9:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2191, - "name": "weight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "3935:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2185, - "name": "LowWeightChainedSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2050, - "src": "3870:25:14", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (bytes memory,uint256,uint256) pure" - } - }, - "id": 2192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3870:72:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2193, - "nodeType": "RevertStatement", - "src": "3863:79:14" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2196, - "name": "nextCheckpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2164, - "src": "4198:14:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 2197, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2087, - "src": "4216:10:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4198:28:14", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2205, - "nodeType": "IfStatement", - "src": "4194:115:14", - "trueBody": { - "id": 2204, - "nodeType": "Block", - "src": "4228:81:14", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2200, - "name": "nextCheckpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2164, - "src": "4273:14:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2201, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2087, - "src": "4289:10:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2199, - "name": "WrongChainedCheckpointOrder", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2056, - "src": "4245:27:14", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256) pure" - } - }, - "id": 2202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4245:55:14", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2203, - "nodeType": "RevertStatement", - "src": "4238:62:14" - } - ] - } - }, - { - "expression": { - "id": 2208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2206, - "name": "checkpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2087, - "src": "4317:10:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2207, - "name": "nextCheckpoint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2164, - "src": "4330:14:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4317:27:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2209, - "nodeType": "ExpressionStatement", - "src": "4317:27:14" - }, - { - "expression": { - "id": 2212, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2210, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "4352:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2211, - "name": "nrindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2106, - "src": "4361:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4352:16:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2213, - "nodeType": "ExpressionStatement", - "src": "4352:16:14" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2147, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2144, - "name": "rindex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "3290:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 2145, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "3299:10:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3310:6:14", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3299:17:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3290:26:14", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2215, - "nodeType": "WhileStatement", - "src": "3283:1092:14" - } - ] - }, - "documentation": { - "id": 2072, - "nodeType": "StructuredDocumentation", - "src": "1460:857:14", - "text": " @notice Returns the threshold, weight, root, and checkpoint of a (chained) signature.\n \n @dev This method return the `threshold`, `weight` and `imageHash` of the last signature in the chain.\n Intermediate signatures are validated directly in this method. The `subdigest` is the one of the\n first signature in the chain (since that's the one that is used to validate the message).\n @param _digest The digest to recover the signature from.\n @param _signature The signature to recover.\n @return threshold The threshold of the (last) signature.\n @return weight The weight of the (last) signature.\n @return imageHash The image hash of the (last) signature.\n @return subdigest The subdigest of the (first) signature in the chain.\n @return checkpoint The checkpoint of the (last) signature." - }, - "id": 2217, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "chainedRecover", - "nameLocation": "2329:14:14", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2077, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2074, - "mutability": "mutable", - "name": "_digest", - "nameLocation": "2357:7:14", - "nodeType": "VariableDeclaration", - "scope": 2217, - "src": "2349:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2073, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2349:7:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2076, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "2385:10:14", - "nodeType": "VariableDeclaration", - "scope": 2217, - "src": "2370:25:14", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2075, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2370:5:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "2343:56:14" - }, - "returnParameters": { - "id": 2088, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2079, - "mutability": "mutable", - "name": "threshold", - "nameLocation": "2436:9:14", - "nodeType": "VariableDeclaration", - "scope": 2217, - "src": "2428:17:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2078, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2428:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2081, - "mutability": "mutable", - "name": "weight", - "nameLocation": "2459:6:14", - "nodeType": "VariableDeclaration", - "scope": 2217, - "src": "2451:14:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2080, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2451:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2083, - "mutability": "mutable", - "name": "imageHash", - "nameLocation": "2479:9:14", - "nodeType": "VariableDeclaration", - "scope": 2217, - "src": "2471:17:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2082, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2471:7:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2085, - "mutability": "mutable", - "name": "subdigest", - "nameLocation": "2502:9:14", - "nodeType": "VariableDeclaration", - "scope": 2217, - "src": "2494:17:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2084, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2494:7:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2087, - "mutability": "mutable", - "name": "checkpoint", - "nameLocation": "2525:10:14", - "nodeType": "VariableDeclaration", - "scope": 2217, - "src": "2517:18:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2086, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2517:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2422:117:14" - }, - "scope": 2218, - "src": "2320:2059:14", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2219, - "src": "703:3678:14", - "usedErrors": [ - 1093, - 1193, - 1197, - 2050, - 2056 - ] - } - ], - "src": "39:4343:14" - }, - "id": 14 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol", - "exportedSymbols": { - "IERC1271Wallet": [ - 22 - ], - "LibBytes": [ - 2374 - ], - "LibBytesPointer": [ - 2476 - ], - "LibOptim": [ - 2530 - ], - "SequenceBaseSig": [ - 2021 - ], - "SequenceDynamicSig": [ - 2247 - ], - "SignatureValidator": [ - 2798 - ] - }, - "id": 2248, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2220, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:15" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol", - "file": "./SequenceBaseSig.sol", - "id": 2221, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2248, - "sourceUnit": 2022, - "src": "64:31:15", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "SequenceDynamicSig", - "contractDependencies": [], - "contractKind": "library", - "fullyImplemented": true, - "id": 2247, - "linearizedBaseContracts": [ - 2247 - ], - "name": "SequenceDynamicSig", - "nameLocation": "106:18:15", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2245, - "nodeType": "Block", - "src": "841:69:15", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 2239, - "name": "_subdigest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2224, - "src": "878:10:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 2240, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2226, - "src": "890:10:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "890:14:15", - "startExpression": { - "hexValue": "31", - "id": 2241, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "901:1:15", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "expression": { - "id": 2237, - "name": "SequenceBaseSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2021, - "src": "854:15:15", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SequenceBaseSig_$2021_$", - "typeString": "type(library SequenceBaseSig)" - } - }, - "id": 2238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "870:7:15", - "memberName": "recover", - "nodeType": "MemberAccess", - "referencedDeclaration": 2020, - "src": "854:23:15", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "function (bytes32,bytes calldata) view returns (uint256,uint256,bytes32,uint256)" - } - }, - "id": 2243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "854:51:15", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,bytes32,uint256)" - } - }, - "functionReturnParameters": 2236, - "id": 2244, - "nodeType": "Return", - "src": "847:58:15" - } - ] - }, - "documentation": { - "id": 2222, - "nodeType": "StructuredDocumentation", - "src": "130:515:15", - "text": " @notice Recover a \"dynamically encoded\" Sequence signature.\n @dev The Signature is stripped of the first byte, which is the encoding flag.\n @param _subdigest The digest of the signature.\n @param _signature The Sequence signature.\n @return threshold The threshold weight required to validate the signature.\n @return weight The weight of the signature.\n @return imageHash The hash of the recovered configuration.\n @return checkpoint The checkpoint of the configuration." - }, - "id": 2246, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "recover", - "nameLocation": "657:7:15", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2227, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2224, - "mutability": "mutable", - "name": "_subdigest", - "nameLocation": "678:10:15", - "nodeType": "VariableDeclaration", - "scope": 2246, - "src": "670:18:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2223, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "670:7:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2226, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "709:10:15", - "nodeType": "VariableDeclaration", - "scope": 2246, - "src": "694:25:15", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2225, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "694:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "664:59:15" - }, - "returnParameters": { - "id": 2236, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2229, - "mutability": "mutable", - "name": "threshold", - "nameLocation": "760:9:15", - "nodeType": "VariableDeclaration", - "scope": 2246, - "src": "752:17:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2228, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "752:7:15", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2231, - "mutability": "mutable", - "name": "weight", - "nameLocation": "783:6:15", - "nodeType": "VariableDeclaration", - "scope": 2246, - "src": "775:14:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2230, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "775:7:15", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2233, - "mutability": "mutable", - "name": "imageHash", - "nameLocation": "803:9:15", - "nodeType": "VariableDeclaration", - "scope": 2246, - "src": "795:17:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2232, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "795:7:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2235, - "mutability": "mutable", - "name": "checkpoint", - "nameLocation": "826:10:15", - "nodeType": "VariableDeclaration", - "scope": 2246, - "src": "818:18:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2234, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "818:7:15", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "746:94:15" - }, - "scope": 2247, - "src": "648:262:15", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2248, - "src": "98:814:15", - "usedErrors": [] - } - ], - "src": "39:874:15" - }, - "id": 15 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol", - "exportedSymbols": { - "SequenceNoChainIdSig": [ - 2275 - ] - }, - "id": 2276, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2249, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:16" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "SequenceNoChainIdSig", - "contractDependencies": [], - "contractKind": "library", - "fullyImplemented": true, - "id": 2275, - "linearizedBaseContracts": [ - 2275 - ], - "name": "SequenceNoChainIdSig", - "nameLocation": "73:20:16", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2273, - "nodeType": "Block", - "src": "472:145:16", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "1901", - "id": 2260, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "528:10:16", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", - "typeString": "literal_string hex\"1901\"" - }, - "value": "\u0019\u0001" - }, - { - "arguments": [ - { - "hexValue": "30", - "id": 2263, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "556:1:16", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 2262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "548:7:16", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2261, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "548:7:16", - "typeDescriptions": {} - } - }, - "id": 2264, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "548:10:16", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [ - { - "id": 2267, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "576:4:16", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SequenceNoChainIdSig_$2275", - "typeString": "library SequenceNoChainIdSig" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SequenceNoChainIdSig_$2275", - "typeString": "library SequenceNoChainIdSig" - } - ], - "id": 2266, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "568:7:16", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 2265, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "568:7:16", - "typeDescriptions": {} - } - }, - "id": 2268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "568:13:16", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2269, - "name": "_digest", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "591:7:16", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", - "typeString": "literal_string hex\"1901\"" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 2258, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "502:3:16", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 2259, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "506:12:16", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "502:16:16", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 2270, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "502:104:16", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 2257, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "485:9:16", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 2271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "485:127:16", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 2256, - "id": 2272, - "nodeType": "Return", - "src": "478:134:16" - } - ] - }, - "documentation": { - "id": 2250, - "nodeType": "StructuredDocumentation", - "src": "99:302:16", - "text": " @notice Computes a subdigest for a Sequence signature that works on all chains.\n @dev The subdigest is computed by removing the chain ID from the digest (using 0 instead).\n @param _digest The digest of the chain of signatures.\n @return bytes32 The subdigest with no chain ID." - }, - "id": 2274, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "subdigest", - "nameLocation": "413:9:16", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2253, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2252, - "mutability": "mutable", - "name": "_digest", - "nameLocation": "431:7:16", - "nodeType": "VariableDeclaration", - "scope": 2274, - "src": "423:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2251, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "423:7:16", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "422:17:16" - }, - "returnParameters": { - "id": 2256, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2255, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 2274, - "src": "463:7:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2254, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "463:7:16", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "462:9:16" - }, - "scope": 2275, - "src": "404:213:16", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2276, - "src": "65:554:16", - "usedErrors": [] - } - ], - "src": "39:581:16" - }, - "id": 16 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol", - "exportedSymbols": { - "SubModuleNonce": [ - 2324 - ] - }, - "id": 2325, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2277, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:17" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "SubModuleNonce", - "contractDependencies": [], - "contractKind": "library", - "fullyImplemented": true, - "id": 2324, - "linearizedBaseContracts": [ - 2324 - ], - "name": "SubModuleNonce", - "nameLocation": "73:14:17", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 2280, - "mutability": "constant", - "name": "NONCE_BITS", - "nameLocation": "174:10:17", - "nodeType": "VariableDeclaration", - "scope": 2324, - "src": "148:41:17", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2278, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "148:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "3936", - "id": 2279, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "187:2:17", - "typeDescriptions": { - "typeIdentifier": "t_rational_96_by_1", - "typeString": "int_const 96" - }, - "value": "96" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 2293, - "mutability": "constant", - "name": "NONCE_MASK", - "nameLocation": "219:10:17", - "nodeType": "VariableDeclaration", - "scope": 2324, - "src": "193:73:17", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2281, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "193:7:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "arguments": [ - { - "id": 2288, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "253:6:17", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint96_$", - "typeString": "type(uint96)" - }, - "typeName": { - "id": 2287, - "name": "uint96", - "nodeType": "ElementaryTypeName", - "src": "253:6:17", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint96_$", - "typeString": "type(uint96)" - } - ], - "id": 2286, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967269, - "src": "248:4:17", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 2289, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "248:12:17", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint96", - "typeString": "type(uint96)" - } - }, - "id": 2290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "261:3:17", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "248:16:17", - "typeDescriptions": { - "typeIdentifier": "t_uint96", - "typeString": "uint96" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint96", - "typeString": "uint96" - } - ], - "id": 2285, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "240:7:17", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2284, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "240:7:17", - "typeDescriptions": {} - } - }, - "id": 2291, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "240:25:17", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2283, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "232:7:17", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 2282, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "232:7:17", - "typeDescriptions": {} - } - }, - "id": 2292, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "232:34:17", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "body": { - "id": 2322, - "nodeType": "Block", - "src": "603:146:17", - "statements": [ - { - "id": 2321, - "nodeType": "UncheckedBlock", - "src": "609:136:17", - "statements": [ - { - "expression": { - "id": 2307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2303, - "name": "_space", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2299, - "src": "649:6:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2306, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2304, - "name": "_rawNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2296, - "src": "658:9:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "id": 2305, - "name": "NONCE_BITS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "671:10:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "658:23:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "649:32:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2308, - "nodeType": "ExpressionStatement", - "src": "649:32:17" - }, - { - "expression": { - "id": 2319, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2309, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2301, - "src": "689:6:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 2317, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 2314, - "name": "_rawNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2296, - "src": "714:9:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2313, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "706:7:17", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 2312, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "706:7:17", - "typeDescriptions": {} - } - }, - "id": 2315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "706:18:17", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "id": 2316, - "name": "NONCE_MASK", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2293, - "src": "727:10:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "706:31:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2311, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "698:7:17", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "698:7:17", - "typeDescriptions": {} - } - }, - "id": 2318, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "698:40:17", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "689:49:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2320, - "nodeType": "ExpressionStatement", - "src": "689:49:17" - } - ] - } - ] - }, - "documentation": { - "id": 2294, - "nodeType": "StructuredDocumentation", - "src": "271:222:17", - "text": " @notice Decodes a raw nonce\n @dev Schema: space[160]:type[96]\n @param _rawNonce Nonce to be decoded\n @return _space The nonce space of the raw nonce\n @return _nonce The nonce of the raw nonce" - }, - "id": 2323, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decodeNonce", - "nameLocation": "505:11:17", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2297, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2296, - "mutability": "mutable", - "name": "_rawNonce", - "nameLocation": "525:9:17", - "nodeType": "VariableDeclaration", - "scope": 2323, - "src": "517:17:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2295, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "517:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "516:19:17" - }, - "returnParameters": { - "id": 2302, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2299, - "mutability": "mutable", - "name": "_space", - "nameLocation": "572:6:17", - "nodeType": "VariableDeclaration", - "scope": 2323, - "src": "564:14:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2298, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "564:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2301, - "mutability": "mutable", - "name": "_nonce", - "nameLocation": "592:6:17", - "nodeType": "VariableDeclaration", - "scope": 2323, - "src": "584:14:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2300, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "584:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "558:44:17" - }, - "scope": 2324, - "src": "496:253:17", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2325, - "src": "65:686:17", - "usedErrors": [] - } - ], - "src": "39:713:17" - }, - "id": 17 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "exportedSymbols": { - "LibBytes": [ - 2374 - ] - }, - "id": 2375, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2326, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:18" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "LibBytes", - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 2327, - "nodeType": "StructuredDocumentation", - "src": "65:339:18", - "text": " @title Library for reading data from bytes arrays\n @author Agustin Aguilar (aa@horizon.io)\n @notice This library contains functions for reading data from bytes arrays.\n @dev These functions do not check if the input index is within the bounds of the data array.\n Reading out of bounds may return dirty values." - }, - "fullyImplemented": true, - "id": 2374, - "linearizedBaseContracts": [ - 2374 - ], - "name": "LibBytes", - "nameLocation": "413:8:18", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2338, - "nodeType": "Block", - "src": "767:75:18", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "782:56:18", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "790:42:18", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "data.offset", - "nodeType": "YulIdentifier", - "src": "812:11:18" - }, - { - "name": "index", - "nodeType": "YulIdentifier", - "src": "825:5:18" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "808:3:18" - }, - "nodeType": "YulFunctionCall", - "src": "808:23:18" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "795:12:18" - }, - "nodeType": "YulFunctionCall", - "src": "795:37:18" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "790:1:18" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2335, - "isOffset": false, - "isSlot": false, - "src": "790:1:18", - "valueSize": 1 - }, - { - "declaration": 2330, - "isOffset": true, - "isSlot": false, - "src": "812:11:18", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2332, - "isOffset": false, - "isSlot": false, - "src": "825:5:18", - "valueSize": 1 - } - ], - "id": 2337, - "nodeType": "InlineAssembly", - "src": "773:65:18" - } - ] - }, - "documentation": { - "id": 2328, - "nodeType": "StructuredDocumentation", - "src": "427:226:18", - "text": " @notice Returns the bytes32 value at the given index in the input data.\n @param data The input data.\n @param index The index of the value to retrieve.\n @return a The bytes32 value at the given index." - }, - "id": 2339, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readBytes32", - "nameLocation": "665:11:18", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2333, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2330, - "mutability": "mutable", - "name": "data", - "nameLocation": "697:4:18", - "nodeType": "VariableDeclaration", - "scope": 2339, - "src": "682:19:18", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2329, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "682:5:18", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2332, - "mutability": "mutable", - "name": "index", - "nameLocation": "715:5:18", - "nodeType": "VariableDeclaration", - "scope": 2339, - "src": "707:13:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2331, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "707:7:18", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "676:48:18" - }, - "returnParameters": { - "id": 2336, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2335, - "mutability": "mutable", - "name": "a", - "nameLocation": "761:1:18", - "nodeType": "VariableDeclaration", - "scope": 2339, - "src": "753:9:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2334, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "753:7:18", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "747:19:18" - }, - "scope": 2374, - "src": "656:186:18", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2350, - "nodeType": "Block", - "src": "1178:108:18", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "1193:89:18", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1201:49:18", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "index", - "nodeType": "YulIdentifier", - "src": "1230:5:18" - }, - { - "name": "data.offset", - "nodeType": "YulIdentifier", - "src": "1237:11:18" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1226:3:18" - }, - "nodeType": "YulFunctionCall", - "src": "1226:23:18" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1213:12:18" - }, - "nodeType": "YulFunctionCall", - "src": "1213:37:18" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "1205:4:18", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1257:19:18", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1266:3:18", - "type": "", - "value": "248" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "1271:4:18" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "1262:3:18" - }, - "nodeType": "YulFunctionCall", - "src": "1262:14:18" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "1257:1:18" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2347, - "isOffset": false, - "isSlot": false, - "src": "1257:1:18", - "valueSize": 1 - }, - { - "declaration": 2342, - "isOffset": true, - "isSlot": false, - "src": "1237:11:18", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2344, - "isOffset": false, - "isSlot": false, - "src": "1230:5:18", - "valueSize": 1 - } - ], - "id": 2349, - "nodeType": "InlineAssembly", - "src": "1184:98:18" - } - ] - }, - "documentation": { - "id": 2340, - "nodeType": "StructuredDocumentation", - "src": "846:222:18", - "text": " @notice Returns the uint8 value at the given index in the input data.\n @param data The input data.\n @param index The index of the value to retrieve.\n @return a The uint8 value at the given index." - }, - "id": 2351, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readUint8", - "nameLocation": "1080:9:18", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2345, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2342, - "mutability": "mutable", - "name": "data", - "nameLocation": "1110:4:18", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "1095:19:18", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2341, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1095:5:18", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2344, - "mutability": "mutable", - "name": "index", - "nameLocation": "1128:5:18", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "1120:13:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2343, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1120:7:18", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1089:48:18" - }, - "returnParameters": { - "id": 2348, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2347, - "mutability": "mutable", - "name": "a", - "nameLocation": "1172:1:18", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "1166:7:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 2346, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1166:5:18", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "1160:17:18" - }, - "scope": 2374, - "src": "1071:215:18", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2360, - "nodeType": "Block", - "src": "1550:96:18", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "1565:77:18", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1573:37:18", - "value": { - "arguments": [ - { - "name": "data.offset", - "nodeType": "YulIdentifier", - "src": "1598:11:18" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1585:12:18" - }, - "nodeType": "YulFunctionCall", - "src": "1585:25:18" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "1577:4:18", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1617:19:18", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1626:3:18", - "type": "", - "value": "240" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "1631:4:18" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "1622:3:18" - }, - "nodeType": "YulFunctionCall", - "src": "1622:14:18" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "1617:1:18" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2357, - "isOffset": false, - "isSlot": false, - "src": "1617:1:18", - "valueSize": 1 - }, - { - "declaration": 2354, - "isOffset": true, - "isSlot": false, - "src": "1598:11:18", - "suffix": "offset", - "valueSize": 1 - } - ], - "id": 2359, - "nodeType": "InlineAssembly", - "src": "1556:86:18" - } - ] - }, - "documentation": { - "id": 2352, - "nodeType": "StructuredDocumentation", - "src": "1290:162:18", - "text": " @notice Returns the first uint16 value in the input data.\n @param data The input data.\n @return a The first uint16 value in the input data." - }, - "id": 2361, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readFirstUint16", - "nameLocation": "1464:15:18", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2355, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2354, - "mutability": "mutable", - "name": "data", - "nameLocation": "1500:4:18", - "nodeType": "VariableDeclaration", - "scope": 2361, - "src": "1485:19:18", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2353, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1485:5:18", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1479:29:18" - }, - "returnParameters": { - "id": 2358, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2357, - "mutability": "mutable", - "name": "a", - "nameLocation": "1544:1:18", - "nodeType": "VariableDeclaration", - "scope": 2361, - "src": "1537:8:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 2356, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "1537:6:18", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "1531:18:18" - }, - "scope": 2374, - "src": "1455:191:18", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2372, - "nodeType": "Block", - "src": "1986:108:18", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "2001:89:18", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2009:49:18", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "index", - "nodeType": "YulIdentifier", - "src": "2038:5:18" - }, - { - "name": "data.offset", - "nodeType": "YulIdentifier", - "src": "2045:11:18" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2034:3:18" - }, - "nodeType": "YulFunctionCall", - "src": "2034:23:18" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2021:12:18" - }, - "nodeType": "YulFunctionCall", - "src": "2021:37:18" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "2013:4:18", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2065:19:18", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2074:3:18", - "type": "", - "value": "224" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "2079:4:18" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2070:3:18" - }, - "nodeType": "YulFunctionCall", - "src": "2070:14:18" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "2065:1:18" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2369, - "isOffset": false, - "isSlot": false, - "src": "2065:1:18", - "valueSize": 1 - }, - { - "declaration": 2364, - "isOffset": true, - "isSlot": false, - "src": "2045:11:18", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2366, - "isOffset": false, - "isSlot": false, - "src": "2038:5:18", - "valueSize": 1 - } - ], - "id": 2371, - "nodeType": "InlineAssembly", - "src": "1992:98:18" - } - ] - }, - "documentation": { - "id": 2362, - "nodeType": "StructuredDocumentation", - "src": "1650:224:18", - "text": " @notice Returns the uint32 value at the given index in the input data.\n @param data The input data.\n @param index The index of the value to retrieve.\n @return a The uint32 value at the given index." - }, - "id": 2373, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readUint32", - "nameLocation": "1886:10:18", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2367, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2364, - "mutability": "mutable", - "name": "data", - "nameLocation": "1917:4:18", - "nodeType": "VariableDeclaration", - "scope": 2373, - "src": "1902:19:18", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2363, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1902:5:18", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2366, - "mutability": "mutable", - "name": "index", - "nameLocation": "1935:5:18", - "nodeType": "VariableDeclaration", - "scope": 2373, - "src": "1927:13:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2365, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1927:7:18", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1896:48:18" - }, - "returnParameters": { - "id": 2370, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2369, - "mutability": "mutable", - "name": "a", - "nameLocation": "1980:1:18", - "nodeType": "VariableDeclaration", - "scope": 2373, - "src": "1973:8:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2368, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1973:6:18", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "1967:18:18" - }, - "scope": 2374, - "src": "1877:217:18", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2375, - "src": "405:1691:18", - "usedErrors": [] - } - ], - "src": "39:2058:18" - }, - "id": 18 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytesPointer.sol", - "exportedSymbols": { - "LibBytesPointer": [ - 2476 - ] - }, - "id": 2477, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2376, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:19" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "LibBytesPointer", - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 2377, - "nodeType": "StructuredDocumentation", - "src": "65:369:19", - "text": " @title Library for reading data from bytes arrays with a pointer\n @author Agustin Aguilar (aa@horizon.io)\n @notice This library contains functions for reading data from bytes arrays with a pointer.\n @dev These functions do not check if the input index is within the bounds of the data array.\n Reading out of bounds may return dirty values." - }, - "fullyImplemented": true, - "id": 2476, - "linearizedBaseContracts": [ - 2476 - ], - "name": "LibBytesPointer", - "nameLocation": "443:15:19", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2388, - "nodeType": "Block", - "src": "794:119:19", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "809:100:19", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "817:38:19", - "value": { - "arguments": [ - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "842:12:19" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "829:12:19" - }, - "nodeType": "YulFunctionCall", - "src": "829:26:19" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "821:4:19", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "862:19:19", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "871:3:19", - "type": "", - "value": "240" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "876:4:19" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "867:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "867:14:19" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "862:1:19" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "888:15:19", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "902:1:19", - "type": "", - "value": "2" - }, - "variableNames": [ - { - "name": "newPointer", - "nodeType": "YulIdentifier", - "src": "888:10:19" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2380, - "isOffset": true, - "isSlot": false, - "src": "842:12:19", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2383, - "isOffset": false, - "isSlot": false, - "src": "862:1:19", - "valueSize": 1 - }, - { - "declaration": 2385, - "isOffset": false, - "isSlot": false, - "src": "888:10:19", - "valueSize": 1 - } - ], - "id": 2387, - "nodeType": "InlineAssembly", - "src": "800:109:19" - } - ] - }, - "documentation": { - "id": 2378, - "nodeType": "StructuredDocumentation", - "src": "464:207:19", - "text": " @dev Returns the first uint16 value in the input data and updates the pointer.\n @param _data The input data.\n @return a The first uint16 value.\n @return newPointer The new pointer." - }, - "id": 2389, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readFirstUint16", - "nameLocation": "683:15:19", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2381, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2380, - "mutability": "mutable", - "name": "_data", - "nameLocation": "719:5:19", - "nodeType": "VariableDeclaration", - "scope": 2389, - "src": "704:20:19", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2379, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "704:5:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "698:30:19" - }, - "returnParameters": { - "id": 2386, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2383, - "mutability": "mutable", - "name": "a", - "nameLocation": "764:1:19", - "nodeType": "VariableDeclaration", - "scope": 2389, - "src": "757:8:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 2382, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "757:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2385, - "mutability": "mutable", - "name": "newPointer", - "nameLocation": "779:10:19", - "nodeType": "VariableDeclaration", - "scope": 2389, - "src": "771:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2384, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "771:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "751:42:19" - }, - "scope": 2476, - "src": "674:239:19", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2402, - "nodeType": "Block", - "src": "1342:145:19", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "1357:126:19", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1365:51:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "1394:6:19" - }, - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "1402:12:19" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1390:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "1390:25:19" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1377:12:19" - }, - "nodeType": "YulFunctionCall", - "src": "1377:39:19" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "1369:4:19", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1423:19:19", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1432:3:19", - "type": "", - "value": "248" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "1437:4:19" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "1428:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "1428:14:19" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "1423:1:19" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1449:28:19", - "value": { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "1467:6:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1475:1:19", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1463:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "1463:14:19" - }, - "variableNames": [ - { - "name": "newPointer", - "nodeType": "YulIdentifier", - "src": "1449:10:19" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2392, - "isOffset": true, - "isSlot": false, - "src": "1402:12:19", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2394, - "isOffset": false, - "isSlot": false, - "src": "1394:6:19", - "valueSize": 1 - }, - { - "declaration": 2394, - "isOffset": false, - "isSlot": false, - "src": "1467:6:19", - "valueSize": 1 - }, - { - "declaration": 2397, - "isOffset": false, - "isSlot": false, - "src": "1423:1:19", - "valueSize": 1 - }, - { - "declaration": 2399, - "isOffset": false, - "isSlot": false, - "src": "1449:10:19", - "valueSize": 1 - } - ], - "id": 2401, - "nodeType": "InlineAssembly", - "src": "1348:135:19" - } - ] - }, - "documentation": { - "id": 2390, - "nodeType": "StructuredDocumentation", - "src": "917:289:19", - "text": " @notice Returns the uint8 value at the given index in the input data and updates the pointer.\n @param _data The input data.\n @param _index The index of the value to retrieve.\n @return a The uint8 value at the given index.\n @return newPointer The new pointer." - }, - "id": 2403, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readUint8", - "nameLocation": "1218:9:19", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2395, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2392, - "mutability": "mutable", - "name": "_data", - "nameLocation": "1248:5:19", - "nodeType": "VariableDeclaration", - "scope": 2403, - "src": "1233:20:19", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2391, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1233:5:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2394, - "mutability": "mutable", - "name": "_index", - "nameLocation": "1267:6:19", - "nodeType": "VariableDeclaration", - "scope": 2403, - "src": "1259:14:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2393, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1259:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1227:50:19" - }, - "returnParameters": { - "id": 2400, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2397, - "mutability": "mutable", - "name": "a", - "nameLocation": "1312:1:19", - "nodeType": "VariableDeclaration", - "scope": 2403, - "src": "1306:7:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 2396, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1306:5:19", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2399, - "mutability": "mutable", - "name": "newPointer", - "nameLocation": "1327:10:19", - "nodeType": "VariableDeclaration", - "scope": 2403, - "src": "1319:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2398, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1319:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1300:41:19" - }, - "scope": 2476, - "src": "1209:278:19", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2418, - "nodeType": "Block", - "src": "1998:220:19", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "2013:201:19", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2021:51:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "2050:6:19" - }, - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "2058:12:19" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2046:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2046:25:19" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2033:12:19" - }, - "nodeType": "YulFunctionCall", - "src": "2033:39:19" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "2025:4:19", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2079:19:19", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2088:3:19", - "type": "", - "value": "248" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "2093:4:19" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2084:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2084:14:19" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "2079:1:19" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2105:67:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2118:2:19", - "type": "", - "value": "88" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "2122:4:19" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2114:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2114:13:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2129:42:19", - "type": "", - "value": "0xffffffffffffffffffffffffffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2110:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2110:62:19" - }, - "variableNames": [ - { - "name": "b", - "nodeType": "YulIdentifier", - "src": "2105:1:19" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2179:29:19", - "value": { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "2197:6:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2205:2:19", - "type": "", - "value": "21" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2193:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2193:15:19" - }, - "variableNames": [ - { - "name": "newPointer", - "nodeType": "YulIdentifier", - "src": "2179:10:19" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2406, - "isOffset": true, - "isSlot": false, - "src": "2058:12:19", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2408, - "isOffset": false, - "isSlot": false, - "src": "2050:6:19", - "valueSize": 1 - }, - { - "declaration": 2408, - "isOffset": false, - "isSlot": false, - "src": "2197:6:19", - "valueSize": 1 - }, - { - "declaration": 2411, - "isOffset": false, - "isSlot": false, - "src": "2079:1:19", - "valueSize": 1 - }, - { - "declaration": 2413, - "isOffset": false, - "isSlot": false, - "src": "2105:1:19", - "valueSize": 1 - }, - { - "declaration": 2415, - "isOffset": false, - "isSlot": false, - "src": "2179:10:19", - "valueSize": 1 - } - ], - "id": 2417, - "nodeType": "InlineAssembly", - "src": "2004:210:19" - } - ] - }, - "documentation": { - "id": 2404, - "nodeType": "StructuredDocumentation", - "src": "1491:349:19", - "text": " @notice Returns the uint8 value and the address at the given index in the input data and updates the pointer.\n @param _data The input data.\n @param _index The index of the value to retrieve.\n @return a The uint8 value at the given index.\n @return b The following address value.\n @return newPointer The new pointer." - }, - "id": 2419, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readUint8Address", - "nameLocation": "1852:16:19", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2409, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2406, - "mutability": "mutable", - "name": "_data", - "nameLocation": "1889:5:19", - "nodeType": "VariableDeclaration", - "scope": 2419, - "src": "1874:20:19", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2405, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1874:5:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2408, - "mutability": "mutable", - "name": "_index", - "nameLocation": "1908:6:19", - "nodeType": "VariableDeclaration", - "scope": 2419, - "src": "1900:14:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2407, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1900:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1868:50:19" - }, - "returnParameters": { - "id": 2416, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2411, - "mutability": "mutable", - "name": "a", - "nameLocation": "1953:1:19", - "nodeType": "VariableDeclaration", - "scope": 2419, - "src": "1947:7:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 2410, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1947:5:19", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2413, - "mutability": "mutable", - "name": "b", - "nameLocation": "1968:1:19", - "nodeType": "VariableDeclaration", - "scope": 2419, - "src": "1960:9:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2412, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1960:7:19", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2415, - "mutability": "mutable", - "name": "newPointer", - "nameLocation": "1983:10:19", - "nodeType": "VariableDeclaration", - "scope": 2419, - "src": "1975:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2414, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1975:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1941:56:19" - }, - "scope": 2476, - "src": "1843:375:19", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2432, - "nodeType": "Block", - "src": "2651:158:19", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "2666:139:19", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2674:51:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "2703:6:19" - }, - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "2711:12:19" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2699:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2699:25:19" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2686:12:19" - }, - "nodeType": "YulFunctionCall", - "src": "2686:39:19" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "2678:4:19", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2732:32:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2745:3:19", - "type": "", - "value": "240" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "2750:4:19" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2741:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2741:14:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2757:6:19", - "type": "", - "value": "0xffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2737:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2737:27:19" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "2732:1:19" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2771:28:19", - "value": { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "2789:6:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2797:1:19", - "type": "", - "value": "2" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2785:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "2785:14:19" - }, - "variableNames": [ - { - "name": "newPointer", - "nodeType": "YulIdentifier", - "src": "2771:10:19" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2422, - "isOffset": true, - "isSlot": false, - "src": "2711:12:19", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2424, - "isOffset": false, - "isSlot": false, - "src": "2703:6:19", - "valueSize": 1 - }, - { - "declaration": 2424, - "isOffset": false, - "isSlot": false, - "src": "2789:6:19", - "valueSize": 1 - }, - { - "declaration": 2427, - "isOffset": false, - "isSlot": false, - "src": "2732:1:19", - "valueSize": 1 - }, - { - "declaration": 2429, - "isOffset": false, - "isSlot": false, - "src": "2771:10:19", - "valueSize": 1 - } - ], - "id": 2431, - "nodeType": "InlineAssembly", - "src": "2657:148:19" - } - ] - }, - "documentation": { - "id": 2420, - "nodeType": "StructuredDocumentation", - "src": "2222:291:19", - "text": " @notice Returns the uint16 value at the given index in the input data and updates the pointer.\n @param _data The input data.\n @param _index The index of the value to retrieve.\n @return a The uint16 value at the given index.\n @return newPointer The new pointer." - }, - "id": 2433, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readUint16", - "nameLocation": "2525:10:19", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2422, - "mutability": "mutable", - "name": "_data", - "nameLocation": "2556:5:19", - "nodeType": "VariableDeclaration", - "scope": 2433, - "src": "2541:20:19", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2421, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2541:5:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2424, - "mutability": "mutable", - "name": "_index", - "nameLocation": "2575:6:19", - "nodeType": "VariableDeclaration", - "scope": 2433, - "src": "2567:14:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2423, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2567:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2535:50:19" - }, - "returnParameters": { - "id": 2430, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2427, - "mutability": "mutable", - "name": "a", - "nameLocation": "2621:1:19", - "nodeType": "VariableDeclaration", - "scope": 2433, - "src": "2614:8:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 2426, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "2614:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2429, - "mutability": "mutable", - "name": "newPointer", - "nameLocation": "2636:10:19", - "nodeType": "VariableDeclaration", - "scope": 2433, - "src": "2628:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2428, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2628:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2608:42:19" - }, - "scope": 2476, - "src": "2516:293:19", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2446, - "nodeType": "Block", - "src": "3242:160:19", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "3257:141:19", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3265:51:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "3294:6:19" - }, - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "3302:12:19" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3290:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "3290:25:19" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3277:12:19" - }, - "nodeType": "YulFunctionCall", - "src": "3277:39:19" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "3269:4:19", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3323:34:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3336:3:19", - "type": "", - "value": "232" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "3341:4:19" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "3332:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "3332:14:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3348:8:19", - "type": "", - "value": "0xffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3328:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "3328:29:19" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "3323:1:19" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3364:28:19", - "value": { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "3382:6:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3390:1:19", - "type": "", - "value": "3" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3378:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "3378:14:19" - }, - "variableNames": [ - { - "name": "newPointer", - "nodeType": "YulIdentifier", - "src": "3364:10:19" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2436, - "isOffset": true, - "isSlot": false, - "src": "3302:12:19", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2438, - "isOffset": false, - "isSlot": false, - "src": "3294:6:19", - "valueSize": 1 - }, - { - "declaration": 2438, - "isOffset": false, - "isSlot": false, - "src": "3382:6:19", - "valueSize": 1 - }, - { - "declaration": 2441, - "isOffset": false, - "isSlot": false, - "src": "3323:1:19", - "valueSize": 1 - }, - { - "declaration": 2443, - "isOffset": false, - "isSlot": false, - "src": "3364:10:19", - "valueSize": 1 - } - ], - "id": 2445, - "nodeType": "InlineAssembly", - "src": "3248:150:19" - } - ] - }, - "documentation": { - "id": 2434, - "nodeType": "StructuredDocumentation", - "src": "2813:291:19", - "text": " @notice Returns the uint24 value at the given index in the input data and updates the pointer.\n @param _data The input data.\n @param _index The index of the value to retrieve.\n @return a The uint24 value at the given index.\n @return newPointer The new pointer." - }, - "id": 2447, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readUint24", - "nameLocation": "3116:10:19", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2439, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2436, - "mutability": "mutable", - "name": "_data", - "nameLocation": "3147:5:19", - "nodeType": "VariableDeclaration", - "scope": 2447, - "src": "3132:20:19", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2435, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3132:5:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2438, - "mutability": "mutable", - "name": "_index", - "nameLocation": "3166:6:19", - "nodeType": "VariableDeclaration", - "scope": 2447, - "src": "3158:14:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2437, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3158:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3126:50:19" - }, - "returnParameters": { - "id": 2444, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2441, - "mutability": "mutable", - "name": "a", - "nameLocation": "3212:1:19", - "nodeType": "VariableDeclaration", - "scope": 2447, - "src": "3205:8:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 2440, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "3205:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2443, - "mutability": "mutable", - "name": "newPointer", - "nameLocation": "3227:10:19", - "nodeType": "VariableDeclaration", - "scope": 2447, - "src": "3219:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2442, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3219:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3199:42:19" - }, - "scope": 2476, - "src": "3107:295:19", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2460, - "nodeType": "Block", - "src": "3835:170:19", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "3850:151:19", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3858:51:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "3887:6:19" - }, - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "3895:12:19" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3883:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "3883:25:19" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3870:12:19" - }, - "nodeType": "YulFunctionCall", - "src": "3870:39:19" - }, - "variables": [ - { - "name": "word", - "nodeType": "YulTypedName", - "src": "3862:4:19", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3916:44:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3929:3:19", - "type": "", - "value": "192" - }, - { - "name": "word", - "nodeType": "YulIdentifier", - "src": "3934:4:19" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "3925:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "3925:14:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3941:18:19", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3921:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "3921:39:19" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "3916:1:19" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3967:28:19", - "value": { - "arguments": [ - { - "name": "_index", - "nodeType": "YulIdentifier", - "src": "3985:6:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3993:1:19", - "type": "", - "value": "8" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3981:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "3981:14:19" - }, - "variableNames": [ - { - "name": "newPointer", - "nodeType": "YulIdentifier", - "src": "3967:10:19" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2450, - "isOffset": true, - "isSlot": false, - "src": "3895:12:19", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2452, - "isOffset": false, - "isSlot": false, - "src": "3887:6:19", - "valueSize": 1 - }, - { - "declaration": 2452, - "isOffset": false, - "isSlot": false, - "src": "3985:6:19", - "valueSize": 1 - }, - { - "declaration": 2455, - "isOffset": false, - "isSlot": false, - "src": "3916:1:19", - "valueSize": 1 - }, - { - "declaration": 2457, - "isOffset": false, - "isSlot": false, - "src": "3967:10:19", - "valueSize": 1 - } - ], - "id": 2459, - "nodeType": "InlineAssembly", - "src": "3841:160:19" - } - ] - }, - "documentation": { - "id": 2448, - "nodeType": "StructuredDocumentation", - "src": "3406:291:19", - "text": " @notice Returns the uint64 value at the given index in the input data and updates the pointer.\n @param _data The input data.\n @param _index The index of the value to retrieve.\n @return a The uint64 value at the given index.\n @return newPointer The new pointer." - }, - "id": 2461, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readUint64", - "nameLocation": "3709:10:19", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2453, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2450, - "mutability": "mutable", - "name": "_data", - "nameLocation": "3740:5:19", - "nodeType": "VariableDeclaration", - "scope": 2461, - "src": "3725:20:19", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2449, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3725:5:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2452, - "mutability": "mutable", - "name": "_index", - "nameLocation": "3759:6:19", - "nodeType": "VariableDeclaration", - "scope": 2461, - "src": "3751:14:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2451, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3751:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3719:50:19" - }, - "returnParameters": { - "id": 2458, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2455, - "mutability": "mutable", - "name": "a", - "nameLocation": "3805:1:19", - "nodeType": "VariableDeclaration", - "scope": 2461, - "src": "3798:8:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2454, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "3798:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2457, - "mutability": "mutable", - "name": "newPointer", - "nameLocation": "3820:10:19", - "nodeType": "VariableDeclaration", - "scope": 2461, - "src": "3812:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2456, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3812:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3792:42:19" - }, - "scope": 2476, - "src": "3700:305:19", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2474, - "nodeType": "Block", - "src": "4446:117:19", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "4461:98:19", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4469:46:19", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "_pointer", - "nodeType": "YulIdentifier", - "src": "4491:8:19" - }, - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "4501:12:19" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4487:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "4487:27:19" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "4474:12:19" - }, - "nodeType": "YulFunctionCall", - "src": "4474:41:19" - }, - "variableNames": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "4469:1:19" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4522:31:19", - "value": { - "arguments": [ - { - "name": "_pointer", - "nodeType": "YulIdentifier", - "src": "4540:8:19" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4550:2:19", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4536:3:19" - }, - "nodeType": "YulFunctionCall", - "src": "4536:17:19" - }, - "variableNames": [ - { - "name": "newPointer", - "nodeType": "YulIdentifier", - "src": "4522:10:19" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2464, - "isOffset": true, - "isSlot": false, - "src": "4501:12:19", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2466, - "isOffset": false, - "isSlot": false, - "src": "4491:8:19", - "valueSize": 1 - }, - { - "declaration": 2466, - "isOffset": false, - "isSlot": false, - "src": "4540:8:19", - "valueSize": 1 - }, - { - "declaration": 2469, - "isOffset": false, - "isSlot": false, - "src": "4469:1:19", - "valueSize": 1 - }, - { - "declaration": 2471, - "isOffset": false, - "isSlot": false, - "src": "4522:10:19", - "valueSize": 1 - } - ], - "id": 2473, - "nodeType": "InlineAssembly", - "src": "4452:107:19" - } - ] - }, - "documentation": { - "id": 2462, - "nodeType": "StructuredDocumentation", - "src": "4009:295:19", - "text": " @notice Returns the bytes32 value at the given index in the input data and updates the pointer.\n @param _data The input data.\n @param _pointer The index of the value to retrieve.\n @return a The bytes32 value at the given index.\n @return newPointer The new pointer." - }, - "id": 2475, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "readBytes32", - "nameLocation": "4316:11:19", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2467, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2464, - "mutability": "mutable", - "name": "_data", - "nameLocation": "4348:5:19", - "nodeType": "VariableDeclaration", - "scope": 2475, - "src": "4333:20:19", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2463, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4333:5:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2466, - "mutability": "mutable", - "name": "_pointer", - "nameLocation": "4367:8:19", - "nodeType": "VariableDeclaration", - "scope": 2475, - "src": "4359:16:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2465, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4359:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4327:52:19" - }, - "returnParameters": { - "id": 2472, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2469, - "mutability": "mutable", - "name": "a", - "nameLocation": "4416:1:19", - "nodeType": "VariableDeclaration", - "scope": 2475, - "src": "4408:9:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2468, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4408:7:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2471, - "mutability": "mutable", - "name": "newPointer", - "nameLocation": "4431:10:19", - "nodeType": "VariableDeclaration", - "scope": 2475, - "src": "4423:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2470, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4423:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4402:43:19" - }, - "scope": 2476, - "src": "4307:256:19", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2477, - "src": "435:4130:19", - "usedErrors": [] - } - ], - "src": "39:4527:19" - }, - "id": 19 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibOptim.sol", - "exportedSymbols": { - "LibOptim": [ - 2530 - ] - }, - "id": 2531, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2478, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:20" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "LibOptim", - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 2479, - "nodeType": "StructuredDocumentation", - "src": "64:179:20", - "text": " @title Library for optimized EVM operations\n @author Agustin Aguilar (aa@horizon.io)\n @notice This library contains functions for optimizing certain EVM operations." - }, - "fullyImplemented": true, - "id": 2530, - "linearizedBaseContracts": [ - 2530 - ], - "name": "LibOptim", - "nameLocation": "252:8:20", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2490, - "nodeType": "Block", - "src": "633:95:20", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "648:76:20", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "663:1:20", - "type": "", - "value": "0" - }, - { - "name": "_a", - "nodeType": "YulIdentifier", - "src": "666:2:20" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "656:6:20" - }, - "nodeType": "YulFunctionCall", - "src": "656:13:20" - }, - "nodeType": "YulExpressionStatement", - "src": "656:13:20" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "683:2:20", - "type": "", - "value": "32" - }, - { - "name": "_b", - "nodeType": "YulIdentifier", - "src": "687:2:20" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "676:6:20" - }, - "nodeType": "YulFunctionCall", - "src": "676:14:20" - }, - "nodeType": "YulExpressionStatement", - "src": "676:14:20" - }, - { - "nodeType": "YulAssignment", - "src": "697:21:20", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "712:1:20", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "715:2:20", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "keccak256", - "nodeType": "YulIdentifier", - "src": "702:9:20" - }, - "nodeType": "YulFunctionCall", - "src": "702:16:20" - }, - "variableNames": [ - { - "name": "c", - "nodeType": "YulIdentifier", - "src": "697:1:20" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2482, - "isOffset": false, - "isSlot": false, - "src": "666:2:20", - "valueSize": 1 - }, - { - "declaration": 2484, - "isOffset": false, - "isSlot": false, - "src": "687:2:20", - "valueSize": 1 - }, - { - "declaration": 2487, - "isOffset": false, - "isSlot": false, - "src": "697:1:20", - "valueSize": 1 - } - ], - "id": 2489, - "nodeType": "InlineAssembly", - "src": "639:85:20" - } - ] - }, - "documentation": { - "id": 2480, - "nodeType": "StructuredDocumentation", - "src": "266:274:20", - "text": " @notice Computes the keccak256 hash of two 32-byte inputs.\n @dev It uses only scratch memory space.\n @param _a The first 32 bytes of the hash.\n @param _b The second 32 bytes of the hash.\n @return c The keccak256 hash of the two 32-byte inputs." - }, - "id": 2491, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "fkeccak256", - "nameLocation": "552:10:20", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2485, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2482, - "mutability": "mutable", - "name": "_a", - "nameLocation": "576:2:20", - "nodeType": "VariableDeclaration", - "scope": 2491, - "src": "568:10:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2481, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "568:7:20", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2484, - "mutability": "mutable", - "name": "_b", - "nameLocation": "592:2:20", - "nodeType": "VariableDeclaration", - "scope": 2491, - "src": "584:10:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2483, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "584:7:20", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "562:36:20" - }, - "returnParameters": { - "id": 2488, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2487, - "mutability": "mutable", - "name": "c", - "nameLocation": "630:1:20", - "nodeType": "VariableDeclaration", - "scope": 2491, - "src": "622:9:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2486, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "622:7:20", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "621:11:20" - }, - "scope": 2530, - "src": "543:185:20", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2498, - "nodeType": "Block", - "src": "913:210:20", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "928:191:20", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "936:28:20", - "value": { - "arguments": [], - "functionName": { - "name": "returndatasize", - "nodeType": "YulIdentifier", - "src": "948:14:20" - }, - "nodeType": "YulFunctionCall", - "src": "948:16:20" - }, - "variables": [ - { - "name": "size", - "nodeType": "YulTypedName", - "src": "940:4:20", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "971:16:20", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "982:4:20", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "976:5:20" - }, - "nodeType": "YulFunctionCall", - "src": "976:11:20" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "971:1:20" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "994:23:20", - "value": { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "1011:1:20" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1014:2:20", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1007:3:20" - }, - "nodeType": "YulFunctionCall", - "src": "1007:10:20" - }, - "variables": [ - { - "name": "start", - "nodeType": "YulTypedName", - "src": "998:5:20", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1031:4:20", - "type": "", - "value": "0x40" - }, - { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "1041:5:20" - }, - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "1048:4:20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1037:3:20" - }, - "nodeType": "YulFunctionCall", - "src": "1037:16:20" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1024:6:20" - }, - "nodeType": "YulFunctionCall", - "src": "1024:30:20" - }, - "nodeType": "YulExpressionStatement", - "src": "1024:30:20" - }, - { - "expression": { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "1068:1:20" - }, - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "1071:4:20" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1061:6:20" - }, - "nodeType": "YulFunctionCall", - "src": "1061:15:20" - }, - "nodeType": "YulExpressionStatement", - "src": "1061:15:20" - }, - { - "expression": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "1098:5:20" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1105:1:20", - "type": "", - "value": "0" - }, - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "1108:4:20" - } - ], - "functionName": { - "name": "returndatacopy", - "nodeType": "YulIdentifier", - "src": "1083:14:20" - }, - "nodeType": "YulFunctionCall", - "src": "1083:30:20" - }, - "nodeType": "YulExpressionStatement", - "src": "1083:30:20" - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2495, - "isOffset": false, - "isSlot": false, - "src": "1011:1:20", - "valueSize": 1 - }, - { - "declaration": 2495, - "isOffset": false, - "isSlot": false, - "src": "1068:1:20", - "valueSize": 1 - }, - { - "declaration": 2495, - "isOffset": false, - "isSlot": false, - "src": "971:1:20", - "valueSize": 1 - } - ], - "id": 2497, - "nodeType": "InlineAssembly", - "src": "919:200:20" - } - ] - }, - "documentation": { - "id": 2492, - "nodeType": "StructuredDocumentation", - "src": "732:117:20", - "text": " @notice Returns the return data from the last call.\n @return r The return data from the last call." - }, - "id": 2499, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "returnData", - "nameLocation": "861:10:20", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2493, - "nodeType": "ParameterList", - "parameters": [], - "src": "871:2:20" - }, - "returnParameters": { - "id": 2496, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2495, - "mutability": "mutable", - "name": "r", - "nameLocation": "910:1:20", - "nodeType": "VariableDeclaration", - "scope": 2499, - "src": "897:14:20", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2494, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "897:5:20", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "896:16:20" - }, - "scope": 2530, - "src": "852:271:20", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2514, - "nodeType": "Block", - "src": "1648:230:20", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "1663:211:20", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1671:22:20", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1688:4:20", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1682:5:20" - }, - "nodeType": "YulFunctionCall", - "src": "1682:11:20" - }, - "variables": [ - { - "name": "tmp", - "nodeType": "YulTypedName", - "src": "1675:3:20", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "tmp", - "nodeType": "YulIdentifier", - "src": "1713:3:20" - }, - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "1718:12:20" - }, - { - "name": "_data.length", - "nodeType": "YulIdentifier", - "src": "1732:12:20" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "1700:12:20" - }, - "nodeType": "YulFunctionCall", - "src": "1700:45:20" - }, - "nodeType": "YulExpressionStatement", - "src": "1700:45:20" - }, - { - "nodeType": "YulAssignment", - "src": "1753:115:20", - "value": { - "arguments": [ - { - "name": "_gas", - "nodeType": "YulIdentifier", - "src": "1772:4:20" - }, - { - "name": "_to", - "nodeType": "YulIdentifier", - "src": "1786:3:20" - }, - { - "name": "_val", - "nodeType": "YulIdentifier", - "src": "1799:4:20" - }, - { - "name": "tmp", - "nodeType": "YulIdentifier", - "src": "1813:3:20" - }, - { - "name": "_data.length", - "nodeType": "YulIdentifier", - "src": "1826:12:20" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1848:1:20", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1859:1:20", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "call", - "nodeType": "YulIdentifier", - "src": "1758:4:20" - }, - "nodeType": "YulFunctionCall", - "src": "1758:110:20" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "1753:1:20" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2508, - "isOffset": false, - "isSlot": false, - "src": "1732:12:20", - "suffix": "length", - "valueSize": 1 - }, - { - "declaration": 2508, - "isOffset": false, - "isSlot": false, - "src": "1826:12:20", - "suffix": "length", - "valueSize": 1 - }, - { - "declaration": 2508, - "isOffset": true, - "isSlot": false, - "src": "1718:12:20", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2506, - "isOffset": false, - "isSlot": false, - "src": "1772:4:20", - "valueSize": 1 - }, - { - "declaration": 2502, - "isOffset": false, - "isSlot": false, - "src": "1786:3:20", - "valueSize": 1 - }, - { - "declaration": 2504, - "isOffset": false, - "isSlot": false, - "src": "1799:4:20", - "valueSize": 1 - }, - { - "declaration": 2511, - "isOffset": false, - "isSlot": false, - "src": "1753:1:20", - "valueSize": 1 - } - ], - "id": 2513, - "nodeType": "InlineAssembly", - "src": "1654:220:20" - } - ] - }, - "documentation": { - "id": 2500, - "nodeType": "StructuredDocumentation", - "src": "1127:395:20", - "text": " @notice Calls another contract with the given parameters.\n @dev This method doesn't increase the memory pointer.\n @param _to The address of the contract to call.\n @param _val The value to send to the contract.\n @param _gas The amount of gas to provide for the call.\n @param _data The data to send to the contract.\n @return r The success status of the call." - }, - "id": 2515, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "call", - "nameLocation": "1534:4:20", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2509, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2502, - "mutability": "mutable", - "name": "_to", - "nameLocation": "1552:3:20", - "nodeType": "VariableDeclaration", - "scope": 2515, - "src": "1544:11:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2501, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1544:7:20", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2504, - "mutability": "mutable", - "name": "_val", - "nameLocation": "1569:4:20", - "nodeType": "VariableDeclaration", - "scope": 2515, - "src": "1561:12:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2503, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1561:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2506, - "mutability": "mutable", - "name": "_gas", - "nameLocation": "1587:4:20", - "nodeType": "VariableDeclaration", - "scope": 2515, - "src": "1579:12:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2505, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1579:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2508, - "mutability": "mutable", - "name": "_data", - "nameLocation": "1612:5:20", - "nodeType": "VariableDeclaration", - "scope": 2515, - "src": "1597:20:20", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2507, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1597:5:20", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1538:83:20" - }, - "returnParameters": { - "id": 2512, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2511, - "mutability": "mutable", - "name": "r", - "nameLocation": "1645:1:20", - "nodeType": "VariableDeclaration", - "scope": 2515, - "src": "1640:6:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2510, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1640:4:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1639:8:20" - }, - "scope": 2530, - "src": "1525:353:20", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2528, - "nodeType": "Block", - "src": "2361:224:20", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "2376:205:20", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2384:22:20", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2401:4:20", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2395:5:20" - }, - "nodeType": "YulFunctionCall", - "src": "2395:11:20" - }, - "variables": [ - { - "name": "tmp", - "nodeType": "YulTypedName", - "src": "2388:3:20", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "tmp", - "nodeType": "YulIdentifier", - "src": "2426:3:20" - }, - { - "name": "_data.offset", - "nodeType": "YulIdentifier", - "src": "2431:12:20" - }, - { - "name": "_data.length", - "nodeType": "YulIdentifier", - "src": "2445:12:20" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "2413:12:20" - }, - "nodeType": "YulFunctionCall", - "src": "2413:45:20" - }, - "nodeType": "YulExpressionStatement", - "src": "2413:45:20" - }, - { - "nodeType": "YulAssignment", - "src": "2466:109:20", - "value": { - "arguments": [ - { - "name": "_gas", - "nodeType": "YulIdentifier", - "src": "2493:4:20" - }, - { - "name": "_to", - "nodeType": "YulIdentifier", - "src": "2507:3:20" - }, - { - "name": "tmp", - "nodeType": "YulIdentifier", - "src": "2520:3:20" - }, - { - "name": "_data.length", - "nodeType": "YulIdentifier", - "src": "2533:12:20" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2555:1:20", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2566:1:20", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "delegatecall", - "nodeType": "YulIdentifier", - "src": "2471:12:20" - }, - "nodeType": "YulFunctionCall", - "src": "2471:104:20" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "2466:1:20" - } - ] - } - ] - }, - "evmVersion": "paris", - "externalReferences": [ - { - "declaration": 2522, - "isOffset": false, - "isSlot": false, - "src": "2445:12:20", - "suffix": "length", - "valueSize": 1 - }, - { - "declaration": 2522, - "isOffset": false, - "isSlot": false, - "src": "2533:12:20", - "suffix": "length", - "valueSize": 1 - }, - { - "declaration": 2522, - "isOffset": true, - "isSlot": false, - "src": "2431:12:20", - "suffix": "offset", - "valueSize": 1 - }, - { - "declaration": 2520, - "isOffset": false, - "isSlot": false, - "src": "2493:4:20", - "valueSize": 1 - }, - { - "declaration": 2518, - "isOffset": false, - "isSlot": false, - "src": "2507:3:20", - "valueSize": 1 - }, - { - "declaration": 2525, - "isOffset": false, - "isSlot": false, - "src": "2466:1:20", - "valueSize": 1 - } - ], - "id": 2527, - "nodeType": "InlineAssembly", - "src": "2367:214:20" - } - ] - }, - "documentation": { - "id": 2516, - "nodeType": "StructuredDocumentation", - "src": "1882:363:20", - "text": " @notice Calls another contract with the given parameters, using delegatecall.\n @dev This method doesn't increase the memory pointer.\n @param _to The address of the contract to call.\n @param _gas The amount of gas to provide for the call.\n @param _data The data to send to the contract.\n @return r The success status of the call." - }, - "id": 2529, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "delegatecall", - "nameLocation": "2257:12:20", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2523, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2518, - "mutability": "mutable", - "name": "_to", - "nameLocation": "2283:3:20", - "nodeType": "VariableDeclaration", - "scope": 2529, - "src": "2275:11:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2517, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2275:7:20", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2520, - "mutability": "mutable", - "name": "_gas", - "nameLocation": "2300:4:20", - "nodeType": "VariableDeclaration", - "scope": 2529, - "src": "2292:12:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2519, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2292:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2522, - "mutability": "mutable", - "name": "_data", - "nameLocation": "2325:5:20", - "nodeType": "VariableDeclaration", - "scope": 2529, - "src": "2310:20:20", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2521, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2310:5:20", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "2269:65:20" - }, - "returnParameters": { - "id": 2526, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2525, - "mutability": "mutable", - "name": "r", - "nameLocation": "2358:1:20", - "nodeType": "VariableDeclaration", - "scope": 2529, - "src": "2353:6:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2524, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2353:4:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "2352:8:20" - }, - "scope": 2530, - "src": "2248:337:20", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2531, - "src": "244:2343:20", - "usedErrors": [] - } - ], - "src": "39:2549:20" - }, - "id": 20 - }, - "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol": { - "ast": { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/SignatureValidator.sol", - "exportedSymbols": { - "IERC1271Wallet": [ - 22 - ], - "LibBytes": [ - 2374 - ], - "SignatureValidator": [ - 2798 - ] - }, - "id": 2799, - "license": "Apache-2.0", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2532, - "literals": [ - "solidity", - "0.8", - ".18" - ], - "nodeType": "PragmaDirective", - "src": "39:23:21" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/interfaces/IERC1271Wallet.sol", - "file": "../interfaces/IERC1271Wallet.sol", - "id": 2533, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2799, - "sourceUnit": 23, - "src": "64:42:21", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "sourcify-verified/1/0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE/sources/contracts/utils/LibBytes.sol", - "file": "./LibBytes.sol", - "id": 2534, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 2799, - "sourceUnit": 2375, - "src": "108:24:21", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "SignatureValidator", - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 2535, - "nodeType": "StructuredDocumentation", - "src": "134:295:21", - "text": " @dev Contains logic for signature validation.\n Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md)\n Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/" - }, - "fullyImplemented": true, - "id": 2798, - "linearizedBaseContracts": [ - 2798 - ], - "name": "SignatureValidator", - "nameLocation": "438:18:21", - "nodeType": "ContractDefinition", - "nodes": [ - { - "errorSelector": "2ee17a3d", - "id": 2539, - "name": "InvalidSignatureLength", - "nameLocation": "479:22:21", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 2538, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2537, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "508:10:21", - "nodeType": "VariableDeclaration", - "scope": 2539, - "src": "502:16:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2536, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "502:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "501:18:21" - }, - "src": "473:47:21" - }, - { - "errorSelector": "ac241e11", - "id": 2541, - "name": "EmptySignature", - "nameLocation": "529:14:21", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 2540, - "nodeType": "ParameterList", - "parameters": [], - "src": "543:2:21" - }, - "src": "523:23:21" - }, - { - "errorSelector": "ad4aac76", - "id": 2547, - "name": "InvalidSValue", - "nameLocation": "555:13:21", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 2546, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2543, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "575:10:21", - "nodeType": "VariableDeclaration", - "scope": 2547, - "src": "569:16:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2542, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "569:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2545, - "mutability": "mutable", - "name": "_s", - "nameLocation": "595:2:21", - "nodeType": "VariableDeclaration", - "scope": 2547, - "src": "587:10:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2544, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "587:7:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "568:30:21" - }, - "src": "549:50:21" - }, - { - "errorSelector": "e578897e", - "id": 2553, - "name": "InvalidVValue", - "nameLocation": "608:13:21", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 2552, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2549, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "628:10:21", - "nodeType": "VariableDeclaration", - "scope": 2553, - "src": "622:16:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2548, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "622:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2551, - "mutability": "mutable", - "name": "_v", - "nameLocation": "648:2:21", - "nodeType": "VariableDeclaration", - "scope": 2553, - "src": "640:10:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2550, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "640:7:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "621:30:21" - }, - "src": "602:50:21" - }, - { - "errorSelector": "9dfba852", - "id": 2561, - "name": "UnsupportedSignatureType", - "nameLocation": "661:24:21", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 2560, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2555, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "692:10:21", - "nodeType": "VariableDeclaration", - "scope": 2561, - "src": "686:16:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2554, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "686:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2557, - "mutability": "mutable", - "name": "_type", - "nameLocation": "712:5:21", - "nodeType": "VariableDeclaration", - "scope": 2561, - "src": "704:13:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2556, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "704:7:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2559, - "mutability": "mutable", - "name": "_recoverMode", - "nameLocation": "724:12:21", - "nodeType": "VariableDeclaration", - "scope": 2561, - "src": "719:17:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2558, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "719:4:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "685:52:21" - }, - "src": "655:83:21" - }, - { - "errorSelector": "6c1719d2", - "id": 2565, - "name": "SignerIsAddress0", - "nameLocation": "747:16:21", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 2564, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2563, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "770:10:21", - "nodeType": "VariableDeclaration", - "scope": 2565, - "src": "764:16:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2562, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "764:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "763:18:21" - }, - "src": "741:41:21" - }, - { - "global": false, - "id": 2568, - "libraryName": { - "id": 2566, - "name": "LibBytes", - "nameLocations": [ - "792:8:21" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 2374, - "src": "792:8:21" - }, - "nodeType": "UsingForDirective", - "src": "786:25:21", - "typeName": { - "id": 2567, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "805:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - } - }, - { - "constant": true, - "id": 2571, - "mutability": "constant", - "name": "ERC1271_MAGICVALUE", - "nameLocation": "1017:18:21", - "nodeType": "VariableDeclaration", - "scope": 2798, - "src": "992:56:21", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 2569, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "992:6:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "hexValue": "30783230633133623062", - "id": 2570, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1038:10:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_549534475_by_1", - "typeString": "int_const 549534475" - }, - "value": "0x20c13b0b" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 2574, - "mutability": "constant", - "name": "ERC1271_MAGICVALUE_BYTES32", - "nameLocation": "1136:26:21", - "nodeType": "VariableDeclaration", - "scope": 2798, - "src": "1111:64:21", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 2572, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "1111:6:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "hexValue": "30783136323662613765", - "id": 2573, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1165:10:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_371636862_by_1", - "typeString": "int_const 371636862" - }, - "value": "0x1626ba7e" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 2577, - "mutability": "constant", - "name": "SIG_TYPE_EIP712", - "nameLocation": "1235:15:21", - "nodeType": "VariableDeclaration", - "scope": 2798, - "src": "1210:44:21", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2575, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1210:7:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "31", - "id": 2576, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1253:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 2580, - "mutability": "constant", - "name": "SIG_TYPE_ETH_SIGN", - "nameLocation": "1283:17:21", - "nodeType": "VariableDeclaration", - "scope": 2798, - "src": "1258:46:21", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2578, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1258:7:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "32", - "id": 2579, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1303:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 2583, - "mutability": "constant", - "name": "SIG_TYPE_WALLET_BYTES32", - "nameLocation": "1333:23:21", - "nodeType": "VariableDeclaration", - "scope": 2798, - "src": "1308:52:21", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2581, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1308:7:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "33", - "id": 2582, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1359:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "visibility": "private" - }, - { - "body": { - "id": 2714, - "nodeType": "Block", - "src": "1883:2200:21", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2593, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "1893:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1904:6:21", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1893:17:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "3636", - "id": 2595, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1914:2:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_66_by_1", - "typeString": "int_const 66" - }, - "value": "66" - }, - "src": "1893:23:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2601, - "nodeType": "IfStatement", - "src": "1889:70:21", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 2598, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "1948:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 2597, - "name": "InvalidSignatureLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2539, - "src": "1925:22:21", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes memory) pure" - } - }, - "id": 2599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1925:34:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2600, - "nodeType": "RevertStatement", - "src": "1918:41:21" - } - }, - { - "assignments": [ - 2603 - ], - "declarations": [ - { - "constant": false, - "id": 2603, - "mutability": "mutable", - "name": "signatureType", - "nameLocation": "1973:13:21", - "nodeType": "VariableDeclaration", - "scope": 2714, - "src": "1965:21:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2602, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1965:7:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2611, - "initialValue": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2606, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "2010:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2021:6:21", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "2010:17:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 2608, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2030:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2010:21:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 2604, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "1989:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2000:9:21", - "memberName": "readUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 2351, - "src": "1989:20:21", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint8)" - } - }, - "id": 2610, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1989:43:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1965:67:21" - }, - { - "assignments": [ - 2613 - ], - "declarations": [ - { - "constant": false, - "id": 2613, - "mutability": "mutable", - "name": "v", - "nameLocation": "2090:1:21", - "nodeType": "VariableDeclaration", - "scope": 2714, - "src": "2084:7:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 2612, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2084:5:21", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 2618, - "initialValue": { - "arguments": [ - { - "hexValue": "3634", - "id": 2616, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2115:2:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - }, - "value": "64" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - } - ], - "expression": { - "id": 2614, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "2094:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2615, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2105:9:21", - "memberName": "readUint8", - "nodeType": "MemberAccess", - "referencedDeclaration": 2351, - "src": "2094:20:21", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (uint8)" - } - }, - "id": 2617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2094:24:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2084:34:21" - }, - { - "assignments": [ - 2620 - ], - "declarations": [ - { - "constant": false, - "id": 2620, - "mutability": "mutable", - "name": "r", - "nameLocation": "2132:1:21", - "nodeType": "VariableDeclaration", - "scope": 2714, - "src": "2124:9:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2619, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2124:7:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 2625, - "initialValue": { - "arguments": [ - { - "hexValue": "30", - "id": 2623, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2159:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "id": 2621, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "2136:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2147:11:21", - "memberName": "readBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 2339, - "src": "2136:22:21", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (bytes32)" - } - }, - "id": 2624, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2136:25:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2124:37:21" - }, - { - "assignments": [ - 2627 - ], - "declarations": [ - { - "constant": false, - "id": 2627, - "mutability": "mutable", - "name": "s", - "nameLocation": "2175:1:21", - "nodeType": "VariableDeclaration", - "scope": 2714, - "src": "2167:9:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2626, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2167:7:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 2632, - "initialValue": { - "arguments": [ - { - "hexValue": "3332", - "id": 2630, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2202:2:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - } - ], - "expression": { - "id": 2628, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "2179:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2190:11:21", - "memberName": "readBytes32", - "nodeType": "MemberAccess", - "referencedDeclaration": 2339, - "src": "2179:22:21", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes_calldata_ptr_$", - "typeString": "function (bytes calldata,uint256) pure returns (bytes32)" - } - }, - "id": 2631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2179:26:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2167:38:21" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 2635, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2627, - "src": "3204:1:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2634, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3196:7:21", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2633, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3196:7:21", - "typeDescriptions": {} - } - }, - "id": 2636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3196:10:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130", - "id": 2637, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3209:66:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1", - "typeString": "int_const 5789...(69 digits omitted)...7168" - }, - "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" - }, - "src": "3196:79:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2645, - "nodeType": "IfStatement", - "src": "3192:135:21", - "trueBody": { - "id": 2644, - "nodeType": "Block", - "src": "3277:50:21", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2640, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "3306:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "id": 2641, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2627, - "src": "3318:1:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2639, - "name": "InvalidSValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2547, - "src": "3292:13:21", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$", - "typeString": "function (bytes memory,bytes32) pure" - } - }, - "id": 2642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3292:28:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2643, - "nodeType": "RevertStatement", - "src": "3285:35:21" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 2648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2646, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2613, - "src": "3337:1:21", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "3237", - "id": 2647, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3342:2:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_27_by_1", - "typeString": "int_const 27" - }, - "value": "27" - }, - "src": "3337:7:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 2651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2649, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2613, - "src": "3348:1:21", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "3238", - "id": 2650, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3353:2:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_28_by_1", - "typeString": "int_const 28" - }, - "value": "28" - }, - "src": "3348:7:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3337:18:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2659, - "nodeType": "IfStatement", - "src": "3333:74:21", - "trueBody": { - "id": 2658, - "nodeType": "Block", - "src": "3357:50:21", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2654, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "3386:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "id": 2655, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2613, - "src": "3398:1:21", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 2653, - "name": "InvalidVValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2553, - "src": "3372:13:21", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", - "typeString": "function (bytes memory,uint256) pure" - } - }, - "id": 2656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3372:28:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2657, - "nodeType": "RevertStatement", - "src": "3365:35:21" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2662, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2660, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2603, - "src": "3447:13:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 2661, - "name": "SIG_TYPE_EIP712", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2577, - "src": "3464:15:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3447:32:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2675, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2673, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2603, - "src": "3608:13:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 2674, - "name": "SIG_TYPE_ETH_SIGN", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2580, - "src": "3625:17:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3608:34:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 2698, - "nodeType": "Block", - "src": "3805:147:21", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2693, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "3913:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "id": 2694, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2603, - "src": "3925:13:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "74727565", - "id": 2695, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3940:4:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2692, - "name": "UnsupportedSignatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2561, - "src": "3888:24:21", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bool_$returns$__$", - "typeString": "function (bytes memory,uint256,bool) pure" - } - }, - "id": 2696, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3888:57:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2697, - "nodeType": "RevertStatement", - "src": "3881:64:21" - } - ] - }, - "id": 2699, - "nodeType": "IfStatement", - "src": "3604:348:21", - "trueBody": { - "id": 2691, - "nodeType": "Block", - "src": "3644:155:21", - "statements": [ - { - "expression": { - "id": 2689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2676, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "3652:6:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332", - "id": 2681, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3707:34:21", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", - "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\"" - }, - "value": "\u0019Ethereum Signed Message:\n32" - }, - { - "id": 2682, - "name": "_hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2586, - "src": "3743:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", - "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\"" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "id": 2679, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967295, - "src": "3690:3:21", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 2680, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "3694:12:21", - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "3690:16:21", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 2683, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3690:59:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 2678, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967288, - "src": "3680:9:21", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 2684, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3680:70:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2685, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2613, - "src": "3760:1:21", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "id": 2686, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2620, - "src": "3771:1:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2687, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2627, - "src": "3782:1:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2677, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967290, - "src": "3661:9:21", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 2688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3661:130:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3652:139:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 2690, - "nodeType": "ExpressionStatement", - "src": "3652:139:21" - } - ] - } - }, - "id": 2700, - "nodeType": "IfStatement", - "src": "3443:509:21", - "trueBody": { - "id": 2672, - "nodeType": "Block", - "src": "3481:117:21", - "statements": [ - { - "expression": { - "id": 2670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2663, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "3489:6:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2665, - "name": "_hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2586, - "src": "3508:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2666, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2613, - "src": "3515:1:21", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "id": 2667, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2620, - "src": "3518:1:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2668, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2627, - "src": "3521:1:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2664, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967290, - "src": "3498:9:21", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 2669, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3498:25:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3489:34:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 2671, - "nodeType": "ExpressionStatement", - "src": "3489:34:21" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 2706, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2701, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "3999:6:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "307830", - "id": 2704, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4017:3:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0x0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 2703, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4009:7:21", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 2702, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4009:7:21", - "typeDescriptions": {} - } - }, - "id": 2705, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4009:12:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3999:22:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2711, - "nodeType": "IfStatement", - "src": "3995:63:21", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 2708, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2588, - "src": "4047:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 2707, - "name": "SignerIsAddress0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2565, - "src": "4030:16:21", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes memory) pure" - } - }, - "id": 2709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4030:28:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2710, - "nodeType": "RevertStatement", - "src": "4023:35:21" - } - }, - { - "expression": { - "id": 2712, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4072:6:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 2592, - "id": 2713, - "nodeType": "Return", - "src": "4065:13:21" - } - ] - }, - "documentation": { - "id": 2584, - "nodeType": "StructuredDocumentation", - "src": "1485:279:21", - "text": " @notice Recover the signer of hash, assuming it's an EOA account\n @dev Only for SignatureType.EIP712 and SignatureType.EthSign signatures\n @param _hash Hash that was signed\n encoded as (bytes32 r, bytes32 s, uint8 v, ... , SignatureType sigType)" - }, - "id": 2715, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "recoverSigner", - "nameLocation": "1776:13:21", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2589, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2586, - "mutability": "mutable", - "name": "_hash", - "nameLocation": "1803:5:21", - "nodeType": "VariableDeclaration", - "scope": 2715, - "src": "1795:13:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2585, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1795:7:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2588, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "1829:10:21", - "nodeType": "VariableDeclaration", - "scope": 2715, - "src": "1814:25:21", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2587, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1814:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1789:54:21" - }, - "returnParameters": { - "id": 2592, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2591, - "mutability": "mutable", - "name": "signer", - "nameLocation": "1875:6:21", - "nodeType": "VariableDeclaration", - "scope": 2715, - "src": "1867:14:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2590, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1867:7:21", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1866:16:21" - }, - "scope": 2798, - "src": "1767:2316:21", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 2796, - "nodeType": "Block", - "src": "4547:815:21", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2727, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2722, - "src": "4557:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4568:6:21", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "4557:17:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 2729, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4578:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4557:22:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2735, - "nodeType": "IfStatement", - "src": "4553:66:21", - "trueBody": { - "id": 2734, - "nodeType": "Block", - "src": "4581:38:21", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2731, - "name": "EmptySignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2541, - "src": "4596:14:21", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 2732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4596:16:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2733, - "nodeType": "RevertStatement", - "src": "4589:23:21" - } - ] - } - }, - { - "assignments": [ - 2737 - ], - "declarations": [ - { - "constant": false, - "id": 2737, - "mutability": "mutable", - "name": "signatureType", - "nameLocation": "4633:13:21", - "nodeType": "VariableDeclaration", - "scope": 2796, - "src": "4625:21:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2736, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4625:7:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2747, - "initialValue": { - "arguments": [ - { - "baseExpression": { - "id": 2740, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2722, - "src": "4655:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2745, - "indexExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2744, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2741, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2722, - "src": "4666:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2742, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4677:6:21", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "4666:17:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 2743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4686:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4666:21:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4655:33:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - ], - "id": 2739, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4649:5:21", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": { - "id": 2738, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4649:5:21", - "typeDescriptions": {} - } - }, - "id": 2746, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4649:40:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4625:64:21" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2750, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2748, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2737, - "src": "4699:13:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 2749, - "name": "SIG_TYPE_EIP712", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2577, - "src": "4716:15:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4699:32:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2753, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2751, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2737, - "src": "4735:13:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 2752, - "name": "SIG_TYPE_ETH_SIGN", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2580, - "src": "4752:17:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4735:34:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4699:70:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2767, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2765, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2737, - "src": "4898:13:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 2766, - "name": "SIG_TYPE_WALLET_BYTES32", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2583, - "src": "4915:23:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4898:40:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 2793, - "nodeType": "Block", - "src": "5158:200:21", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 2788, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2722, - "src": "5318:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "id": 2789, - "name": "signatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2737, - "src": "5330:13:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "66616c7365", - "id": 2790, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5345:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2787, - "name": "UnsupportedSignatureType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2561, - "src": "5293:24:21", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_bool_$returns$__$", - "typeString": "function (bytes memory,uint256,bool) pure" - } - }, - "id": 2791, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5293:58:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2792, - "nodeType": "RevertStatement", - "src": "5286:65:21" - } - ] - }, - "id": 2794, - "nodeType": "IfStatement", - "src": "4894:464:21", - "trueBody": { - "id": 2786, - "nodeType": "Block", - "src": "4940:212:21", - "statements": [ - { - "expression": { - "id": 2784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2768, - "name": "valid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2725, - "src": "5022:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 2783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2769, - "name": "ERC1271_MAGICVALUE_BYTES32", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2574, - "src": "5030:26:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "id": 2774, - "name": "_hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2718, - "src": "5101:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 2775, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2722, - "src": "5108:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2777, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2722, - "src": "5121:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "id": 2778, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5132:6:21", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "5121:17:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 2779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5141:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "5121:21:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "5108:35:21", - "startExpression": { - "hexValue": "30", - "id": 2776, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5119:1:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "expression": { - "arguments": [ - { - "id": 2771, - "name": "_signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2720, - "src": "5075:7:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2770, - "name": "IERC1271Wallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 22, - "src": "5060:14:21", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC1271Wallet_$22_$", - "typeString": "type(contract IERC1271Wallet)" - } - }, - "id": 2772, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5060:23:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC1271Wallet_$22", - "typeString": "contract IERC1271Wallet" - } - }, - "id": 2773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5084:16:21", - "memberName": "isValidSignature", - "nodeType": "MemberAccess", - "referencedDeclaration": 21, - "src": "5060:40:21", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", - "typeString": "function (bytes32,bytes memory) view external returns (bytes4)" - } - }, - "id": 2782, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5060:84:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "5030:114:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5022:122:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2785, - "nodeType": "ExpressionStatement", - "src": "5022:122:21" - } - ] - } - }, - "id": 2795, - "nodeType": "IfStatement", - "src": "4695:663:21", - "trueBody": { - "id": 2764, - "nodeType": "Block", - "src": "4771:117:21", - "statements": [ - { - "expression": { - "id": 2762, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2755, - "name": "valid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2725, - "src": "4829:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 2761, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 2757, - "name": "_hash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2718, - "src": "4851:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 2758, - "name": "_signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2722, - "src": "4858:10:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "id": 2756, - "name": "recoverSigner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2715, - "src": "4837:13:21", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_address_$", - "typeString": "function (bytes32,bytes calldata) pure returns (address)" - } - }, - "id": 2759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4837:32:21", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 2760, - "name": "_signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2720, - "src": "4873:7:21", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4837:43:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4829:51:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2763, - "nodeType": "ExpressionStatement", - "src": "4829:51:21" - } - ] - } - } - ] - }, - "documentation": { - "id": 2716, - "nodeType": "StructuredDocumentation", - "src": "4086:322:21", - "text": " @notice Returns true if the provided signature is valid for the given signer.\n @dev Supports SignatureType.EIP712, SignatureType.EthSign, and ERC1271 signatures\n @param _hash Hash that was signed\n @param _signer Address of the signer candidate\n @param _signature Signature byte array" - }, - "id": 2797, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isValidSignature", - "nameLocation": "4420:16:21", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2723, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2718, - "mutability": "mutable", - "name": "_hash", - "nameLocation": "4450:5:21", - "nodeType": "VariableDeclaration", - "scope": 2797, - "src": "4442:13:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2717, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4442:7:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2720, - "mutability": "mutable", - "name": "_signer", - "nameLocation": "4469:7:21", - "nodeType": "VariableDeclaration", - "scope": 2797, - "src": "4461:15:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2719, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4461:7:21", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2722, - "mutability": "mutable", - "name": "_signature", - "nameLocation": "4497:10:21", - "nodeType": "VariableDeclaration", - "scope": 2797, - "src": "4482:25:21", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2721, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4482:5:21", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "4436:75:21" - }, - "returnParameters": { - "id": 2726, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2725, - "mutability": "mutable", - "name": "valid", - "nameLocation": "4540:5:21", - "nodeType": "VariableDeclaration", - "scope": 2797, - "src": "4535:10:21", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2724, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4535:4:21", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4534:12:21" - }, - "scope": 2798, - "src": "4411:951:21", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 2799, - "src": "430:4934:21", - "usedErrors": [ - 2539, - 2541, - 2547, - 2553, - 2561, - 2565 - ] - } - ], - "src": "39:5326:21" - }, - "id": 21 - } - } - } -} \ No newline at end of file diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleAuth.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleAuth.sol deleted file mode 100644 index f696777ca4..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleAuth.sol +++ /dev/null @@ -1,176 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../../utils/LibBytes.sol"; -import "../../interfaces/IERC1271Wallet.sol"; - -import "./interfaces/IModuleAuth.sol"; - -import "./ModuleERC165.sol"; - -import "./submodules/auth/SequenceBaseSig.sol"; -import "./submodules/auth/SequenceDynamicSig.sol"; -import "./submodules/auth/SequenceNoChainIdSig.sol"; -import "./submodules/auth/SequenceChainedSig.sol"; - - -abstract contract ModuleAuth is - IModuleAuth, - ModuleERC165, - IERC1271Wallet, - SequenceChainedSig -{ - using LibBytes for bytes; - - bytes1 internal constant LEGACY_TYPE = hex"00"; - bytes1 internal constant DYNAMIC_TYPE = hex"01"; - bytes1 internal constant NO_CHAIN_ID_TYPE = hex"02"; - bytes1 internal constant CHAINED_TYPE = hex"03"; - - bytes4 internal constant SELECTOR_ERC1271_BYTES_BYTES = 0x20c13b0b; - bytes4 internal constant SELECTOR_ERC1271_BYTES32_BYTES = 0x1626ba7e; - - /** - * @notice Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature. - * @dev The signature must be prefixed with a type byte, which is used to determine the recovery method. - * - * @param _digest Digest of the signed data. - * @param _signature A Sequence signature. - * - * @return threshold The required number of signatures needed to consider the signature valid. - * @return weight The actual number of signatures collected in the signature. - * @return imageHash The imageHash of the configuration that signed the message. - * @return subdigest A modified version of the original digest, unique for each wallet/network. - * @return checkpoint A nonce that is incremented every time a new configuration is set. - */ - function signatureRecovery( - bytes32 _digest, - bytes calldata _signature - ) public override virtual view returns ( - uint256 threshold, - uint256 weight, - bytes32 imageHash, - bytes32 subdigest, - uint256 checkpoint - ) { - bytes1 signatureType = _signature[0]; - - if (signatureType == LEGACY_TYPE) { - // networkId digest + base recover - subdigest = SequenceBaseSig.subdigest(_digest); - (threshold, weight, imageHash, checkpoint) = SequenceBaseSig.recover(subdigest, _signature); - return (threshold, weight, imageHash, subdigest, checkpoint); - } - - if (signatureType == DYNAMIC_TYPE) { - // networkId digest + dynamic recover - subdigest = SequenceBaseSig.subdigest(_digest); - (threshold, weight, imageHash, checkpoint) = SequenceDynamicSig.recover(subdigest, _signature); - return (threshold, weight, imageHash, subdigest, checkpoint); - } - - if (signatureType == NO_CHAIN_ID_TYPE) { - // noChainId digest + dynamic recover - subdigest = SequenceNoChainIdSig.subdigest(_digest); - (threshold, weight, imageHash, checkpoint) = SequenceDynamicSig.recover(subdigest, _signature); - return (threshold, weight, imageHash, subdigest, checkpoint); - } - - if (signatureType == CHAINED_TYPE) { - // original digest + chained recover - // (subdigest will be computed in the chained recover) - return chainedRecover(_digest, _signature); - } - - revert InvalidSignatureType(signatureType); - } - - /** - * @dev Validates a signature. - * - * @param _digest Digest of the signed data. - * @param _signature A Sequence signature. - * - * @return isValid Indicates whether the signature is valid or not. - * @return subdigest A modified version of the original digest, unique for each wallet/network. - */ - function _signatureValidation( - bytes32 _digest, - bytes calldata _signature - ) internal override virtual view returns ( - bool isValid, - bytes32 subdigest - ) { - uint256 threshold; uint256 weight; bytes32 imageHash; - (threshold, weight, imageHash, subdigest,) = signatureRecovery(_digest, _signature); - isValid = weight >= threshold && _isValidImage(imageHash); - } - - /** - * @notice Verifies whether the provided signature is valid with respect to the provided data - * @dev MUST return the correct magic value if the signature provided is valid for the provided data - * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)")) - * @param _data Arbitrary length data signed on the behalf of address(this) - * @param _signatures Signature byte array associated with _data. - * Encoded as abi.encode(Signature[], Configs) - * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise - */ - function isValidSignature( - bytes calldata _data, - bytes calldata _signatures - ) public override virtual view returns (bytes4) { - // Validate signatures - (bool isValid,) = _signatureValidation(keccak256(_data), _signatures); - if (isValid) { - return SELECTOR_ERC1271_BYTES_BYTES; - } - - return bytes4(0); - } - - /** - * @notice Verifies whether the provided signature is valid with respect to the provided hash - * @dev MUST return the correct magic value if the signature provided is valid for the provided hash - * > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)")) - * @param _hash keccak256 hash that was signed - * @param _signatures Signature byte array associated with _data. - * Encoded as abi.encode(Signature[], Configs) - * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise - */ - function isValidSignature( - bytes32 _hash, - bytes calldata _signatures - ) public override virtual view returns (bytes4) { - // Validate signatures - (bool isValid,) = _signatureValidation(_hash, _signatures); - if (isValid) { - return SELECTOR_ERC1271_BYTES32_BYTES; - } - - return bytes4(0); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) { - if ( - _interfaceID == type(IModuleAuth).interfaceId || - _interfaceID == type(IERC1271Wallet).interfaceId - ) { - return true; - } - - return super.supportsInterface(_interfaceID); - } - - /** - * @notice Updates the signers configuration of the wallet - * @param _imageHash New required image hash of the signature - */ - function updateImageHash(bytes32 _imageHash) external override virtual onlySelf { - _updateImageHash(_imageHash); - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleCalls.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleCalls.sol deleted file mode 100644 index c90e0c403f..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleCalls.sol +++ /dev/null @@ -1,156 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleSelfAuth.sol"; -import "./ModuleStorage.sol"; -import "./ModuleERC165.sol"; -import "./ModuleNonce.sol"; -import "./ModuleOnlyDelegatecall.sol"; - -import "./interfaces/IModuleCalls.sol"; -import "./interfaces/IModuleAuth.sol"; - -import "./submodules/nonce/SubModuleNonce.sol"; -import "./submodules/auth/SequenceBaseSig.sol"; - -import "../../utils/LibOptim.sol"; - - -abstract contract ModuleCalls is IModuleCalls, IModuleAuth, ModuleERC165, ModuleOnlyDelegatecall, ModuleSelfAuth, ModuleNonce { - /** - * @notice Allow wallet owner to execute an action - * @dev Relayers must ensure that the gasLimit specified for each transaction - * is acceptable to them. A user could specify large enough that it could - * consume all the gas available. - * @param _txs Transactions to process - * @param _nonce Signature nonce (may contain an encoded space) - * @param _signature Encoded signature - */ - function execute( - Transaction[] calldata _txs, - uint256 _nonce, - bytes calldata _signature - ) external override virtual onlyDelegatecall { - // Validate and update nonce - _validateNonce(_nonce); - - // Hash and verify transaction bundle - (bool isValid, bytes32 txHash) = _signatureValidation( - keccak256( - abi.encode( - _nonce, - _txs - ) - ), - _signature - ); - - if (!isValid) { - revert InvalidSignature(txHash, _signature); - } - - // Execute the transactions - _execute(txHash, _txs); - } - - /** - * @notice Allow wallet to execute an action - * without signing the message - * @param _txs Transactions to execute - */ - function selfExecute( - Transaction[] calldata _txs - ) external override virtual onlySelf { - // Hash transaction bundle - bytes32 txHash = SequenceBaseSig.subdigest( - keccak256( - abi.encode('self:', _txs) - ) - ); - - // Execute the transactions - _execute(txHash, _txs); - } - - /** - * @notice Executes a list of transactions - * @param _txHash Hash of the batch of transactions - * @param _txs Transactions to execute - */ - function _execute( - bytes32 _txHash, - Transaction[] calldata _txs - ) private { - unchecked { - // Execute transaction - uint256 size = _txs.length; - for (uint256 i = 0; i < size; i++) { - Transaction calldata transaction = _txs[i]; - uint256 gasLimit = transaction.gasLimit; - - if (gasleft() < gasLimit) revert NotEnoughGas(i, gasLimit, gasleft()); - - bool success; - if (transaction.delegateCall) { - success = LibOptim.delegatecall( - transaction.target, - gasLimit == 0 ? gasleft() : gasLimit, - transaction.data - ); - } else { - success = LibOptim.call( - transaction.target, - transaction.value, - gasLimit == 0 ? gasleft() : gasLimit, - transaction.data - ); - } - - if (success) { - emit TxExecuted(_txHash, i); - } else { - // Avoid copy of return data until neccesary - _revertBytes( - transaction.revertOnError, - _txHash, - i, - LibOptim.returnData() - ); - } - } - } - } - - /** - * @notice Logs a failed transaction, reverts if the transaction is not optional - * @param _revertOnError Signals if it should revert or just log - * @param _txHash Hash of the transaction - * @param _index Index of the transaction in the batch - * @param _reason Encoded revert message - */ - function _revertBytes( - bool _revertOnError, - bytes32 _txHash, - uint256 _index, - bytes memory _reason - ) internal { - if (_revertOnError) { - assembly { revert(add(_reason, 0x20), mload(_reason)) } - } else { - emit TxFailed(_txHash, _index, _reason); - } - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) { - if (_interfaceID == type(IModuleCalls).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleCreator.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleCreator.sol deleted file mode 100644 index deec8e2617..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleCreator.sol +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./interfaces/IModuleCreator.sol"; - -import "./ModuleSelfAuth.sol"; -import "./ModuleERC165.sol"; - - -contract ModuleCreator is IModuleCreator, ModuleERC165, ModuleSelfAuth { - event CreatedContract(address _contract); - - /** - * @notice Creates a contract forwarding eth value - * @param _code Creation code of the contract - * @return addr The address of the created contract - */ - function createContract(bytes memory _code) public override virtual payable onlySelf returns (address addr) { - assembly { addr := create(callvalue(), add(_code, 32), mload(_code)) } - if (addr == address(0)) revert CreateFailed(_code); - emit CreatedContract(addr); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) { - if (_interfaceID == type(IModuleCreator).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleERC165.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleERC165.sol deleted file mode 100644 index 2e10bed9aa..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleERC165.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -abstract contract ModuleERC165 { - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @dev Adding new hooks will not lead to them being reported by this function - * without upgrading the wallet. In addition, developers must ensure that - * all inherited contracts by the main module don't conflict and are accounted - * to be supported by the supportsInterface method. - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) virtual public pure returns (bool) { - return _interfaceID == this.supportsInterface.selector; - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleNonce.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleNonce.sol deleted file mode 100644 index 561f5c5f71..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleNonce.sol +++ /dev/null @@ -1,67 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleStorage.sol"; - -import "./submodules/nonce/SubModuleNonce.sol"; - - -contract ModuleNonce { - // Events - event NonceChange(uint256 _space, uint256 _newNonce); - - // Errors - error BadNonce(uint256 _space, uint256 _provided, uint256 _current); - - // NONCE_KEY = keccak256("org.arcadeum.module.calls.nonce"); - bytes32 private constant NONCE_KEY = bytes32(0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e); - - /** - * @notice Returns the next nonce of the default nonce space - * @dev The default nonce space is 0x00 - * @return The next nonce - */ - function nonce() external virtual view returns (uint256) { - return readNonce(0); - } - - /** - * @notice Returns the next nonce of the given nonce space - * @param _space Nonce space, each space keeps an independent nonce count - * @return The next nonce - */ - function readNonce(uint256 _space) public virtual view returns (uint256) { - return uint256(ModuleStorage.readBytes32Map(NONCE_KEY, bytes32(_space))); - } - - /** - * @notice Changes the next nonce of the given nonce space - * @param _space Nonce space, each space keeps an independent nonce count - * @param _nonce Nonce to write on the space - */ - function _writeNonce(uint256 _space, uint256 _nonce) internal { - ModuleStorage.writeBytes32Map(NONCE_KEY, bytes32(_space), bytes32(_nonce)); - } - - /** - * @notice Verify if a nonce is valid - * @param _rawNonce Nonce to validate (may contain an encoded space) - */ - function _validateNonce(uint256 _rawNonce) internal virtual { - // Retrieve current nonce for this wallet - (uint256 space, uint256 providedNonce) = SubModuleNonce.decodeNonce(_rawNonce); - - uint256 currentNonce = readNonce(space); - if (currentNonce != providedNonce) { - revert BadNonce(space, providedNonce, currentNonce); - } - - unchecked { - uint256 newNonce = providedNonce + 1; - - _writeNonce(space, newNonce); - emit NonceChange(space, newNonce); - return; - } - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol deleted file mode 100644 index cc33f51def..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleOnlyDelegatecall.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -contract ModuleOnlyDelegatecall { - address private immutable self; - - error OnlyDelegatecall(); - - constructor() { - self = address(this); - } - - /** - * @notice Modifier that only allows functions to be called via delegatecall. - */ - modifier onlyDelegatecall() { - if (address(this) == self) { - revert OnlyDelegatecall(); - } - _; - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleSelfAuth.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleSelfAuth.sol deleted file mode 100644 index 4492d50829..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleSelfAuth.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -contract ModuleSelfAuth { - error OnlySelfAuth(address _sender, address _self); - - modifier onlySelf() { - if (msg.sender != address(this)) { - revert OnlySelfAuth(msg.sender, address(this)); - } - _; - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleStorage.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleStorage.sol deleted file mode 100644 index b614220661..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/ModuleStorage.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -library ModuleStorage { - function writeBytes32(bytes32 _key, bytes32 _val) internal { - assembly { sstore(_key, _val) } - } - - function readBytes32(bytes32 _key) internal view returns (bytes32 val) { - assembly { val := sload(_key) } - } - - function writeBytes32Map(bytes32 _key, bytes32 _subKey, bytes32 _val) internal { - bytes32 key = keccak256(abi.encode(_key, _subKey)); - assembly { sstore(key, _val) } - } - - function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) { - bytes32 key = keccak256(abi.encode(_key, _subKey)); - assembly { val := sload(key) } - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleAuth.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleAuth.sol deleted file mode 100644 index 46ae4a76e9..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleAuth.sol +++ /dev/null @@ -1,53 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -abstract contract IModuleAuth { - // IMAGE_HASH_KEY = keccak256("org.arcadeum.module.auth.upgradable.image.hash"); - bytes32 internal constant IMAGE_HASH_KEY = bytes32(0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8); - - event ImageHashUpdated(bytes32 newImageHash); - - // Errors - error ImageHashIsZero(); - error InvalidSignatureType(bytes1 _type); - - function _signatureValidation( - bytes32 _digest, - bytes calldata _signature - ) internal virtual view returns ( - bool isValid, - bytes32 subdigest - ); - - function signatureRecovery( - bytes32 _digest, - bytes calldata _signature - ) public virtual view returns ( - uint256 threshold, - uint256 weight, - bytes32 imageHash, - bytes32 subdigest, - uint256 checkpoint - ); - - /** - * @notice Validates the signature image - * @return true if the signature image is valid - */ - function _isValidImage(bytes32) internal virtual view returns (bool) { - return false; - } - - /** - * @notice Updates the signers configuration of the wallet - * @param _imageHash New required image hash of the signature - */ - function updateImageHash(bytes32 _imageHash) external virtual; - - /** - * @notice Updates the signers configuration of the wallet - * @param _imageHash New required image hash of the signature - */ - function _updateImageHash(bytes32 _imageHash) internal virtual; -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleCalls.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleCalls.sol deleted file mode 100644 index 9030ae7cda..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleCalls.sol +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -interface IModuleCalls { - // Events - event TxFailed(bytes32 indexed _tx, uint256 _index, bytes _reason); - event TxExecuted(bytes32 indexed _tx, uint256 _index); - - // Errors - error NotEnoughGas(uint256 _index, uint256 _requested, uint256 _available); - error InvalidSignature(bytes32 _hash, bytes _signature); - - // Transaction structure - struct Transaction { - bool delegateCall; // Performs delegatecall - bool revertOnError; // Reverts transaction bundle if tx fails - uint256 gasLimit; // Maximum gas to be forwarded - address target; // Address of the contract to call - uint256 value; // Amount of ETH to pass with the call - bytes data; // calldata to pass - } - - /** - * @notice Allow wallet owner to execute an action - * @param _txs Transactions to process - * @param _nonce Signature nonce (may contain an encoded space) - * @param _signature Encoded signature - */ - function execute( - Transaction[] calldata _txs, - uint256 _nonce, - bytes calldata _signature - ) external; - - /** - * @notice Allow wallet to execute an action - * without signing the message - * @param _txs Transactions to execute - */ - function selfExecute( - Transaction[] calldata _txs - ) external; -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleCreator.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleCreator.sol deleted file mode 100644 index fcf18d2197..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/interfaces/IModuleCreator.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -interface IModuleCreator { - error CreateFailed(bytes _code); - - /** - * @notice Creates a contract forwarding eth value - * @param _code Creation code of the contract - * @return addr The address of the created contract - */ - function createContract(bytes calldata _code) external payable returns (address addr); -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol deleted file mode 100644 index fbf5c10521..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol +++ /dev/null @@ -1,276 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../../../../utils/SignatureValidator.sol"; -import "../../../../utils/LibBytesPointer.sol"; -import "../../../../utils/LibBytes.sol"; -import "../../../../utils/LibOptim.sol"; - - -/** - * @title SequenceBaseSig Library - * @author Agustin Aguilar (aa@horizon.io) - * @notice A Solidity implementation for handling signatures in the Sequence protocol. - */ -library SequenceBaseSig { - using LibBytesPointer for bytes; - - uint256 private constant FLAG_SIGNATURE = 0; - uint256 private constant FLAG_ADDRESS = 1; - uint256 private constant FLAG_DYNAMIC_SIGNATURE = 2; - uint256 private constant FLAG_NODE = 3; - uint256 private constant FLAG_BRANCH = 4; - uint256 private constant FLAG_SUBDIGEST = 5; - uint256 private constant FLAG_NESTED = 6; - - error InvalidNestedSignature(bytes32 _hash, address _addr, bytes _signature); - error InvalidSignatureFlag(uint256 _flag); - - /** - * @notice Generates a subdigest for the input digest (unique for this wallet and network). - * @param _digest The input digest to generate the subdigest from. - * @return bytes32 The subdigest generated from the input digest. - */ - function subdigest( - bytes32 _digest - ) internal view returns (bytes32) { - return keccak256( - abi.encodePacked( - "\x19\x01", - block.chainid, - address(this), - _digest - ) - ); - } - - /** - * @notice Generates the leaf for an address and weight. - * @dev The leaf is generated by concatenating the address and weight. - * - * @param _addr The address to generate the leaf for. - * @param _weight The weight to generate the leaf for. - * @return bytes32 The leaf generated from the address and weight. - */ - function _leafForAddressAndWeight( - address _addr, - uint96 _weight - ) internal pure returns (bytes32) { - unchecked { - return bytes32(uint256(_weight) << 160 | uint256(uint160(_addr))); - } - } - - /** - * @notice Generates the leaf for a hardcoded subdigest. - * @dev The leaf is generated by hashing 'Sequence static digest:\n' and the subdigest. - * @param _subdigest The subdigest to generate the leaf for. - * @return bytes32 The leaf generated from the hardcoded subdigest. - */ - function _leafForHardcodedSubdigest( - bytes32 _subdigest - ) internal pure returns (bytes32) { - return keccak256(abi.encodePacked('Sequence static digest:\n', _subdigest)); - } - - /** - * @notice Generates the leaf for a nested tree node. - * @dev The leaf is generated by hashing 'Sequence nested config:\n', the node, the threshold and the weight. - * - * @param _node The root of the node to generate the leaf for. - * @param _threshold The internal threshold of the tree. - * @param _weight The external weight of the tree. - * @return bytes32 The leaf generated from the nested tree. - */ - function _leafForNested( - bytes32 _node, - uint256 _threshold, - uint256 _weight - ) internal pure returns (bytes32) { - return keccak256(abi.encodePacked('Sequence nested config:\n', _node, _threshold, _weight)); - } - - /** - * @notice Returns the weight and root of a signature branch. - * @dev If the signature contains a hardcoded subdigest, and it matches the input digest, then the weight is set to 2 ** 256 - 1. - * - * @param _subdigest The digest to verify the signature against. - * @param _signature The signature branch to recover. - * @return weight The total weight of the recovered signatures. - * @return root The root hash of the recovered configuration. - */ - function recoverBranch( - bytes32 _subdigest, - bytes calldata _signature - ) internal view returns ( - uint256 weight, - bytes32 root - ) { - unchecked { - uint256 rindex; - - // Iterate until the image is completed - while (rindex < _signature.length) { - // Read next item type - uint256 flag; - (flag, rindex) = _signature.readUint8(rindex); - - if (flag == FLAG_ADDRESS) { - // Read plain address - uint8 addrWeight; address addr; - (addrWeight, addr, rindex) = _signature.readUint8Address(rindex); - - // Write weight and address to image - bytes32 node = _leafForAddressAndWeight(addr, addrWeight); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - if (flag == FLAG_SIGNATURE) { - // Read weight - uint8 addrWeight; - (addrWeight, rindex) = _signature.readUint8(rindex); - - // Read single signature and recover signer - uint256 nrindex = rindex + 66; - address addr = SignatureValidator.recoverSigner(_subdigest, _signature[rindex:nrindex]); - rindex = nrindex; - - // Acumulate total weight of the signature - weight += addrWeight; - - // Write weight and address to image - bytes32 node = _leafForAddressAndWeight(addr, addrWeight); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - if (flag == FLAG_DYNAMIC_SIGNATURE) { - // Read signer and weight - uint8 addrWeight; address addr; - (addrWeight, addr, rindex) = _signature.readUint8Address(rindex); - - // Read signature size - uint256 size; - (size, rindex) = _signature.readUint24(rindex); - - // Read dynamic size signature - uint256 nrindex = rindex + size; - if (!SignatureValidator.isValidSignature(_subdigest, addr, _signature[rindex:nrindex])) { - revert InvalidNestedSignature(_subdigest, addr, _signature[rindex:nrindex]); - } - rindex = nrindex; - - // Acumulate total weight of the signature - weight += addrWeight; - - // Write weight and address to image - bytes32 node = _leafForAddressAndWeight(addr, addrWeight); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - if (flag == FLAG_NODE) { - // Read node hash - bytes32 node; - (node, rindex) = _signature.readBytes32(rindex); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - if (flag == FLAG_BRANCH) { - // Enter a branch of the signature merkle tree - uint256 size; - (size, rindex) = _signature.readUint24(rindex); - uint256 nrindex = rindex + size; - - uint256 nweight; bytes32 node; - (nweight, node) = recoverBranch(_subdigest, _signature[rindex:nrindex]); - - weight += nweight; - root = LibOptim.fkeccak256(root, node); - - rindex = nrindex; - continue; - } - - if (flag == FLAG_NESTED) { - // Enter a branch of the signature merkle tree - // but with an internal threshold and an external fixed weight - uint256 externalWeight; - (externalWeight, rindex) = _signature.readUint8(rindex); - - uint256 internalThreshold; - (internalThreshold, rindex) = _signature.readUint16(rindex); - - uint256 size; - (size, rindex) = _signature.readUint24(rindex); - uint256 nrindex = rindex + size; - - uint256 internalWeight; bytes32 internalRoot; - (internalWeight, internalRoot) = recoverBranch(_subdigest, _signature[rindex:nrindex]); - rindex = nrindex; - - if (internalWeight >= internalThreshold) { - weight += externalWeight; - } - - bytes32 node = _leafForNested(internalRoot, internalThreshold, externalWeight); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - - continue; - } - - if (flag == FLAG_SUBDIGEST) { - // A hardcoded always accepted digest - // it pushes the weight to the maximum - bytes32 hardcoded; - (hardcoded, rindex) = _signature.readBytes32(rindex); - if (hardcoded == _subdigest) { - weight = type(uint256).max; - } - - bytes32 node = _leafForHardcodedSubdigest(hardcoded); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - revert InvalidSignatureFlag(flag); - } - } - } - - /** - * @notice Returns the threshold, weight, root, and checkpoint of a signature. - * @dev To verify the signature, the weight must be greater than or equal to the threshold, and the root - * must match the expected `imageHash` of the wallet. - * - * @param _subdigest The digest to verify the signature against. - * @param _signature The signature to recover. - * @return threshold The minimum weight required for the signature to be valid. - * @return weight The total weight of the recovered signatures. - * @return imageHash The root hash of the recovered configuration - * @return checkpoint The checkpoint of the signature. - */ - function recover( - bytes32 _subdigest, - bytes calldata _signature - ) internal view returns ( - uint256 threshold, - uint256 weight, - bytes32 imageHash, - uint256 checkpoint - ) { - unchecked { - (weight, imageHash) = recoverBranch(_subdigest, _signature[6:]); - - // Threshold & checkpoint are the top nodes - // (but they are first on the signature) - threshold = LibBytes.readFirstUint16(_signature); - checkpoint = LibBytes.readUint32(_signature, 2); - - imageHash = LibOptim.fkeccak256(imageHash, bytes32(threshold)); - imageHash = LibOptim.fkeccak256(imageHash, bytes32(checkpoint)); - } - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol deleted file mode 100644 index e8ad0913f0..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol +++ /dev/null @@ -1,129 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./SequenceBaseSig.sol"; - -import "../../interfaces/IModuleAuth.sol"; - -import "../../ModuleSelfAuth.sol"; -import "../../ModuleStorage.sol"; - -import "../../../../utils/LibBytesPointer.sol"; -import "../../../../utils/LibOptim.sol"; - -/** - * @title Sequence chained auth recovery submodule - * @author Agustin Aguilar (aa@horizon.io) - * @notice Defines Sequence signatures that work by delegating control to new configurations. - * @dev The delegations can be chained together, the first signature is the one that is used to validate - * the message, the last signature must match the current on-chain configuration of the wallet. - */ -abstract contract SequenceChainedSig is IModuleAuth, ModuleSelfAuth { - using LibBytesPointer for bytes; - - bytes32 public constant SET_IMAGE_HASH_TYPE_HASH = keccak256("SetImageHash(bytes32 imageHash)"); - - error LowWeightChainedSignature(bytes _signature, uint256 threshold, uint256 _weight); - error WrongChainedCheckpointOrder(uint256 _current, uint256 _prev); - - /** - * @notice Defined the special token that must be signed to delegate control to a new configuration. - * @param _imageHash The hash of the new configuration. - * @return bytes32 The message hash to be signed. - */ - function _hashSetImageHashStruct(bytes32 _imageHash) internal pure returns (bytes32) { - return LibOptim.fkeccak256(SET_IMAGE_HASH_TYPE_HASH, _imageHash); - } - - /** - * @notice Returns the threshold, weight, root, and checkpoint of a (chained) signature. - * - * @dev This method return the `threshold`, `weight` and `imageHash` of the last signature in the chain. - * Intermediate signatures are validated directly in this method. The `subdigest` is the one of the - * first signature in the chain (since that's the one that is used to validate the message). - * - * @param _digest The digest to recover the signature from. - * @param _signature The signature to recover. - * @return threshold The threshold of the (last) signature. - * @return weight The weight of the (last) signature. - * @return imageHash The image hash of the (last) signature. - * @return subdigest The subdigest of the (first) signature in the chain. - * @return checkpoint The checkpoint of the (last) signature. - */ - function chainedRecover( - bytes32 _digest, - bytes calldata _signature - ) internal view returns ( - uint256 threshold, - uint256 weight, - bytes32 imageHash, - bytes32 subdigest, - uint256 checkpoint - ) { - uint256 rindex = 1; - uint256 sigSize; - - // - // First signature out of the loop - // - - // First uint24 is the size of the signature - (sigSize, rindex) = _signature.readUint24(rindex); - uint256 nrindex = sigSize + rindex; - - ( - threshold, - weight, - imageHash, - subdigest, - checkpoint - ) = signatureRecovery( - _digest, - _signature[rindex:nrindex] - ); - - if (weight < threshold) { - revert LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight); - } - - rindex = nrindex; - - // The following signatures are handled by this loop. - // This is done this way because the first signature does not have a - // checkpoint to be validated against. - while (rindex < _signature.length) { - // First uint24 is the size of the signature - (sigSize, rindex) = _signature.readUint24(rindex); - nrindex = sigSize + rindex; - - uint256 nextCheckpoint; - - ( - threshold, - weight, - imageHash,, - // Do not change the subdigest; - // it should remain that of the first signature. - nextCheckpoint - ) = signatureRecovery( - _hashSetImageHashStruct(imageHash), - _signature[rindex:nrindex] - ); - - // Validate signature - if (weight < threshold) { - revert LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight); - } - - // Checkpoints must be provided in descending order - // since the first signature is the one that is used to validate the message - // and the last signature is the one that is used to validate the current configuration - if (nextCheckpoint >= checkpoint) { - revert WrongChainedCheckpointOrder(nextCheckpoint, checkpoint); - } - - checkpoint = nextCheckpoint; - rindex = nrindex; - } - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol deleted file mode 100644 index c8b64a9aad..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./SequenceBaseSig.sol"; - - -library SequenceDynamicSig { - - /** - * @notice Recover a "dynamically encoded" Sequence signature. - * @dev The Signature is stripped of the first byte, which is the encoding flag. - * - * @param _subdigest The digest of the signature. - * @param _signature The Sequence signature. - * @return threshold The threshold weight required to validate the signature. - * @return weight The weight of the signature. - * @return imageHash The hash of the recovered configuration. - * @return checkpoint The checkpoint of the configuration. - */ - function recover( - bytes32 _subdigest, - bytes calldata _signature - ) internal view returns ( - uint256 threshold, - uint256 weight, - bytes32 imageHash, - uint256 checkpoint - ) { - return SequenceBaseSig.recover(_subdigest, _signature[1:]); - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol deleted file mode 100644 index 4b21bd505a..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -library SequenceNoChainIdSig { - - /** - * @notice Computes a subdigest for a Sequence signature that works on all chains. - * @dev The subdigest is computed by removing the chain ID from the digest (using 0 instead). - * @param _digest The digest of the chain of signatures. - * @return bytes32 The subdigest with no chain ID. - */ - function subdigest(bytes32 _digest) internal view returns (bytes32) { - return keccak256( - abi.encodePacked( - "\x19\x01", - uint256(0), - address(this), - _digest - ) - ); - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol deleted file mode 100644 index 71eb8ae5e6..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -library SubModuleNonce { - // Nonce schema - // - // - space[160]:nonce[96] - // - uint256 internal constant NONCE_BITS = 96; - bytes32 internal constant NONCE_MASK = bytes32(uint256(type(uint96).max)); - - /** - * @notice Decodes a raw nonce - * @dev Schema: space[160]:type[96] - * @param _rawNonce Nonce to be decoded - * @return _space The nonce space of the raw nonce - * @return _nonce The nonce of the raw nonce - */ - function decodeNonce(uint256 _rawNonce) internal pure returns ( - uint256 _space, - uint256 _nonce - ) { - unchecked { - // Decode nonce - _space = _rawNonce >> NONCE_BITS; - _nonce = uint256(bytes32(_rawNonce) & NONCE_MASK); - } - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibBytes.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibBytes.sol deleted file mode 100644 index 3452c8db57..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibBytes.sol +++ /dev/null @@ -1,83 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -/** - * @title Library for reading data from bytes arrays - * @author Agustin Aguilar (aa@horizon.io) - * @notice This library contains functions for reading data from bytes arrays. - * - * @dev These functions do not check if the input index is within the bounds of the data array. - * Reading out of bounds may return dirty values. - */ -library LibBytes { - - /** - * @notice Returns the bytes32 value at the given index in the input data. - * @param data The input data. - * @param index The index of the value to retrieve. - * @return a The bytes32 value at the given index. - */ - function readBytes32( - bytes calldata data, - uint256 index - ) internal pure returns ( - bytes32 a - ) { - assembly { - a := calldataload(add(data.offset, index)) - } - } - - /** - * @notice Returns the uint8 value at the given index in the input data. - * @param data The input data. - * @param index The index of the value to retrieve. - * @return a The uint8 value at the given index. - */ - function readUint8( - bytes calldata data, - uint256 index - ) internal pure returns ( - uint8 a - ) { - assembly { - let word := calldataload(add(index, data.offset)) - a := shr(248, word) - } - } - - /** - * @notice Returns the first uint16 value in the input data. - * @param data The input data. - * @return a The first uint16 value in the input data. - */ - function readFirstUint16( - bytes calldata data - ) internal pure returns ( - uint16 a - ) { - assembly { - let word := calldataload(data.offset) - a := shr(240, word) - } - } - - /** - * @notice Returns the uint32 value at the given index in the input data. - * @param data The input data. - * @param index The index of the value to retrieve. - * @return a The uint32 value at the given index. - */ - function readUint32( - bytes calldata data, - uint256 index - ) internal pure returns ( - uint32 a - ) { - assembly { - let word := calldataload(add(index, data.offset)) - a := shr(224, word) - } - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibBytesPointer.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibBytesPointer.sol deleted file mode 100644 index b731a6cd06..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibBytesPointer.sol +++ /dev/null @@ -1,161 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - - -/** - * @title Library for reading data from bytes arrays with a pointer - * @author Agustin Aguilar (aa@horizon.io) - * @notice This library contains functions for reading data from bytes arrays with a pointer. - * - * @dev These functions do not check if the input index is within the bounds of the data array. - * Reading out of bounds may return dirty values. - */ -library LibBytesPointer { - - /** - * @dev Returns the first uint16 value in the input data and updates the pointer. - * @param _data The input data. - * @return a The first uint16 value. - * @return newPointer The new pointer. - */ - function readFirstUint16( - bytes calldata _data - ) internal pure returns ( - uint16 a, - uint256 newPointer - ) { - assembly { - let word := calldataload(_data.offset) - a := shr(240, word) - newPointer := 2 - } - } - - /** - * @notice Returns the uint8 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint8 value at the given index. - * @return newPointer The new pointer. - */ - function readUint8( - bytes calldata _data, - uint256 _index - ) internal pure returns ( - uint8 a, - uint256 newPointer - ) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := shr(248, word) - newPointer := add(_index, 1) - } - } - - /** - * @notice Returns the uint8 value and the address at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint8 value at the given index. - * @return b The following address value. - * @return newPointer The new pointer. - */ - function readUint8Address( - bytes calldata _data, - uint256 _index - ) internal pure returns ( - uint8 a, - address b, - uint256 newPointer - ) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := shr(248, word) - b := and(shr(88, word), 0xffffffffffffffffffffffffffffffffffffffff) - newPointer := add(_index, 21) - } - } - - /** - * @notice Returns the uint16 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint16 value at the given index. - * @return newPointer The new pointer. - */ - function readUint16( - bytes calldata _data, - uint256 _index - ) internal pure returns ( - uint16 a, - uint256 newPointer - ) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := and(shr(240, word), 0xffff) - newPointer := add(_index, 2) - } - } - - /** - * @notice Returns the uint24 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint24 value at the given index. - * @return newPointer The new pointer. - */ - function readUint24( - bytes calldata _data, - uint256 _index - ) internal pure returns ( - uint24 a, - uint256 newPointer - ) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := and(shr(232, word), 0xffffff) - newPointer := add(_index, 3) - } - } - - /** - * @notice Returns the uint64 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint64 value at the given index. - * @return newPointer The new pointer. - */ - function readUint64( - bytes calldata _data, - uint256 _index - ) internal pure returns ( - uint64 a, - uint256 newPointer - ) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := and(shr(192, word), 0xffffffffffffffff) - newPointer := add(_index, 8) - } - } - - /** - * @notice Returns the bytes32 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _pointer The index of the value to retrieve. - * @return a The bytes32 value at the given index. - * @return newPointer The new pointer. - */ - function readBytes32( - bytes calldata _data, - uint256 _pointer - ) internal pure returns ( - bytes32 a, - uint256 newPointer - ) { - assembly { - a := calldataload(add(_pointer, _data.offset)) - newPointer := add(_pointer, 32) - } - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibOptim.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibOptim.sol deleted file mode 100644 index fb5cf0dcd8..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/LibOptim.sol +++ /dev/null @@ -1,102 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -/** - * @title Library for optimized EVM operations - * @author Agustin Aguilar (aa@horizon.io) - * @notice This library contains functions for optimizing certain EVM operations. - */ -library LibOptim { - - /** - * @notice Computes the keccak256 hash of two 32-byte inputs. - * @dev It uses only scratch memory space. - * @param _a The first 32 bytes of the hash. - * @param _b The second 32 bytes of the hash. - * @return c The keccak256 hash of the two 32-byte inputs. - */ - function fkeccak256( - bytes32 _a, - bytes32 _b - ) internal pure returns (bytes32 c) { - assembly { - mstore(0, _a) - mstore(32, _b) - c := keccak256(0, 64) - } - } - - /** - * @notice Returns the return data from the last call. - * @return r The return data from the last call. - */ - function returnData() internal pure returns (bytes memory r) { - assembly { - let size := returndatasize() - r := mload(0x40) - let start := add(r, 32) - mstore(0x40, add(start, size)) - mstore(r, size) - returndatacopy(start, 0, size) - } - } - - /** - * @notice Calls another contract with the given parameters. - * @dev This method doesn't increase the memory pointer. - * @param _to The address of the contract to call. - * @param _val The value to send to the contract. - * @param _gas The amount of gas to provide for the call. - * @param _data The data to send to the contract. - * @return r The success status of the call. - */ - function call( - address _to, - uint256 _val, - uint256 _gas, - bytes calldata _data - ) internal returns (bool r) { - assembly { - let tmp := mload(0x40) - calldatacopy(tmp, _data.offset, _data.length) - - r := call( - _gas, - _to, - _val, - tmp, - _data.length, - 0, - 0 - ) - } - } - - /** - * @notice Calls another contract with the given parameters, using delegatecall. - * @dev This method doesn't increase the memory pointer. - * @param _to The address of the contract to call. - * @param _gas The amount of gas to provide for the call. - * @param _data The data to send to the contract. - * @return r The success status of the call. - */ - function delegatecall( - address _to, - uint256 _gas, - bytes calldata _data - ) internal returns (bool r) { - assembly { - let tmp := mload(0x40) - calldatacopy(tmp, _data.offset, _data.length) - - r := delegatecall( - _gas, - _to, - tmp, - _data.length, - 0, - 0 - ) - } - } -} diff --git a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/SignatureValidator.sol b/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/SignatureValidator.sol deleted file mode 100644 index 23433a4e14..0000000000 --- a/packages/wallet-contracts/contracts/GuestModule-wallet/sources/contracts/utils/SignatureValidator.sol +++ /dev/null @@ -1,137 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../interfaces/IERC1271Wallet.sol"; - -import "./LibBytes.sol"; - -/** - * @dev Contains logic for signature validation. - * Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md) - * Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/ - */ -library SignatureValidator { - // Errors - error InvalidSignatureLength(bytes _signature); - error EmptySignature(); - error InvalidSValue(bytes _signature, bytes32 _s); - error InvalidVValue(bytes _signature, uint256 _v); - error UnsupportedSignatureType(bytes _signature, uint256 _type, bool _recoverMode); - error SignerIsAddress0(bytes _signature); - - using LibBytes for bytes; - - /***********************************| - | Variables | - |__________________________________*/ - - // bytes4(keccak256("isValidSignature(bytes,bytes)")) - bytes4 constant internal ERC1271_MAGICVALUE = 0x20c13b0b; - - // bytes4(keccak256("isValidSignature(bytes32,bytes)")) - bytes4 constant internal ERC1271_MAGICVALUE_BYTES32 = 0x1626ba7e; - - // Allowed signature types. - uint256 private constant SIG_TYPE_EIP712 = 1; - uint256 private constant SIG_TYPE_ETH_SIGN = 2; - uint256 private constant SIG_TYPE_WALLET_BYTES32 = 3; - - /***********************************| - | Signature Functions | - |__________________________________*/ - - /** - * @notice Recover the signer of hash, assuming it's an EOA account - * @dev Only for SignatureType.EIP712 and SignatureType.EthSign signatures - * @param _hash Hash that was signed - * encoded as (bytes32 r, bytes32 s, uint8 v, ... , SignatureType sigType) - */ - function recoverSigner( - bytes32 _hash, - bytes calldata _signature - ) internal pure returns (address signer) { - if (_signature.length != 66) revert InvalidSignatureLength(_signature); - uint256 signatureType = _signature.readUint8(_signature.length - 1); - - // Variables are not scoped in Solidity. - uint8 v = _signature.readUint8(64); - bytes32 r = _signature.readBytes32(0); - bytes32 s = _signature.readBytes32(32); - - // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature - // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines - // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most - // signatures from current libraries generate a unique signature with an s-value in the lower half order. - // - // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value - // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or - // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept - // these malleable signatures as well. - // - // Source OpenZeppelin - // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/cryptography/ECDSA.sol - - if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { - revert InvalidSValue(_signature, s); - } - - if (v != 27 && v != 28) { - revert InvalidVValue(_signature, v); - } - - // Signature using EIP712 - if (signatureType == SIG_TYPE_EIP712) { - signer = ecrecover(_hash, v, r, s); - - // Signed using web3.eth_sign() or Ethers wallet.signMessage() - } else if (signatureType == SIG_TYPE_ETH_SIGN) { - signer = ecrecover( - keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash)), - v, - r, - s - ); - - } else { - // We cannot recover the signer for any other signature type. - revert UnsupportedSignatureType(_signature, signatureType, true); - } - - // Prevent signer from being 0x0 - if (signer == address(0x0)) revert SignerIsAddress0(_signature); - - return signer; - } - - /** - * @notice Returns true if the provided signature is valid for the given signer. - * @dev Supports SignatureType.EIP712, SignatureType.EthSign, and ERC1271 signatures - * @param _hash Hash that was signed - * @param _signer Address of the signer candidate - * @param _signature Signature byte array - */ - function isValidSignature( - bytes32 _hash, - address _signer, - bytes calldata _signature - ) internal view returns (bool valid) { - if (_signature.length == 0) { - revert EmptySignature(); - } - - uint256 signatureType = uint8(_signature[_signature.length - 1]); - if (signatureType == SIG_TYPE_EIP712 || signatureType == SIG_TYPE_ETH_SIGN) { - // Recover signer and compare with provided - valid = recoverSigner(_hash, _signature) == _signer; - - } else if (signatureType == SIG_TYPE_WALLET_BYTES32) { - // Remove signature type before calling ERC1271, restore after call - valid = ERC1271_MAGICVALUE_BYTES32 == IERC1271Wallet(_signer).isValidSignature(_hash, _signature[0:_signature.length - 1]); - - } else { - // We cannot validate any other signature type. - // We revert because we can say nothing about its validity. - revert UnsupportedSignatureType(_signature, signatureType, false); - } - } -} diff --git a/packages/wallet-contracts/contracts/Wallet.sol b/packages/wallet-contracts/contracts/Wallet.sol deleted file mode 100644 index aaeb5e61ed..0000000000 --- a/packages/wallet-contracts/contracts/Wallet.sol +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -/** - * Minimal upgradeable proxy implementation, delegates all calls to the address - * defined by the storage slot matching the wallet address. - * - * Inspired by EIP-1167 Implementation (https://eips.ethereum.org/EIPS/eip-1167) - * - * deployed code: - * - * 0x00 0x36 0x36 CALLDATASIZE cds - * 0x01 0x3d 0x3d RETURNDATASIZE 0 cds - * 0x02 0x3d 0x3d RETURNDATASIZE 0 0 cds - * 0x03 0x37 0x37 CALLDATACOPY - * 0x04 0x3d 0x3d RETURNDATASIZE 0 - * 0x05 0x3d 0x3d RETURNDATASIZE 0 0 - * 0x06 0x3d 0x3d RETURNDATASIZE 0 0 0 - * 0x07 0x36 0x36 CALLDATASIZE cds 0 0 0 - * 0x08 0x3d 0x3d RETURNDATASIZE 0 cds 0 0 0 - * 0x09 0x30 0x30 ADDRESS addr 0 cds 0 0 0 - * 0x0A 0x54 0x54 SLOAD imp 0 cds 0 0 0 - * 0x0B 0x5a 0x5a GAS gas imp 0 cds 0 0 0 - * 0x0C 0xf4 0xf4 DELEGATECALL suc 0 - * 0x0D 0x3d 0x3d RETURNDATASIZE rds suc 0 - * 0x0E 0x82 0x82 DUP3 0 rds suc 0 - * 0x0F 0x80 0x80 DUP1 0 0 rds suc 0 - * 0x10 0x3e 0x3e RETURNDATACOPY suc 0 - * 0x11 0x90 0x90 SWAP1 0 suc - * 0x12 0x3d 0x3d RETURNDATASIZE rds 0 suc - * 0x13 0x91 0x91 SWAP2 suc 0 rds - * 0x14 0x60 0x18 0x6018 PUSH1 0x18 suc 0 rds - * /-- 0x16 0x57 0x57 JUMPI 0 rds - * | 0x17 0xfd 0xfd REVERT - * \-> 0x18 0x5b 0x5b JUMPDEST 0 rds - * 0x19 0xf3 0xf3 RETURN - * - * flat deployed code: 0x363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3 - * - * deploy function: - * - * 0x00 0x60 0x3a 0x603a PUSH1 0x3a - * 0x02 0x60 0x0e 0x600e PUSH1 0x0e 0x3a - * 0x04 0x3d 0x3d RETURNDATASIZE 0 0x0e 0x3a - * 0x05 0x39 0x39 CODECOPY - * 0x06 0x60 0x1a 0x601a PUSH1 0x1a - * 0x08 0x80 0x80 DUP1 0x1a 0x1a - * 0x09 0x51 0x51 MLOAD imp 0x1a - * 0x0A 0x30 0x30 ADDRESS addr imp 0x1a - * 0x0B 0x55 0x55 SSTORE 0x1a - * 0x0C 0x3d 0x3d RETURNDATASIZE 0 0x1a - * 0x0D 0xf3 0xf3 RETURN - * [...deployed code] - * - * flat deploy function: 0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3 - */ -library Wallet { - bytes internal constant creationCode = - hex"603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3"; -} diff --git a/packages/wallet-contracts/contracts/hooks/WalletProxyHook.sol b/packages/wallet-contracts/contracts/hooks/WalletProxyHook.sol deleted file mode 100644 index ae1ad4d833..0000000000 --- a/packages/wallet-contracts/contracts/hooks/WalletProxyHook.sol +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import {IWalletProxy} from "./interfaces/IWalletProxy.sol"; -import {Implementation} from "../modules/commons/Implementation.sol"; - -contract WalletProxyHook is IWalletProxy, Implementation { - /// @inheritdoc IWalletProxy - function PROXY_getImplementation() public view returns (address) { - return _getImplementation(); - } -} diff --git a/packages/wallet-contracts/contracts/hooks/interfaces/IWalletProxy.sol b/packages/wallet-contracts/contracts/hooks/interfaces/IWalletProxy.sol deleted file mode 100644 index 385de7cf06..0000000000 --- a/packages/wallet-contracts/contracts/hooks/interfaces/IWalletProxy.sol +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright Immutable Pty Ltd 2018 - 2023 -// SPDX-License-Identifier: Apache 2.0 -// https://github.com/immutable/contracts/blob/a04f7ecb8a79ad8f1b67f73f770e0545deb6cba2/contracts/allowlist/IWalletProxy.sol -pragma solidity 0.8.18; - -// Interface to retrieve the implemention stored inside the Proxy contract -/// Interface for Passport Wallet's proxy contract. -interface IWalletProxy { - // Returns the current implementation address used by the proxy contract - // solhint-disable-next-line func-name-mixedcase - function PROXY_getImplementation() external view returns (address); -} diff --git a/packages/wallet-contracts/contracts/interfaces/IERC1271Wallet.sol b/packages/wallet-contracts/contracts/interfaces/IERC1271Wallet.sol deleted file mode 100644 index 169d17b43e..0000000000 --- a/packages/wallet-contracts/contracts/interfaces/IERC1271Wallet.sol +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IERC1271Wallet { - /** - * @notice Verifies whether the provided signature is valid with respect to the provided data - * @dev MUST return the correct magic value if the signature provided is valid for the provided data - * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)") - * > This function MAY modify Ethereum's state - * @param _data Arbitrary length data signed on the behalf of address(this) - * @param _signature Signature byte array associated with _data - * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise - */ - function isValidSignature(bytes calldata _data, bytes calldata _signature) external view returns (bytes4 magicValue); - - /** - * @notice Verifies whether the provided signature is valid with respect to the provided hash - * @dev MUST return the correct magic value if the signature provided is valid for the provided hash - * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)") - * > This function MAY modify Ethereum's state - * @param _hash keccak256 hash that was signed - * @param _signature Signature byte array associated with _data - * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise - */ - function isValidSignature(bytes32 _hash, bytes calldata _signature) external view returns (bytes4 magicValue); -} diff --git a/packages/wallet-contracts/contracts/interfaces/receivers/IERC1155Receiver.sol b/packages/wallet-contracts/contracts/interfaces/receivers/IERC1155Receiver.sol deleted file mode 100644 index ae7a8c03f7..0000000000 --- a/packages/wallet-contracts/contracts/interfaces/receivers/IERC1155Receiver.sol +++ /dev/null @@ -1,9 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IERC1155Receiver { - function onERC1155Received(address, address, uint256, uint256, bytes calldata) external returns (bytes4); - function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) - external - returns (bytes4); -} diff --git a/packages/wallet-contracts/contracts/interfaces/receivers/IERC223Receiver.sol b/packages/wallet-contracts/contracts/interfaces/receivers/IERC223Receiver.sol deleted file mode 100644 index 2cbbc218a3..0000000000 --- a/packages/wallet-contracts/contracts/interfaces/receivers/IERC223Receiver.sol +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IERC223Receiver { - function tokenFallback(address, uint256, bytes calldata) external; -} diff --git a/packages/wallet-contracts/contracts/interfaces/receivers/IERC721Receiver.sol b/packages/wallet-contracts/contracts/interfaces/receivers/IERC721Receiver.sol deleted file mode 100644 index cfca58422a..0000000000 --- a/packages/wallet-contracts/contracts/interfaces/receivers/IERC721Receiver.sol +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IERC721Receiver { - function onERC721Received(address, address, uint256, bytes calldata) external returns (bytes4); -} diff --git a/packages/wallet-contracts/contracts/interfaces/receivers/IERC777Receiver.sol b/packages/wallet-contracts/contracts/interfaces/receivers/IERC777Receiver.sol deleted file mode 100644 index 054c93d5ab..0000000000 --- a/packages/wallet-contracts/contracts/interfaces/receivers/IERC777Receiver.sol +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IERC777Receiver { - function tokensReceived(address, address, address, uint256, bytes calldata, bytes calldata) external; -} diff --git a/packages/wallet-contracts/contracts/interfaces/tokens/IERC1155.sol b/packages/wallet-contracts/contracts/interfaces/tokens/IERC1155.sol deleted file mode 100644 index 3e4a428e66..0000000000 --- a/packages/wallet-contracts/contracts/interfaces/tokens/IERC1155.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.18; - -interface IERC1155 { - function balanceOf(address account, uint256 id) external view returns (uint256); - function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) - external - view - returns (uint256[] memory); - function setApprovalForAll(address operator, bool approved) external; - function isApprovedForAll(address account, address operator) external view returns (bool); - function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external; - function safeBatchTransferFrom( - address from, - address to, - uint256[] calldata ids, - uint256[] calldata amounts, - bytes calldata data - ) external; - - event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); - event TransferBatch( - address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values - ); - event ApprovalForAll(address indexed account, address indexed operator, bool approved); - event URI(string value, uint256 indexed id); -} diff --git a/packages/wallet-contracts/contracts/interfaces/tokens/IERC20.sol b/packages/wallet-contracts/contracts/interfaces/tokens/IERC20.sol deleted file mode 100644 index 5dddb36be8..0000000000 --- a/packages/wallet-contracts/contracts/interfaces/tokens/IERC20.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.18; - -interface IERC20 { - function totalSupply() external view returns (uint256); - function balanceOf(address account) external view returns (uint256); - function transfer(address recipient, uint256 amount) external returns (bool); - function allowance(address owner, address spender) external view returns (uint256); - function approve(address spender, uint256 amount) external returns (bool); - function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); - - event Transfer(address indexed from, address indexed to, uint256 value); - event Approval(address indexed owner, address indexed spender, uint256 value); -} diff --git a/packages/wallet-contracts/contracts/interfaces/tokens/IERC721.sol b/packages/wallet-contracts/contracts/interfaces/tokens/IERC721.sol deleted file mode 100644 index dbeb299df6..0000000000 --- a/packages/wallet-contracts/contracts/interfaces/tokens/IERC721.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.18; - -interface IERC721 { - function balanceOf(address owner) external view returns (uint256 balance); - function ownerOf(uint256 tokenId) external view returns (address owner); - function safeTransferFrom(address from, address to, uint256 tokenId) external; - function transferFrom(address from, address to, uint256 tokenId) external; - function approve(address to, uint256 tokenId) external; - function getApproved(uint256 tokenId) external view returns (address operator); - function setApprovalForAll(address operator, bool approved) external; - function isApprovedForAll(address owner, address operator) external view returns (bool); - function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; - - event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); - event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); - event ApprovalForAll(address indexed owner, address indexed operator, bool approved); -} diff --git a/packages/wallet-contracts/contracts/mocks/AlwaysRevertMock.sol b/packages/wallet-contracts/contracts/mocks/AlwaysRevertMock.sol deleted file mode 100644 index 8cfcbecf2b..0000000000 --- a/packages/wallet-contracts/contracts/mocks/AlwaysRevertMock.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract AlwaysRevertMock { - fallback() external payable { - revert("AlwaysRevertMock#fallback: ALWAYS_REVERT"); - } -} diff --git a/packages/wallet-contracts/contracts/mocks/CallReceiverMock.sol b/packages/wallet-contracts/contracts/mocks/CallReceiverMock.sol deleted file mode 100644 index dcfec945e6..0000000000 --- a/packages/wallet-contracts/contracts/mocks/CallReceiverMock.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract CallReceiverMock { - uint256 public lastValA; - bytes public lastValB; - - bool revertFlag; - - constructor() payable {} - - function setRevertFlag(bool _revertFlag) external { - revertFlag = _revertFlag; - } - - function testCall(uint256 _valA, bytes calldata _valB) external payable { - require(!revertFlag, "CallReceiverMock#testCall: REVERT_FLAG"); - - lastValA = _valA; - lastValB = _valB; - } -} diff --git a/packages/wallet-contracts/contracts/mocks/DelegateCallMock.sol b/packages/wallet-contracts/contracts/mocks/DelegateCallMock.sol deleted file mode 100644 index f610ab8e99..0000000000 --- a/packages/wallet-contracts/contracts/mocks/DelegateCallMock.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract DelegateCallMock { - event Readed(uint256 _val); - - uint256 private constant REVERT_SLOT = uint256(keccak256("revert-flag")); - - mapping(uint256 => uint256) private store; - - function setRevertFlag(bool _revertFlag) external { - store[REVERT_SLOT] = _revertFlag ? 1 : 0; - } - - function write(uint256 _key, uint256 _val) external { - require(store[REVERT_SLOT] == 0, "DelegateCallMock#write: REVERT_FLAG"); - store[_key] = _val; - } - - function read(uint256 _key) external { - emit Readed(store[_key]); - } -} diff --git a/packages/wallet-contracts/contracts/mocks/ERC1155Mock.sol b/packages/wallet-contracts/contracts/mocks/ERC1155Mock.sol deleted file mode 100644 index 8122a14e1f..0000000000 --- a/packages/wallet-contracts/contracts/mocks/ERC1155Mock.sol +++ /dev/null @@ -1,63 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.18; - -contract ERC1155Mock { - string public name = "Mock ERC1155 Token"; - string public symbol = "MERC1155"; - address public owner; - - mapping(uint256 => mapping(address => uint256)) public balances; - mapping(address => mapping(address => bool)) public operatorApprovals; - - constructor() { - owner = msg.sender; - } - - modifier onlyOwner() { - require(msg.sender == owner, "Only owner can mint"); - _; - } - - function balanceOf(address account, uint256 id) public view returns (uint256) { - return balances[id][account]; - } - - function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view returns (uint256[] memory) { - require(accounts.length == ids.length, "Accounts and ids length mismatch"); - - uint256[] memory batchBalances = new uint256[](accounts.length); - for (uint256 i = 0; i < accounts.length; ++i) { - batchBalances[i] = balances[ids[i]][accounts[i]]; - } - return batchBalances; - } - - function mint(address to, uint256 id, uint256 amount) public onlyOwner { - require(to != address(0), "Cannot mint to zero address"); - - balances[id][to] += amount; - emit TransferSingle(msg.sender, address(0), to, id, amount); - } - - function safeTransferFrom(address from, address to, uint256 id, uint256 amount) public { - require(from == msg.sender || isApprovedForAll(from, msg.sender), "Not approved to transfer"); - - require(balances[id][from] >= amount, "Insufficient balance"); - balances[id][from] -= amount; - balances[id][to] += amount; - - emit TransferSingle(msg.sender, from, to, id, amount); - } - - function setApprovalForAll(address operator, bool approved) public { - operatorApprovals[msg.sender][operator] = approved; - emit ApprovalForAll(msg.sender, operator, approved); - } - - function isApprovedForAll(address account, address operator) public view returns (bool) { - return operatorApprovals[account][operator]; - } - - event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); - event ApprovalForAll(address indexed account, address indexed operator, bool approved); -} diff --git a/packages/wallet-contracts/contracts/mocks/ERC165CheckerMock.sol b/packages/wallet-contracts/contracts/mocks/ERC165CheckerMock.sol deleted file mode 100644 index f233001ffe..0000000000 --- a/packages/wallet-contracts/contracts/mocks/ERC165CheckerMock.sol +++ /dev/null @@ -1,53 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract ERC165CheckerMock { - bytes4 constant InvalidID = 0xffffffff; - bytes4 constant ERC165ID = 0x01ffc9a7; - - function doesContractImplementInterface(address _contract, bytes4 _interfaceId) external view returns (bool) { - uint256 success; - uint256 result; - - (success, result) = noThrowCall(_contract, ERC165ID); - if (success == 0 || result == 0) { - return false; - } - - (success, result) = noThrowCall(_contract, InvalidID); - if (success == 0 || result != 0) { - return false; - } - - (success, result) = noThrowCall(_contract, _interfaceId); - if (success == 1 && result == 1) { - return true; - } - return false; - } - - function noThrowCall(address _contract, bytes4 _interfaceId) - private - view - returns (uint256 success, uint256 result) - { - bytes4 erc165ID = ERC165ID; - - assembly { - let x := mload(0x40) // Find empty storage location using "free memory pointer" - mstore(x, erc165ID) // Place signature at beginning of empty storage - mstore(add(x, 0x04), _interfaceId) // Place first argument directly next to signature - - success := staticcall( - 30000, // 30k gas - _contract, // To addr - x, // Inputs are stored at location x - 0x24, // Inputs are 36 bytes long - x, // Store output over input (saves space) - 0x20 // Outputs are 32 bytes long - ) - - result := mload(x) // Load the result - } - } -} diff --git a/packages/wallet-contracts/contracts/mocks/ERC20Mock.sol b/packages/wallet-contracts/contracts/mocks/ERC20Mock.sol deleted file mode 100644 index f2c7125a0f..0000000000 --- a/packages/wallet-contracts/contracts/mocks/ERC20Mock.sol +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.18; - -contract ERC20Mock { - string public name = "Mock ERC20 Token"; - string public symbol = "MERC20"; - uint8 public decimals = 18; - uint256 public totalSupply; - mapping(address => uint256) public balances; - mapping(address => mapping(address => uint256)) public allowances; - - constructor(uint256 initialSupply) { - totalSupply = initialSupply; - balances[msg.sender] = initialSupply; - } - - function balanceOf(address account) public view returns (uint256) { - return balances[account]; - } - - function transfer(address recipient, uint256 amount) public returns (bool) { - require(balances[msg.sender] >= amount, "Insufficient balance"); - balances[msg.sender] -= amount; - balances[recipient] += amount; - emit Transfer(msg.sender, recipient, amount); - return true; - } - - function allowance(address owner, address spender) public view returns (uint256) { - return allowances[owner][spender]; - } - - function approve(address spender, uint256 amount) public returns (bool) { - allowances[msg.sender][spender] = amount; - emit Approval(msg.sender, spender, amount); - return true; - } - - function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { - require(balances[sender] >= amount, "Insufficient balance"); - require(allowances[sender][msg.sender] >= amount, "Allowance exceeded"); - balances[sender] -= amount; - balances[recipient] += amount; - allowances[sender][msg.sender] -= amount; - emit Transfer(sender, recipient, amount); - return true; - } - - event Transfer(address indexed from, address indexed to, uint256 value); - event Approval(address indexed owner, address indexed spender, uint256 value); -} diff --git a/packages/wallet-contracts/contracts/mocks/ERC721Mock.sol b/packages/wallet-contracts/contracts/mocks/ERC721Mock.sol deleted file mode 100644 index 1ca70952d0..0000000000 --- a/packages/wallet-contracts/contracts/mocks/ERC721Mock.sol +++ /dev/null @@ -1,86 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.18; - -contract ERC721Mock { - string public name = "Mock ERC721 Token"; - string public symbol = "MERC721"; - uint256 public totalSupply; - address public owner; - - mapping(address => uint256) public balances; - mapping(uint256 => address) public owners; - mapping(address => mapping(address => bool)) public operatorApprovals; - mapping(uint256 => address) public tokenApprovals; - - constructor() { - owner = msg.sender; - } - - modifier onlyOwner() { - require(msg.sender == owner, "Only owner can mint"); - _; - } - - function balanceOf(address _owner) public view returns (uint256) { - return balances[_owner]; - } - - function ownerOf(uint256 tokenId) public view returns (address) { - address tokenOwner = owners[tokenId]; - require(tokenOwner != address(0), "Token does not exist"); - return tokenOwner; - } - - function mint(address to, uint256 tokenId) public onlyOwner { - require(to != address(0), "Cannot mint to zero address"); - require(owners[tokenId] == address(0), "Token already minted"); - - owners[tokenId] = to; - balances[to] += 1; - totalSupply += 1; - - emit Transfer(address(0), to, tokenId); - } - - function transferFrom(address from, address to, uint256 tokenId) public { - require(ownerOf(tokenId) == from, "Not the owner of the token"); - require(to != address(0), "Cannot transfer to zero address"); - - require( - msg.sender == from || getApproved(tokenId) == msg.sender || isApprovedForAll(from, msg.sender), - "Not approved to transfer" - ); - - balances[from] -= 1; - balances[to] += 1; - owners[tokenId] = to; - - emit Transfer(from, to, tokenId); - } - - function approve(address to, uint256 tokenId) public { - address tokenOwner = ownerOf(tokenId); - require(to != tokenOwner, "Cannot approve current owner"); - require(msg.sender == tokenOwner || isApprovedForAll(tokenOwner, msg.sender), "Not approved"); - - tokenApprovals[tokenId] = to; - emit Approval(tokenOwner, to, tokenId); - } - - function getApproved(uint256 tokenId) public view returns (address) { - return tokenApprovals[tokenId]; - } - - function setApprovalForAll(address operator, bool approved) public { - operatorApprovals[msg.sender][operator] = approved; - emit ApprovalForAll(msg.sender, operator, approved); - } - - function isApprovedForAll(address _owner, address operator) public view returns (bool) { - return operatorApprovals[_owner][operator]; - } - - event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); - event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); - event ApprovalForAll(address indexed owner, address indexed operator, bool approved); -} diff --git a/packages/wallet-contracts/contracts/mocks/GasBurnerMock.sol b/packages/wallet-contracts/contracts/mocks/GasBurnerMock.sol deleted file mode 100644 index 9407fdc095..0000000000 --- a/packages/wallet-contracts/contracts/mocks/GasBurnerMock.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract GasBurnerMock { - event ProvidedGas(uint256 _val); - - function burnGas(uint256 _burn) external { - emit ProvidedGas(gasleft()); - - bytes32 stub; - uint256 initial = gasleft(); - - while (initial - gasleft() < _burn) { - stub = keccak256(abi.encode(stub)); - } - } -} diff --git a/packages/wallet-contracts/contracts/mocks/HookCallerMock.sol b/packages/wallet-contracts/contracts/mocks/HookCallerMock.sol deleted file mode 100644 index c7befffd75..0000000000 --- a/packages/wallet-contracts/contracts/mocks/HookCallerMock.sol +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../interfaces/receivers/IERC1155Receiver.sol"; -import "../interfaces/receivers/IERC721Receiver.sol"; -import "../interfaces/receivers/IERC223Receiver.sol"; - -import "../interfaces/IERC1271Wallet.sol"; - -contract HookCallerMock { - function callERC1155Received(address _addr) external { - bytes4 result = IERC1155Receiver(_addr).onERC1155Received(address(this), msg.sender, 1, 2, msg.data); - - require(result == 0xf23a6e61, "HookCallerMock#callERC1155Received: INVALID_RETURN"); - } - - function callERC1155BatchReceived(address _addr) external { - uint256[] memory ids = new uint256[](3); - ids[0] = 1; - ids[1] = 2; - ids[2] = 3; - - uint256[] memory values = new uint256[](3); - values[0] = 200; - values[1] = 300; - values[2] = 400; - - bytes4 result = IERC1155Receiver(_addr).onERC1155BatchReceived(address(this), msg.sender, ids, values, msg.data); - - require(result == 0xbc197c81, "HookCallerMock#callERC1155BatchReceived: INVALID_RETURN"); - } - - function callERC721Received(address _addr) external { - bytes4 result = IERC721Receiver(_addr).onERC721Received(address(this), msg.sender, 1, msg.data); - - require(result == 0x150b7a02, "HookCallerMock#callERC721Received: INVALID_RETURN"); - } - - function callERC223Received(address _addr) external { - IERC223Receiver(_addr).tokenFallback(msg.sender, 1, msg.data); - } - - function callERC1271isValidSignatureData(address _addr, bytes calldata _data, bytes calldata _signature) - external - view - { - bytes4 result = IERC1271Wallet(_addr).isValidSignature(_data, _signature); - require(result == 0x20c13b0b, "HookCallerMock#callERC1271isValidSignatureData: INVALID_RETURN"); - } - - function callERC1271isValidSignatureHash(address _addr, bytes32 _hash, bytes calldata _signature) external view { - bytes4 result = IERC1271Wallet(_addr).isValidSignature(_hash, _signature); - require(result == 0x1626ba7e, "HookCallerMock#callERC1271isValidSignatureHash: INVALID_RETURN"); - } -} diff --git a/packages/wallet-contracts/contracts/mocks/HookMock.sol b/packages/wallet-contracts/contracts/mocks/HookMock.sol deleted file mode 100644 index 3d77b8440f..0000000000 --- a/packages/wallet-contracts/contracts/mocks/HookMock.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract HookMock { - function onHookMockCall(uint256 _num) external pure returns (uint256) { - return _num * 2; - } -} diff --git a/packages/wallet-contracts/contracts/mocks/LibBytesImpl.sol b/packages/wallet-contracts/contracts/mocks/LibBytesImpl.sol deleted file mode 100644 index cd676602f9..0000000000 --- a/packages/wallet-contracts/contracts/mocks/LibBytesImpl.sol +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../utils/LibBytes.sol"; - -contract LibBytesImpl { - using LibBytes for bytes; - - function readBytes32(bytes calldata data, uint256 index) external pure returns (bytes32 a) { - return LibBytes.readBytes32(data, index); - } - - function readUint8(bytes calldata data, uint256 index) external pure returns (uint8 a) { - return LibBytes.readUint8(data, index); - } - - function readUint32(bytes calldata data, uint256 index) external pure returns (uint32 a) { - return LibBytes.readUint32(data, index); - } -} diff --git a/packages/wallet-contracts/contracts/mocks/LibBytesPointerImpl.sol b/packages/wallet-contracts/contracts/mocks/LibBytesPointerImpl.sol deleted file mode 100644 index 583b388397..0000000000 --- a/packages/wallet-contracts/contracts/mocks/LibBytesPointerImpl.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../utils/LibBytesPointer.sol"; - -contract LibBytesPointerImpl { - using LibBytesPointer for bytes; - - function readFirstUint16(bytes calldata data) external pure returns (uint16 a, uint256 newPointer) { - return LibBytesPointer.readFirstUint16(data); - } - - function readUint16(bytes calldata data, uint256 index) external pure returns (uint16 a, uint256 newPointer) { - return LibBytesPointer.readUint16(data, index); - } - - function readUint24(bytes calldata data, uint256 index) external pure returns (uint24 a, uint256 newPointer) { - return LibBytesPointer.readUint24(data, index); - } - - function readUint64(bytes calldata data, uint256 index) external pure returns (uint64 a, uint256 newPointer) { - return LibBytesPointer.readUint64(data, index); - } -} diff --git a/packages/wallet-contracts/contracts/mocks/LibStringImp.sol b/packages/wallet-contracts/contracts/mocks/LibStringImp.sol deleted file mode 100644 index 54db366bea..0000000000 --- a/packages/wallet-contracts/contracts/mocks/LibStringImp.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../utils/LibString.sol"; - -contract LibStringImp { - using LibString for string; - - function prefixBase32(string calldata data) external pure returns (string memory) { - return LibString.prefixBase32(data); - } - - function prefixHexadecimal(string calldata data) external pure returns (string memory) { - return LibString.prefixHexadecimal(data); - } - - function bytesToBase32(bytes calldata data) external pure returns (string memory) { - return LibString.bytesToBase32(data); - } - - function bytesToHexadecimal(bytes calldata data) external pure returns (string memory) { - return LibString.bytesToHexadecimal(data); - } -} diff --git a/packages/wallet-contracts/contracts/mocks/ModuleMock.sol b/packages/wallet-contracts/contracts/mocks/ModuleMock.sol deleted file mode 100644 index 5032d31ecf..0000000000 --- a/packages/wallet-contracts/contracts/mocks/ModuleMock.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract ModuleMock { - event Pong(); - - function ping() external { - emit Pong(); - } -} diff --git a/packages/wallet-contracts/contracts/modules/GuestModule.sol b/packages/wallet-contracts/contracts/modules/GuestModule.sol deleted file mode 100644 index 924fa359e5..0000000000 --- a/packages/wallet-contracts/contracts/modules/GuestModule.sol +++ /dev/null @@ -1,103 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../utils/LibOptim.sol"; - -import "./commons/submodules/auth/SequenceBaseSig.sol"; - -import "./commons/ModuleAuth.sol"; -import "./commons/ModuleCalls.sol"; -import "./commons/ModuleCreator.sol"; - -/** - * GuestModule implements a Sequence wallet without signatures, nonce or replay protection. - * executing transactions using this wallet is not an authenticated process, and can be done by any address. - * - * @notice This contract is completely public with no security, designed to execute pre-signed transactions - * and use Sequence tools without using the wallets. - */ -contract GuestModule is ModuleAuth, ModuleCalls, ModuleCreator { - error DelegateCallNotAllowed(uint256 _index); - error NotSupported(); - - /** - * @notice Allow any caller to execute an action - * @param _txs Transactions to process - */ - function execute(Transaction[] calldata _txs, uint256, bytes calldata) public override { - // Hash transaction bundle - bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode("guest:", _txs))); - - // Execute the transactions - _executeGuest(txHash, _txs); - } - - /** - * @notice Allow any caller to execute an action - * @param _txs Transactions to process - */ - function selfExecute(Transaction[] calldata _txs) public override { - // Hash transaction bundle - bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode("self:", _txs))); - - // Execute the transactions - _executeGuest(txHash, _txs); - } - - /** - * @notice Executes a list of transactions - * @param _txHash Hash of the batch of transactions - * @param _txs Transactions to execute - */ - function _executeGuest(bytes32 _txHash, Transaction[] calldata _txs) private { - // Execute transaction - uint256 size = _txs.length; - for (uint256 i = 0; i < size; i++) { - Transaction calldata transaction = _txs[i]; - - if (transaction.delegateCall) revert DelegateCallNotAllowed(i); - - uint256 gasLimit = transaction.gasLimit; - if (gasleft() < gasLimit) revert NotEnoughGas(i, gasLimit, gasleft()); - - bool success = LibOptim.call( - transaction.target, transaction.value, gasLimit == 0 ? gasleft() : gasLimit, transaction.data - ); - - if (success) { - emit TxExecuted(_txHash, i); - } else { - _revertBytes(transaction.revertOnError, _txHash, i, LibOptim.returnData()); - } - } - } - - /** - * @notice Validates any signature image, because the wallet is public and has no owner. - * @return true, all signatures are valid. - */ - function _isValidImage(bytes32) internal pure override returns (bool) { - return true; - } - - /** - * Not supported. - */ - function _updateImageHash(bytes32) internal virtual override { - revert NotSupported(); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) - public - pure - override(ModuleAuth, ModuleCalls, ModuleCreator) - returns (bool) - { - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/MainModule.sol b/packages/wallet-contracts/contracts/modules/MainModule.sol deleted file mode 100644 index f6d87dafb1..0000000000 --- a/packages/wallet-contracts/contracts/modules/MainModule.sol +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./commons/ModuleAuthFixed.sol"; -import "./commons/ModuleHooks.sol"; -import "./commons/ModuleCalls.sol"; -import "./commons/ModuleCreator.sol"; -import "./commons/ModuleExtraAuth.sol"; -import "./commons/ModuleAuthConvenience.sol"; - -/** - * @notice Contains the core functionality Sequence wallets will inherit. - * @dev If using a new main module, developers must ensure that all inherited - * contracts by the main module don't conflict and are accounted for to be - * supported by the supportsInterface method. - */ -contract MainModule is - ModuleAuthFixed, - ModuleExtraAuth, - ModuleCalls, - ModuleHooks, - ModuleCreator, - ModuleAuthConvenience -{ - constructor(address _factory, address _mainModuleUpgradable) ModuleAuthFixed(_factory, _mainModuleUpgradable) {} - - function _isValidImage(bytes32 _imageHash) - internal - view - override(IModuleAuth, ModuleAuthFixed, ModuleExtraAuth) - returns (bool) - { - return super._isValidImage(_imageHash); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) - public - pure - override(ModuleAuthFixed, ModuleAuthConvenience, ModuleCalls, ModuleExtraAuth, ModuleHooks, ModuleCreator) - returns (bool) - { - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/MainModuleGasEstimation.sol b/packages/wallet-contracts/contracts/modules/MainModuleGasEstimation.sol deleted file mode 100644 index 60938779b6..0000000000 --- a/packages/wallet-contracts/contracts/modules/MainModuleGasEstimation.sol +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol"; -import "./commons/gas-estimation/ModuleIgnoreNonceCalls.sol"; -import "./commons/ModuleHooks.sol"; -import "./commons/ModuleUpdate.sol"; -import "./commons/ModuleCreator.sol"; - -/** - * @notice Contains an alternative implementation of the MainModules that skips validation of - * signatures, this implementation SHOULD NOT be used directly on a wallet. - * - * Intended to be used only for gas estimation, using eth_call and overrides. - */ -contract MainModuleGasEstimation is - ModuleIgnoreAuthUpgradable, - ModuleIgnoreNonceCalls, - ModuleUpdate, - ModuleHooks, - ModuleCreator -{ - struct SimulateResult { - bool executed; - bool succeeded; - bytes result; - uint256 gasUsed; - } - - /** - * @notice Simulate each transaction in a bundle for gas usage and execution result - * @param _txs Transactions to process - * @return The gas used and execution result for each transaction in the bundle - */ - function simulateExecute(Transaction[] calldata _txs) public virtual returns (SimulateResult[] memory) { - unchecked { - SimulateResult[] memory results = new SimulateResult[](_txs.length); - - // Execute transaction - uint256 size = _txs.length; - for (uint256 i = 0; i < size; i++) { - Transaction calldata transaction = _txs[i]; - uint256 gasLimit = transaction.gasLimit; - - results[i].executed = true; - - if (gasleft() < gasLimit) { - results[i].succeeded = false; - results[i].result = - abi.encodeWithSelector(IModuleCalls.NotEnoughGas.selector, i, gasLimit, gasleft()); - break; - } - - if (transaction.delegateCall) { - uint256 initialGas = gasleft(); - - (results[i].succeeded, results[i].result) = - transaction.target.delegatecall{gas: gasLimit == 0 ? gasleft() : gasLimit}(transaction.data); - - results[i].gasUsed = initialGas - gasleft(); - } else { - uint256 initialGas = gasleft(); - - (results[i].succeeded, results[i].result) = transaction.target - .call{value: transaction.value, gas: gasLimit == 0 ? gasleft() : gasLimit}(transaction.data); - - results[i].gasUsed = initialGas - gasleft(); - } - - if (!results[i].succeeded && transaction.revertOnError) { - break; - } - } - - return results; - } - } - - function _isValidImage(bytes32 _imageHash) - internal - view - override(IModuleAuth, ModuleIgnoreAuthUpgradable) - returns (bool) - { - return super._isValidImage(_imageHash); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @dev If using a new main module, developers must ensure that all inherited - * contracts by the main module don't conflict and are accounted for to be - * supported by the supportsInterface method. - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) - public - pure - override(ModuleAuthUpgradable, ModuleCalls, ModuleUpdate, ModuleHooks, ModuleCreator) - returns (bool) - { - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/MainModuleUpgradable.sol b/packages/wallet-contracts/contracts/modules/MainModuleUpgradable.sol deleted file mode 100644 index 5c83d4c5e2..0000000000 --- a/packages/wallet-contracts/contracts/modules/MainModuleUpgradable.sol +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./commons/ModuleAuthUpgradable.sol"; -import "./commons/ModuleHooks.sol"; -import "./commons/ModuleCalls.sol"; -import "./commons/ModuleUpdate.sol"; -import "./commons/ModuleCreator.sol"; -import "./commons/ModuleExtraAuth.sol"; -import "./commons/ModuleAuthConvenience.sol"; - -/** - * @notice Contains the core functionality Sequence wallets will inherit with - * the added functionality that the main module can be changed. - * @dev If using a new main module, developers must ensure that all inherited - * contracts by the main module don't conflict and are accounted for to be - * supported by the supportsInterface method. - */ -contract MainModuleUpgradable is - ModuleAuthUpgradable, - ModuleExtraAuth, - ModuleCalls, - ModuleUpdate, - ModuleHooks, - ModuleCreator, - ModuleAuthConvenience -{ - function _isValidImage(bytes32 _imageHash) - internal - view - override(IModuleAuth, ModuleAuthUpgradable, ModuleExtraAuth) - returns (bool) - { - return super._isValidImage(_imageHash); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @dev If using a new main module, developers must ensure that all inherited - * contracts by the main module don't conflict and are accounted for to be - * supported by the supportsInterface method. - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) - public - pure - override( - ModuleAuthUpgradable, - ModuleAuthConvenience, - ModuleCalls, - ModuleExtraAuth, - ModuleUpdate, - ModuleHooks, - ModuleCreator - ) - returns (bool) - { - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/Implementation.sol b/packages/wallet-contracts/contracts/modules/commons/Implementation.sol deleted file mode 100644 index e517e21886..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/Implementation.sol +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -/** - * @dev Allows modules to access the implementation slot - */ -contract Implementation { - /** - * @notice Updates the Wallet implementation - * @param _imp New implementation address - * @dev The wallet implementation is stored on the storage slot - * defined by the address of the wallet itself - * WARNING updating this value may break the wallet and users - * must be confident that the new implementation is safe. - */ - function _setImplementation(address _imp) internal { - assembly { - sstore(address(), _imp) - } - } - - /** - * @notice Returns the Wallet implementation - * @return _imp The address of the current Wallet implementation - */ - function _getImplementation() internal view returns (address _imp) { - assembly { - _imp := sload(address()) - } - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleAuth.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleAuth.sol deleted file mode 100644 index f4cd03fef1..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleAuth.sol +++ /dev/null @@ -1,166 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../../utils/LibBytes.sol"; -import "../../interfaces/IERC1271Wallet.sol"; - -import "./interfaces/IModuleAuth.sol"; - -import "./ModuleERC165.sol"; - -import "./submodules/auth/SequenceBaseSig.sol"; -import "./submodules/auth/SequenceDynamicSig.sol"; -import "./submodules/auth/SequenceNoChainIdSig.sol"; -import "./submodules/auth/SequenceChainedSig.sol"; - -abstract contract ModuleAuth is IModuleAuth, ModuleERC165, IERC1271Wallet, SequenceChainedSig { - using LibBytes for bytes; - - bytes1 internal constant LEGACY_TYPE = hex"00"; - bytes1 internal constant DYNAMIC_TYPE = hex"01"; - bytes1 internal constant NO_CHAIN_ID_TYPE = hex"02"; - bytes1 internal constant CHAINED_TYPE = hex"03"; - - bytes4 internal constant SELECTOR_ERC1271_BYTES_BYTES = 0x20c13b0b; - bytes4 internal constant SELECTOR_ERC1271_BYTES32_BYTES = 0x1626ba7e; - - /** - * @notice Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature. - * @dev The signature must be prefixed with a type byte, which is used to determine the recovery method. - * - * @param _digest Digest of the signed data. - * @param _signature A Sequence signature. - * - * @return threshold The required number of signatures needed to consider the signature valid. - * @return weight The actual number of signatures collected in the signature. - * @return imageHash The imageHash of the configuration that signed the message. - * @return subdigest A modified version of the original digest, unique for each wallet/network. - * @return checkpoint A nonce that is incremented every time a new configuration is set. - */ - function signatureRecovery(bytes32 _digest, bytes calldata _signature) - public - view - virtual - override - returns (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 checkpoint) - { - bytes1 signatureType = _signature[0]; - - if (signatureType == LEGACY_TYPE) { - // networkId digest + base recover - subdigest = SequenceBaseSig.subdigest(_digest); - (threshold, weight, imageHash, checkpoint) = SequenceBaseSig.recover(subdigest, _signature); - return (threshold, weight, imageHash, subdigest, checkpoint); - } - - if (signatureType == DYNAMIC_TYPE) { - // networkId digest + dynamic recover - subdigest = SequenceBaseSig.subdigest(_digest); - (threshold, weight, imageHash, checkpoint) = SequenceDynamicSig.recover(subdigest, _signature); - return (threshold, weight, imageHash, subdigest, checkpoint); - } - - if (signatureType == NO_CHAIN_ID_TYPE) { - // noChainId digest + dynamic recover - subdigest = SequenceNoChainIdSig.subdigest(_digest); - (threshold, weight, imageHash, checkpoint) = SequenceDynamicSig.recover(subdigest, _signature); - return (threshold, weight, imageHash, subdigest, checkpoint); - } - - if (signatureType == CHAINED_TYPE) { - // original digest + chained recover - // (subdigest will be computed in the chained recover) - return chainedRecover(_digest, _signature); - } - - revert InvalidSignatureType(signatureType); - } - - /** - * @dev Validates a signature. - * - * @param _digest Digest of the signed data. - * @param _signature A Sequence signature. - * - * @return isValid Indicates whether the signature is valid or not. - * @return subdigest A modified version of the original digest, unique for each wallet/network. - */ - function _signatureValidation(bytes32 _digest, bytes calldata _signature) - internal - view - virtual - override - returns (bool isValid, bytes32 subdigest) - { - uint256 threshold; - uint256 weight; - bytes32 imageHash; - (threshold, weight, imageHash, subdigest,) = signatureRecovery(_digest, _signature); - isValid = weight >= threshold && _isValidImage(imageHash); - } - - /** - * @notice Verifies whether the provided signature is valid with respect to the provided data - * @dev MUST return the correct magic value if the signature provided is valid for the provided data - * > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)")) - * @param _data Arbitrary length data signed on the behalf of address(this) - * @param _signatures Signature byte array associated with _data. - * Encoded as abi.encode(Signature[], Configs) - * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise - */ - function isValidSignature(bytes calldata _data, bytes calldata _signatures) - public - view - virtual - override - returns (bytes4) - { - // Validate signatures - (bool isValid,) = _signatureValidation(keccak256(_data), _signatures); - if (isValid) { - return SELECTOR_ERC1271_BYTES_BYTES; - } - - return bytes4(0); - } - - /** - * @notice Verifies whether the provided signature is valid with respect to the provided hash - * @dev MUST return the correct magic value if the signature provided is valid for the provided hash - * > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)")) - * @param _hash keccak256 hash that was signed - * @param _signatures Signature byte array associated with _data. - * Encoded as abi.encode(Signature[], Configs) - * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise - */ - function isValidSignature(bytes32 _hash, bytes calldata _signatures) public view virtual override returns (bytes4) { - // Validate signatures - (bool isValid,) = _signatureValidation(_hash, _signatures); - if (isValid) { - return SELECTOR_ERC1271_BYTES32_BYTES; - } - - return bytes4(0); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool) { - if (_interfaceID == type(IModuleAuth).interfaceId || _interfaceID == type(IERC1271Wallet).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } - - /** - * @notice Updates the signers configuration of the wallet - * @param _imageHash New required image hash of the signature - */ - function updateImageHash(bytes32 _imageHash) external virtual override onlySelf { - _updateImageHash(_imageHash); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleAuthConvenience.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleAuthConvenience.sol deleted file mode 100644 index 5ffc115230..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleAuthConvenience.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleSelfAuth.sol"; -import "./ModuleAuth.sol"; -import "./ModuleIPFS.sol"; -import "./ModuleERC165.sol"; - -import "../../utils/LibString.sol"; - -abstract contract ModuleAuthConvenience is ModuleERC165, ModuleSelfAuth, ModuleAuth, ModuleIPFS { - /** - * @notice Updates the image hash and the IPFS root in a single operation. - * @dev These two operations are often performed together, so this function - * allows to save some gas by performing them in a single step. - * - * @param _imageHash The new image hash to be set. - * @param _ipfsRoot The new IPFS root to be set. - */ - function updateImageHashAndIPFS(bytes32 _imageHash, bytes32 _ipfsRoot) external onlySelf { - _updateImageHash(_imageHash); - _updateIPFSRoot(_ipfsRoot); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) - public - pure - virtual - override(ModuleERC165, ModuleAuth) - returns (bool) - { - if (_interfaceID == type(ModuleAuthConvenience).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleAuthFixed.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleAuthFixed.sol deleted file mode 100644 index 80160dc4c4..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleAuthFixed.sol +++ /dev/null @@ -1,74 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleAuth.sol"; -import "./ModuleUpdate.sol"; -import "./ModuleSelfAuth.sol"; -import "./ModuleStorage.sol"; - -import "../../Wallet.sol"; - -/** - * Implements ModuleAuth by validating the signature image against - * the salt used to deploy the contract - * - * This module allows wallets to be deployed with a default configuration - * without using any aditional contract storage - */ -abstract contract ModuleAuthFixed is ModuleSelfAuth, ModuleAuth, ModuleUpdate { - bytes32 public immutable INIT_CODE_HASH; - address public immutable FACTORY; - address public immutable UPGRADEABLE_IMPLEMENTATION; - - constructor(address _factory, address _mainModuleUpgradeable) { - // Build init code hash of the deployed wallets using that module - bytes32 initCodeHash = keccak256(abi.encodePacked(Wallet.creationCode, uint256(uint160(address(this))))); - - INIT_CODE_HASH = initCodeHash; - FACTORY = _factory; - UPGRADEABLE_IMPLEMENTATION = _mainModuleUpgradeable; - } - - /** - * @notice Updates the configuration of the wallet - * @dev In the process of updating the configuration, the wallet implementation - * is updated to the mainModuleUpgradeable, this only happens once in the - * lifetime of the wallet. - * - * @param _imageHash New required image hash of the signature - */ - function _updateImageHash(bytes32 _imageHash) internal virtual override { - // Update imageHash in storage - if (_imageHash == bytes32(0)) revert ImageHashIsZero(); - ModuleStorage.writeBytes32(IMAGE_HASH_KEY, _imageHash); - emit ImageHashUpdated(_imageHash); - - // Update wallet implementation to mainModuleUpgradeable - _updateImplementation(UPGRADEABLE_IMPLEMENTATION); - } - - /** - * @notice Validates the signature image with the salt used to deploy the contract - * @param _imageHash Hash image of signature - * @return true if the signature image is valid - */ - function _isValidImage(bytes32 _imageHash) internal view virtual override returns (bool) { - return address(uint160(uint256(keccak256(abi.encodePacked(hex"ff", FACTORY, _imageHash, INIT_CODE_HASH))))) - == address(this); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) - public - pure - virtual - override(ModuleAuth, ModuleUpdate) - returns (bool) - { - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleAuthUpgradable.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleAuthUpgradable.sol deleted file mode 100644 index c0585b4a13..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleAuthUpgradable.sol +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./interfaces/IModuleAuthUpgradable.sol"; - -import "./ModuleSelfAuth.sol"; -import "./ModuleAuth.sol"; -import "./ModuleStorage.sol"; - -abstract contract ModuleAuthUpgradable is IModuleAuthUpgradable, ModuleSelfAuth, ModuleAuth { - /** - * @notice Updates the signers configuration of the wallet - * @param _imageHash New required image hash of the signature - */ - function _updateImageHash(bytes32 _imageHash) internal virtual override { - if (_imageHash == bytes32(0)) revert ImageHashIsZero(); - ModuleStorage.writeBytes32(IMAGE_HASH_KEY, _imageHash); - emit ImageHashUpdated(_imageHash); - } - - /** - * @notice Returns the current image hash of the wallet - */ - function imageHash() external view virtual override returns (bytes32) { - return ModuleStorage.readBytes32(IMAGE_HASH_KEY); - } - - /** - * @notice Validates the signature image with a valid image hash defined - * in the contract storage - * @param _imageHash Hash image of signature - * @return true if the signature image is valid - */ - function _isValidImage(bytes32 _imageHash) internal view virtual override returns (bool) { - return _imageHash != bytes32(0) && _imageHash == ModuleStorage.readBytes32(IMAGE_HASH_KEY); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool) { - if (_interfaceID == type(IModuleAuthUpgradable).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleCalls.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleCalls.sol deleted file mode 100644 index 44221fa61b..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleCalls.sol +++ /dev/null @@ -1,131 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleSelfAuth.sol"; -import "./ModuleStorage.sol"; -import "./ModuleERC165.sol"; -import "./ModuleNonce.sol"; -import "./ModuleOnlyDelegatecall.sol"; - -import "./interfaces/IModuleCalls.sol"; -import "./interfaces/IModuleAuth.sol"; - -import "./submodules/nonce/SubModuleNonce.sol"; -import "./submodules/auth/SequenceBaseSig.sol"; - -import "../../utils/LibOptim.sol"; - -abstract contract ModuleCalls is - IModuleCalls, - IModuleAuth, - ModuleERC165, - ModuleOnlyDelegatecall, - ModuleSelfAuth, - ModuleNonce -{ - /** - * @notice Allow wallet owner to execute an action - * @dev Relayers must ensure that the gasLimit specified for each transaction - * is acceptable to them. A user could specify large enough that it could - * consume all the gas available. - * @param _txs Transactions to process - * @param _nonce Signature nonce (may contain an encoded space) - * @param _signature Encoded signature - */ - function execute(Transaction[] calldata _txs, uint256 _nonce, bytes calldata _signature) - external - virtual - override - onlyDelegatecall - { - // Validate and update nonce - _validateNonce(_nonce); - - // Hash and verify transaction bundle - (bool isValid, bytes32 txHash) = _signatureValidation(keccak256(abi.encode(_nonce, _txs)), _signature); - - if (!isValid) { - revert InvalidSignature(txHash, _signature); - } - - // Execute the transactions - _execute(txHash, _txs); - } - - /** - * @notice Allow wallet to execute an action - * without signing the message - * @param _txs Transactions to execute - */ - function selfExecute(Transaction[] calldata _txs) external virtual override onlySelf { - // Hash transaction bundle - bytes32 txHash = SequenceBaseSig.subdigest(keccak256(abi.encode("self:", _txs))); - - // Execute the transactions - _execute(txHash, _txs); - } - - /** - * @notice Executes a list of transactions - * @param _txHash Hash of the batch of transactions - * @param _txs Transactions to execute - */ - function _execute(bytes32 _txHash, Transaction[] calldata _txs) private { - unchecked { - // Execute transaction - uint256 size = _txs.length; - for (uint256 i = 0; i < size; i++) { - Transaction calldata transaction = _txs[i]; - uint256 gasLimit = transaction.gasLimit; - - if (gasleft() < gasLimit) revert NotEnoughGas(i, gasLimit, gasleft()); - - bool success; - if (transaction.delegateCall) { - success = LibOptim.delegatecall( - transaction.target, gasLimit == 0 ? gasleft() : gasLimit, transaction.data - ); - } else { - success = LibOptim.call( - transaction.target, transaction.value, gasLimit == 0 ? gasleft() : gasLimit, transaction.data - ); - } - - if (success) { - emit TxExecuted(_txHash, i); - } else { - // Avoid copy of return data until neccesary - _revertBytes(transaction.revertOnError, _txHash, i, LibOptim.returnData()); - } - } - } - } - - /** - * @notice Logs a failed transaction, reverts if the transaction is not optional - * @param _revertOnError Signals if it should revert or just log - * @param _txHash Hash of the transaction - * @param _index Index of the transaction in the batch - * @param _reason Encoded revert message - */ - function _revertBytes(bool _revertOnError, bytes32 _txHash, uint256 _index, bytes memory _reason) internal { - if (_revertOnError) { - assembly { revert(add(_reason, 0x20), mload(_reason)) } - } else { - emit TxFailed(_txHash, _index, _reason); - } - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool) { - if (_interfaceID == type(IModuleCalls).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleCreator.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleCreator.sol deleted file mode 100644 index 2e75ce1ae8..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleCreator.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./interfaces/IModuleCreator.sol"; - -import "./ModuleSelfAuth.sol"; -import "./ModuleERC165.sol"; - -contract ModuleCreator is IModuleCreator, ModuleERC165, ModuleSelfAuth { - event CreatedContract(address _contract); - - /** - * @notice Creates a contract forwarding eth value - * @param _code Creation code of the contract - * @return addr The address of the created contract - */ - function createContract(bytes memory _code) public payable virtual override onlySelf returns (address addr) { - assembly { addr := create(callvalue(), add(_code, 32), mload(_code)) } - if (addr == address(0)) revert CreateFailed(_code); - emit CreatedContract(addr); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool) { - if (_interfaceID == type(IModuleCreator).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleERC165.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleERC165.sol deleted file mode 100644 index 8cf8eaad09..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleERC165.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -abstract contract ModuleERC165 { - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @dev Adding new hooks will not lead to them being reported by this function - * without upgrading the wallet. In addition, developers must ensure that - * all inherited contracts by the main module don't conflict and are accounted - * to be supported by the supportsInterface method. - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public pure virtual returns (bool) { - return _interfaceID == this.supportsInterface.selector; - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleERC5719.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleERC5719.sol deleted file mode 100644 index 669e86d62c..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleERC5719.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleIPFS.sol"; - -import "../../utils/LibString.sol"; - -contract ModuleERC5719 is ModuleIPFS { - function getAlternativeSignature(bytes32 _digest) external view returns (string memory) { - return string( - abi.encodePacked( - ipfsRoot(), - "/ERC5719/", - LibString.prefixHexadecimal(LibString.bytesToHexadecimal(abi.encodePacked(_digest))) - ) - ); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleExtraAuth.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleExtraAuth.sol deleted file mode 100644 index f7642fc60a..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleExtraAuth.sol +++ /dev/null @@ -1,75 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleAuth.sol"; -import "./ModuleStorage.sol"; -import "./ModuleSelfAuth.sol"; -import "./ModuleERC165.sol"; - -abstract contract ModuleExtraAuth is ModuleERC165, ModuleSelfAuth, ModuleAuth { - // EXTRA_IMAGE_HASH_KEY = keccak256("org.sequence.module.static.auth.extra.image.hash"); - bytes32 private constant EXTRA_IMAGE_HASH_KEY = - bytes32(0x849e7bdc245db17e50b9f43086f1914d70eb4dab6dd89af4d541d53353ad97de); - - event SetExtraImageHash(bytes32 indexed _imageHash, uint256 _expiration); - - function _writeExpirationForImageHash(bytes32 _imageHash, uint256 _expiration) internal { - ModuleStorage.writeBytes32Map(EXTRA_IMAGE_HASH_KEY, _imageHash, bytes32(_expiration)); - } - - function _readExpirationForImageHash(bytes32 _imageHash) internal view returns (uint256 _expiration) { - return uint256(ModuleStorage.readBytes32Map(EXTRA_IMAGE_HASH_KEY, _imageHash)); - } - - function _isValidImage(bytes32 _imageHash) internal view virtual override returns (bool) { - if (super._isValidImage(_imageHash)) { - return true; - } - - uint256 expiration = _readExpirationForImageHash(_imageHash); - - // solhint-disable-next-line not-rely-on-time - return expiration != 0 && expiration > block.timestamp; - } - - function extraImageHash(bytes32 _imageHash) public view returns (uint256) { - return _readExpirationForImageHash(_imageHash); - } - - function setExtraImageHash(bytes32 _imageHash, uint256 _expiration) external onlySelf { - _writeExpirationForImageHash(_imageHash, _expiration); - - emit SetExtraImageHash(_imageHash, _expiration); - } - - function clearExtraImageHashes(bytes32[] calldata _imageHashes) external onlySelf { - unchecked { - uint256 imageHashesLength = _imageHashes.length; - for (uint256 i = 0; i < imageHashesLength; i++) { - bytes32 imageHash = _imageHashes[i]; - _writeExpirationForImageHash(imageHash, 0); - - emit SetExtraImageHash(imageHash, 0); - } - } - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) - public - pure - virtual - override(ModuleERC165, ModuleAuth) - returns (bool) - { - if (_interfaceID == type(ModuleExtraAuth).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleHooks.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleHooks.sol deleted file mode 100644 index f0fb61b284..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleHooks.sol +++ /dev/null @@ -1,142 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./interfaces/IModuleHooks.sol"; - -import "./ModuleSelfAuth.sol"; -import "./ModuleStorage.sol"; -import "./ModuleERC165.sol"; - -import "../../interfaces/receivers/IERC1155Receiver.sol"; -import "../../interfaces/receivers/IERC721Receiver.sol"; -import "../../interfaces/receivers/IERC223Receiver.sol"; - -contract ModuleHooks is IERC1155Receiver, IERC721Receiver, IModuleHooks, ModuleERC165, ModuleSelfAuth { - // HOOKS_KEY = keccak256("org.arcadeum.module.hooks.hooks"); - bytes32 private constant HOOKS_KEY = bytes32(0xbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a120); - - /** - * @notice Reads the implementation hook of a signature - * @param _signature Signature function - * @return The address of the implementation hook, address(0) if none - */ - function readHook(bytes4 _signature) external view virtual override returns (address) { - return _readHook(_signature); - } - - /** - * @notice Adds a new hook to handle a given function selector - * @param _signature Signature function linked to the hook - * @param _implementation Hook implementation contract - * @dev Can't overwrite hooks that are part of the main module (those defined below) - */ - function addHook(bytes4 _signature, address _implementation) external virtual override onlySelf { - if (_readHook(_signature) != address(0)) revert HookAlreadyExists(_signature); - _writeHook(_signature, _implementation); - } - - /** - * @notice Removes a registered hook - * @param _signature Signature function linked to the hook - * @dev Can't remove hooks that are part of the main module (those defined below) - * without upgrading the wallet - */ - function removeHook(bytes4 _signature) external virtual override onlySelf { - if (_readHook(_signature) == address(0)) revert HookDoesNotExist(_signature); - _writeHook(_signature, address(0)); - } - - /** - * @notice Reads the implementation hook of a signature - * @param _signature Signature function - * @return The address of the implementation hook, address(0) if none - */ - function _readHook(bytes4 _signature) private view returns (address) { - return address(uint160(uint256(ModuleStorage.readBytes32Map(HOOKS_KEY, _signature)))); - } - - /** - * @notice Writes the implementation hook of a signature - * @param _signature Signature function - * @param _implementation Hook implementation contract - */ - function _writeHook(bytes4 _signature, address _implementation) private { - ModuleStorage.writeBytes32Map(HOOKS_KEY, _signature, bytes32(uint256(uint160(_implementation)))); - emit DefinedHook(_signature, _implementation); - } - - /** - * @notice Handle the receipt of a single ERC1155 token type. - * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` - */ - function onERC1155Received(address, address, uint256, uint256, bytes calldata) - external - virtual - override - returns (bytes4) - { - return ModuleHooks.onERC1155Received.selector; - } - - /** - * @notice Handle the receipt of multiple ERC1155 token types. - * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` - */ - function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) - external - virtual - override - returns (bytes4) - { - return ModuleHooks.onERC1155BatchReceived.selector; - } - - /** - * @notice Handle the receipt of a single ERC721 token. - * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` - */ - function onERC721Received(address, address, uint256, bytes calldata) external virtual override returns (bytes4) { - return ModuleHooks.onERC721Received.selector; - } - - /** - * @notice Routes fallback calls through hooks - */ - fallback() external payable { - if (msg.data.length >= 4) { - address target = _readHook(msg.sig); - if (target != address(0)) { - (bool success, bytes memory result) = target.delegatecall(msg.data); - assembly { - if iszero(success) { - revert(add(result, 0x20), mload(result)) - } - - return(add(result, 0x20), mload(result)) - } - } - } - } - - /** - * @notice Allows the wallet to receive ETH - */ - receive() external payable {} - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool) { - if ( - _interfaceID == type(IModuleHooks).interfaceId || _interfaceID == type(IERC1155Receiver).interfaceId - || _interfaceID == type(IERC721Receiver).interfaceId - || _interfaceID == type(IERC223Receiver).interfaceId - ) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleIPFS.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleIPFS.sol deleted file mode 100644 index 7241db83ea..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleIPFS.sol +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleSelfAuth.sol"; -import "./ModuleStorage.sol"; - -import "../../utils/LibString.sol"; - -contract ModuleIPFS is ModuleSelfAuth { - event IPFSRootUpdated(bytes32 _hash); - - // IPFS_ROOT_KEY = keccak256("sequence.ipfs.root") - bytes32 private constant IPFS_ROOT_KEY = - bytes32(0x0eecac93ced8722d209199364cda3bc33da3bc3a23daef6be49ebd780511d033); - - function ipfsRootBytes32() public view returns (bytes32) { - return ModuleStorage.readBytes32(IPFS_ROOT_KEY); - } - - function ipfsRoot() public view returns (string memory) { - return string( - abi.encodePacked( - "ipfs://", - LibString.prefixBase32(LibString.bytesToBase32(abi.encodePacked(hex"01701220", ipfsRootBytes32()))) - ) - ); - } - - function updateIPFSRoot(bytes32 _hash) external onlySelf { - _updateIPFSRoot(_hash); - } - - function _updateIPFSRoot(bytes32 _hash) internal { - ModuleStorage.writeBytes32(IPFS_ROOT_KEY, _hash); - emit IPFSRootUpdated(_hash); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleNonce.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleNonce.sol deleted file mode 100644 index ebdbaa31ac..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleNonce.sol +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./ModuleStorage.sol"; - -import "./submodules/nonce/SubModuleNonce.sol"; - -contract ModuleNonce { - // Events - event NonceChange(uint256 _space, uint256 _newNonce); - - // Errors - error BadNonce(uint256 _space, uint256 _provided, uint256 _current); - - // NONCE_KEY = keccak256("org.arcadeum.module.calls.nonce"); - bytes32 private constant NONCE_KEY = bytes32(0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e); - - /** - * @notice Returns the next nonce of the default nonce space - * @dev The default nonce space is 0x00 - * @return The next nonce - */ - function nonce() external view virtual returns (uint256) { - return readNonce(0); - } - - /** - * @notice Returns the next nonce of the given nonce space - * @param _space Nonce space, each space keeps an independent nonce count - * @return The next nonce - */ - function readNonce(uint256 _space) public view virtual returns (uint256) { - return uint256(ModuleStorage.readBytes32Map(NONCE_KEY, bytes32(_space))); - } - - /** - * @notice Changes the next nonce of the given nonce space - * @param _space Nonce space, each space keeps an independent nonce count - * @param _nonce Nonce to write on the space - */ - function _writeNonce(uint256 _space, uint256 _nonce) internal { - ModuleStorage.writeBytes32Map(NONCE_KEY, bytes32(_space), bytes32(_nonce)); - } - - /** - * @notice Verify if a nonce is valid - * @param _rawNonce Nonce to validate (may contain an encoded space) - */ - function _validateNonce(uint256 _rawNonce) internal virtual { - // Retrieve current nonce for this wallet - (uint256 space, uint256 providedNonce) = SubModuleNonce.decodeNonce(_rawNonce); - - uint256 currentNonce = readNonce(space); - if (currentNonce != providedNonce) { - revert BadNonce(space, providedNonce, currentNonce); - } - - unchecked { - uint256 newNonce = providedNonce + 1; - - _writeNonce(space, newNonce); - emit NonceChange(space, newNonce); - return; - } - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleOnlyDelegatecall.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleOnlyDelegatecall.sol deleted file mode 100644 index 6d4113a938..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleOnlyDelegatecall.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract ModuleOnlyDelegatecall { - address private immutable self; - - error OnlyDelegatecall(); - - constructor() { - self = address(this); - } - - /** - * @notice Modifier that only allows functions to be called via delegatecall. - */ - modifier onlyDelegatecall() { - if (address(this) == self) { - revert OnlyDelegatecall(); - } - _; - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleSelfAuth.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleSelfAuth.sol deleted file mode 100644 index 42bfde5337..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleSelfAuth.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract ModuleSelfAuth { - error OnlySelfAuth(address _sender, address _self); - - modifier onlySelf() { - if (msg.sender != address(this)) { - revert OnlySelfAuth(msg.sender, address(this)); - } - _; - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleStorage.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleStorage.sol deleted file mode 100644 index 61230a10a1..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleStorage.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -library ModuleStorage { - function writeBytes32(bytes32 _key, bytes32 _val) internal { - assembly { sstore(_key, _val) } - } - - function readBytes32(bytes32 _key) internal view returns (bytes32 val) { - assembly { val := sload(_key) } - } - - function writeBytes32Map(bytes32 _key, bytes32 _subKey, bytes32 _val) internal { - bytes32 key = keccak256(abi.encode(_key, _subKey)); - assembly { sstore(key, _val) } - } - - function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) { - bytes32 key = keccak256(abi.encode(_key, _subKey)); - assembly { val := sload(key) } - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/ModuleUpdate.sol b/packages/wallet-contracts/contracts/modules/commons/ModuleUpdate.sol deleted file mode 100644 index cc8cb7abd1..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/ModuleUpdate.sol +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./interfaces/IModuleUpdate.sol"; - -import "./Implementation.sol"; -import "./ModuleSelfAuth.sol"; -import "./ModuleERC165.sol"; - -import "../../utils/LibAddress.sol"; - -contract ModuleUpdate is IModuleUpdate, ModuleERC165, ModuleSelfAuth, Implementation { - using LibAddress for address; - - event ImplementationUpdated(address newImplementation); - - /** - * @notice Updates the implementation of the base wallet - * @param _implementation New main module implementation - * @dev WARNING Updating the implementation can brick the wallet - */ - function updateImplementation(address _implementation) external virtual override onlySelf { - _updateImplementation(_implementation); - } - - /** - * @notice Updates the implementation of the base wallet, used internally. - * @param _implementation New main module implementation - * @dev WARNING Updating the implementation can brick the wallet - */ - function _updateImplementation(address _implementation) internal virtual override { - if (!_implementation.isContract()) revert InvalidImplementation(_implementation); - _setImplementation(_implementation); - emit ImplementationUpdated(_implementation); - } - - /** - * @notice Query if a contract implements an interface - * @param _interfaceID The interface identifier, as specified in ERC-165 - * @return `true` if the contract implements `_interfaceID` - */ - function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool) { - if (_interfaceID == type(IModuleUpdate).interfaceId) { - return true; - } - - return super.supportsInterface(_interfaceID); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol b/packages/wallet-contracts/contracts/modules/commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol deleted file mode 100644 index 300ebaaa9b..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./../ModuleAuthUpgradable.sol"; - -/** - * @notice Implements ModuleAuthUpgradable but ignores the validity of the signature - * should only be used during gas estimation. - */ -abstract contract ModuleIgnoreAuthUpgradable is ModuleAuthUpgradable { - /** - * @notice Removes the signature validation from the module, by returning true for any _imageHash - * @param _imageHash Hash image of signature - * @return true always - */ - function _isValidImage(bytes32 _imageHash) internal view virtual override(ModuleAuthUpgradable) returns (bool) { - // Still validates the imageHash using the original mechanism for a more acurate estimation - return super._isValidImage(_imageHash) || true; - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/gas-estimation/ModuleIgnoreNonceCalls.sol b/packages/wallet-contracts/contracts/modules/commons/gas-estimation/ModuleIgnoreNonceCalls.sol deleted file mode 100644 index 86447adfe2..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/gas-estimation/ModuleIgnoreNonceCalls.sol +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./../ModuleCalls.sol"; - -import "./../submodules/nonce/SubModuleNonce.sol"; - -/** - * @notice Implements ModuleCalls but ignores the validity of the nonce - * should only be used during gas estimation. - */ -abstract contract ModuleIgnoreNonceCalls is ModuleCalls { - /** - * @notice Verify if a nonce is valid - * @param _rawNonce Nonce to validate (may contain an encoded space) - */ - function _validateNonce(uint256 _rawNonce) internal virtual override { - // Retrieve current nonce for this wallet - (uint256 space, uint256 providedNonce) = SubModuleNonce.decodeNonce(_rawNonce); - - uint256 currentNonce = readNonce(space); - if (currentNonce != providedNonce && false) { - revert BadNonce(space, providedNonce, currentNonce); - } - - unchecked { - uint256 newNonce = providedNonce + 1; - - _writeNonce(space, newNonce); - emit NonceChange(space, newNonce); - return; - } - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleAuth.sol b/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleAuth.sol deleted file mode 100644 index 1311b09412..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleAuth.sol +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -abstract contract IModuleAuth { - // IMAGE_HASH_KEY = keccak256("org.arcadeum.module.auth.upgradable.image.hash"); - bytes32 internal constant IMAGE_HASH_KEY = - bytes32(0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8); - - event ImageHashUpdated(bytes32 newImageHash); - - // Errors - error ImageHashIsZero(); - error InvalidSignatureType(bytes1 _type); - - function _signatureValidation(bytes32 _digest, bytes calldata _signature) - internal - view - virtual - returns (bool isValid, bytes32 subdigest); - - function signatureRecovery(bytes32 _digest, bytes calldata _signature) - public - view - virtual - returns (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 checkpoint); - - /** - * @notice Validates the signature image - * @return true if the signature image is valid - */ - function _isValidImage(bytes32) internal view virtual returns (bool) { - return false; - } - - /** - * @notice Updates the signers configuration of the wallet - * @param _imageHash New required image hash of the signature - */ - function updateImageHash(bytes32 _imageHash) external virtual; - - /** - * @notice Updates the signers configuration of the wallet - * @param _imageHash New required image hash of the signature - */ - function _updateImageHash(bytes32 _imageHash) internal virtual; -} diff --git a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleAuthUpgradable.sol b/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleAuthUpgradable.sol deleted file mode 100644 index c782a7b895..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleAuthUpgradable.sol +++ /dev/null @@ -1,9 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IModuleAuthUpgradable { - /** - * @notice Returns the current image hash of the wallet - */ - function imageHash() external view returns (bytes32); -} diff --git a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleCalls.sol b/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleCalls.sol deleted file mode 100644 index 259130ea16..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleCalls.sol +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IModuleCalls { - // Events - event TxFailed(bytes32 indexed _tx, uint256 _index, bytes _reason); - event TxExecuted(bytes32 indexed _tx, uint256 _index); - - // Errors - error NotEnoughGas(uint256 _index, uint256 _requested, uint256 _available); - error InvalidSignature(bytes32 _hash, bytes _signature); - - // Transaction structure - struct Transaction { - bool delegateCall; // Performs delegatecall - bool revertOnError; // Reverts transaction bundle if tx fails - uint256 gasLimit; // Maximum gas to be forwarded - address target; // Address of the contract to call - uint256 value; // Amount of ETH to pass with the call - bytes data; // calldata to pass - } - - /** - * @notice Allow wallet owner to execute an action - * @param _txs Transactions to process - * @param _nonce Signature nonce (may contain an encoded space) - * @param _signature Encoded signature - */ - function execute(Transaction[] calldata _txs, uint256 _nonce, bytes calldata _signature) external; - - /** - * @notice Allow wallet to execute an action - * without signing the message - * @param _txs Transactions to execute - */ - function selfExecute(Transaction[] calldata _txs) external; -} diff --git a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleCreator.sol b/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleCreator.sol deleted file mode 100644 index f658425bdb..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleCreator.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IModuleCreator { - error CreateFailed(bytes _code); - - /** - * @notice Creates a contract forwarding eth value - * @param _code Creation code of the contract - * @return addr The address of the created contract - */ - function createContract(bytes calldata _code) external payable returns (address addr); -} diff --git a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleHooks.sol b/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleHooks.sol deleted file mode 100644 index 3c38c60818..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleHooks.sol +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -interface IModuleHooks { - // Errors - error HookAlreadyExists(bytes4 _signature); - error HookDoesNotExist(bytes4 _signature); - - // Events - event DefinedHook(bytes4 _signature, address _implementation); - - /** - * @notice Reads the implementation hook of a signature - * @param _signature Signature function - * @return The address of the implementation hook, address(0) if none - */ - function readHook(bytes4 _signature) external view returns (address); - - /** - * @notice Adds a new hook to handle a given function selector - * @param _signature Signature function linked to the hook - * @param _implementation Hook implementation contract - */ - function addHook(bytes4 _signature, address _implementation) external; - - /** - * @notice Removes a registered hook - * @param _signature Signature function linked to the hook - */ - function removeHook(bytes4 _signature) external; -} diff --git a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleUpdate.sol b/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleUpdate.sol deleted file mode 100644 index 8818937524..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/interfaces/IModuleUpdate.sol +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -abstract contract IModuleUpdate { - // Errors - error InvalidImplementation(address _implementation); - - /** - * @notice Updates the implementation of the base wallet - * @param _implementation New main module implementation - * @dev WARNING Updating the implementation can brick the wallet - */ - function updateImplementation(address _implementation) external virtual; - - /** - * @notice Updates the implementation of the base wallet, used internally. - * @param _implementation New main module implementation - * @dev WARNING Updating the implementation can brick the wallet - */ - function _updateImplementation(address _implementation) internal virtual; -} diff --git a/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol b/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol deleted file mode 100644 index ea62144d0c..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol +++ /dev/null @@ -1,255 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../../../../utils/SignatureValidator.sol"; -import "../../../../utils/LibBytesPointer.sol"; -import "../../../../utils/LibBytes.sol"; -import "../../../../utils/LibOptim.sol"; - -/** - * @title SequenceBaseSig Library - * @author Agustin Aguilar (aa@horizon.io) - * @notice A Solidity implementation for handling signatures in the Sequence protocol. - */ -library SequenceBaseSig { - using LibBytesPointer for bytes; - - uint256 internal constant FLAG_SIGNATURE = 0; - uint256 internal constant FLAG_ADDRESS = 1; - uint256 internal constant FLAG_DYNAMIC_SIGNATURE = 2; - uint256 internal constant FLAG_NODE = 3; - uint256 internal constant FLAG_BRANCH = 4; - uint256 internal constant FLAG_SUBDIGEST = 5; - uint256 internal constant FLAG_NESTED = 6; - - error InvalidNestedSignature(bytes32 _hash, address _addr, bytes _signature); - error InvalidSignatureFlag(uint256 _flag); - - /** - * @notice Generates a subdigest for the input digest (unique for this wallet and network). - * @param _digest The input digest to generate the subdigest from. - * @return bytes32 The subdigest generated from the input digest. - */ - function subdigest(bytes32 _digest) internal view returns (bytes32) { - return keccak256(abi.encodePacked("\x19\x01", block.chainid, address(this), _digest)); - } - - /** - * @notice Generates the leaf for an address and weight. - * @dev The leaf is generated by concatenating the address and weight. - * - * @param _addr The address to generate the leaf for. - * @param _weight The weight to generate the leaf for. - * @return bytes32 The leaf generated from the address and weight. - */ - function _leafForAddressAndWeight(address _addr, uint96 _weight) internal pure returns (bytes32) { - unchecked { - return bytes32(uint256(_weight) << 160 | uint256(uint160(_addr))); - } - } - - /** - * @notice Generates the leaf for a hardcoded subdigest. - * @dev The leaf is generated by hashing 'Sequence static digest:\n' and the subdigest. - * @param _subdigest The subdigest to generate the leaf for. - * @return bytes32 The leaf generated from the hardcoded subdigest. - */ - function _leafForHardcodedSubdigest(bytes32 _subdigest) internal pure returns (bytes32) { - return keccak256(abi.encodePacked("Sequence static digest:\n", _subdigest)); - } - - /** - * @notice Generates the leaf for a nested tree node. - * @dev The leaf is generated by hashing 'Sequence nested config:\n', the node, the threshold and the weight. - * - * @param _node The root of the node to generate the leaf for. - * @param _threshold The internal threshold of the tree. - * @param _weight The external weight of the tree. - * @return bytes32 The leaf generated from the nested tree. - */ - function _leafForNested(bytes32 _node, uint256 _threshold, uint256 _weight) internal pure returns (bytes32) { - return keccak256(abi.encodePacked("Sequence nested config:\n", _node, _threshold, _weight)); - } - - /** - * @notice Returns the weight and root of a signature branch. - * @dev If the signature contains a hardcoded subdigest, and it matches the input digest, then the weight is set to 2 ** 256 - 1. - * - * @param _subdigest The digest to verify the signature against. - * @param _signature The signature branch to recover. - * @return weight The total weight of the recovered signatures. - * @return root The root hash of the recovered configuration. - */ - function recoverBranch(bytes32 _subdigest, bytes calldata _signature) - internal - view - returns (uint256 weight, bytes32 root) - { - unchecked { - uint256 rindex; - - // Iterate until the image is completed - while (rindex < _signature.length) { - // Read next item type - uint256 flag; - (flag, rindex) = _signature.readUint8(rindex); - - if (flag == FLAG_ADDRESS) { - // Read plain address - uint8 addrWeight; - address addr; - (addrWeight, addr, rindex) = _signature.readUint8Address(rindex); - - // Write weight and address to image - bytes32 node = _leafForAddressAndWeight(addr, addrWeight); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - if (flag == FLAG_SIGNATURE) { - // Read weight - uint8 addrWeight; - (addrWeight, rindex) = _signature.readUint8(rindex); - - // Read single signature and recover signer - uint256 nrindex = rindex + 66; - address addr = SignatureValidator.recoverSigner(_subdigest, _signature[rindex:nrindex]); - rindex = nrindex; - - // Acumulate total weight of the signature - weight += addrWeight; - - // Write weight and address to image - bytes32 node = _leafForAddressAndWeight(addr, addrWeight); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - if (flag == FLAG_DYNAMIC_SIGNATURE) { - // Read signer and weight - uint8 addrWeight; - address addr; - (addrWeight, addr, rindex) = _signature.readUint8Address(rindex); - - // Read signature size - uint256 size; - (size, rindex) = _signature.readUint24(rindex); - - // Read dynamic size signature - uint256 nrindex = rindex + size; - if (!SignatureValidator.isValidSignature(_subdigest, addr, _signature[rindex:nrindex])) { - revert InvalidNestedSignature(_subdigest, addr, _signature[rindex:nrindex]); - } - rindex = nrindex; - - // Acumulate total weight of the signature - weight += addrWeight; - - // Write weight and address to image - bytes32 node = _leafForAddressAndWeight(addr, addrWeight); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - if (flag == FLAG_NODE) { - // Read node hash - bytes32 node; - (node, rindex) = _signature.readBytes32(rindex); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - if (flag == FLAG_BRANCH) { - // Enter a branch of the signature merkle tree - uint256 size; - (size, rindex) = _signature.readUint24(rindex); - uint256 nrindex = rindex + size; - - uint256 nweight; - bytes32 node; - (nweight, node) = recoverBranch(_subdigest, _signature[rindex:nrindex]); - - weight += nweight; - root = LibOptim.fkeccak256(root, node); - - rindex = nrindex; - continue; - } - - if (flag == FLAG_NESTED) { - // Enter a branch of the signature merkle tree - // but with an internal threshold and an external fixed weight - uint256 externalWeight; - (externalWeight, rindex) = _signature.readUint8(rindex); - - uint256 internalThreshold; - (internalThreshold, rindex) = _signature.readUint16(rindex); - - uint256 size; - (size, rindex) = _signature.readUint24(rindex); - uint256 nrindex = rindex + size; - - uint256 internalWeight; - bytes32 internalRoot; - (internalWeight, internalRoot) = recoverBranch(_subdigest, _signature[rindex:nrindex]); - rindex = nrindex; - - if (internalWeight >= internalThreshold) { - weight += externalWeight; - } - - bytes32 node = _leafForNested(internalRoot, internalThreshold, externalWeight); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - - continue; - } - - if (flag == FLAG_SUBDIGEST) { - // A hardcoded always accepted digest - // it pushes the weight to the maximum - bytes32 hardcoded; - (hardcoded, rindex) = _signature.readBytes32(rindex); - if (hardcoded == _subdigest) { - weight = type(uint256).max; - } - - bytes32 node = _leafForHardcodedSubdigest(hardcoded); - root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node; - continue; - } - - revert InvalidSignatureFlag(flag); - } - } - } - - /** - * @notice Returns the threshold, weight, root, and checkpoint of a signature. - * @dev To verify the signature, the weight must be greater than or equal to the threshold, and the root - * must match the expected `imageHash` of the wallet. - * - * @param _subdigest The digest to verify the signature against. - * @param _signature The signature to recover. - * @return threshold The minimum weight required for the signature to be valid. - * @return weight The total weight of the recovered signatures. - * @return imageHash The root hash of the recovered configuration - * @return checkpoint The checkpoint of the signature. - */ - function recover(bytes32 _subdigest, bytes calldata _signature) - internal - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint) - { - unchecked { - (weight, imageHash) = recoverBranch(_subdigest, _signature[6:]); - - // Threshold & checkpoint are the top nodes - // (but they are first on the signature) - threshold = LibBytes.readFirstUint16(_signature); - checkpoint = LibBytes.readUint32(_signature, 2); - - imageHash = LibOptim.fkeccak256(imageHash, bytes32(threshold)); - imageHash = LibOptim.fkeccak256(imageHash, bytes32(checkpoint)); - } - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol b/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol deleted file mode 100644 index cfa2486c8a..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol +++ /dev/null @@ -1,112 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./SequenceBaseSig.sol"; - -import "../../interfaces/IModuleAuth.sol"; - -import "../../ModuleSelfAuth.sol"; -import "../../ModuleStorage.sol"; - -import "../../../../utils/LibBytesPointer.sol"; -import "../../../../utils/LibOptim.sol"; - -/** - * @title Sequence chained auth recovery submodule - * @author Agustin Aguilar (aa@horizon.io) - * @notice Defines Sequence signatures that work by delegating control to new configurations. - * @dev The delegations can be chained together, the first signature is the one that is used to validate - * the message, the last signature must match the current on-chain configuration of the wallet. - */ -abstract contract SequenceChainedSig is IModuleAuth, ModuleSelfAuth { - using LibBytesPointer for bytes; - - bytes32 public constant SET_IMAGE_HASH_TYPE_HASH = keccak256("SetImageHash(bytes32 imageHash)"); - - error LowWeightChainedSignature(bytes _signature, uint256 threshold, uint256 _weight); - error WrongChainedCheckpointOrder(uint256 _current, uint256 _prev); - - /** - * @notice Defined the special token that must be signed to delegate control to a new configuration. - * @param _imageHash The hash of the new configuration. - * @return bytes32 The message hash to be signed. - */ - function _hashSetImageHashStruct(bytes32 _imageHash) internal pure returns (bytes32) { - return LibOptim.fkeccak256(SET_IMAGE_HASH_TYPE_HASH, _imageHash); - } - - /** - * @notice Returns the threshold, weight, root, and checkpoint of a (chained) signature. - * - * @dev This method return the `threshold`, `weight` and `imageHash` of the last signature in the chain. - * Intermediate signatures are validated directly in this method. The `subdigest` is the one of the - * first signature in the chain (since that's the one that is used to validate the message). - * - * @param _digest The digest to recover the signature from. - * @param _signature The signature to recover. - * @return threshold The threshold of the (last) signature. - * @return weight The weight of the (last) signature. - * @return imageHash The image hash of the (last) signature. - * @return subdigest The subdigest of the (first) signature in the chain. - * @return checkpoint The checkpoint of the (last) signature. - */ - function chainedRecover(bytes32 _digest, bytes calldata _signature) - internal - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 checkpoint) - { - uint256 rindex = 1; - uint256 sigSize; - - // - // First signature out of the loop - // - - // First uint24 is the size of the signature - (sigSize, rindex) = _signature.readUint24(rindex); - uint256 nrindex = sigSize + rindex; - - (threshold, weight, imageHash, subdigest, checkpoint) = signatureRecovery(_digest, _signature[rindex:nrindex]); - - if (weight < threshold) { - revert LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight); - } - - rindex = nrindex; - - // The following signatures are handled by this loop. - // This is done this way because the first signature does not have a - // checkpoint to be validated against. - while (rindex < _signature.length) { - // First uint24 is the size of the signature - (sigSize, rindex) = _signature.readUint24(rindex); - nrindex = sigSize + rindex; - - uint256 nextCheckpoint; - - ( - threshold, - weight, - imageHash,, - // Do not change the subdigest; - // it should remain that of the first signature. - nextCheckpoint - ) = signatureRecovery(_hashSetImageHashStruct(imageHash), _signature[rindex:nrindex]); - - // Validate signature - if (weight < threshold) { - revert LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight); - } - - // Checkpoints must be provided in descending order - // since the first signature is the one that is used to validate the message - // and the last signature is the one that is used to validate the current configuration - if (nextCheckpoint >= checkpoint) { - revert WrongChainedCheckpointOrder(nextCheckpoint, checkpoint); - } - - checkpoint = nextCheckpoint; - rindex = nrindex; - } - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol b/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol deleted file mode 100644 index a4704cac0b..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./SequenceBaseSig.sol"; - -library SequenceDynamicSig { - /** - * @notice Recover a "dynamically encoded" Sequence signature. - * @dev The Signature is stripped of the first byte, which is the encoding flag. - * - * @param _subdigest The digest of the signature. - * @param _signature The Sequence signature. - * @return threshold The threshold weight required to validate the signature. - * @return weight The weight of the signature. - * @return imageHash The hash of the recovered configuration. - * @return checkpoint The checkpoint of the configuration. - */ - function recover(bytes32 _subdigest, bytes calldata _signature) - internal - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint) - { - return SequenceBaseSig.recover(_subdigest, _signature[1:]); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol b/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol deleted file mode 100644 index d8fd0a9dc1..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -library SequenceNoChainIdSig { - /** - * @notice Computes a subdigest for a Sequence signature that works on all chains. - * @dev The subdigest is computed by removing the chain ID from the digest (using 0 instead). - * @param _digest The digest of the chain of signatures. - * @return bytes32 The subdigest with no chain ID. - */ - function subdigest(bytes32 _digest) internal view returns (bytes32) { - return keccak256(abi.encodePacked("\x19\x01", uint256(0), address(this), _digest)); - } -} diff --git a/packages/wallet-contracts/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol b/packages/wallet-contracts/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol deleted file mode 100644 index 6ecee90e8b..0000000000 --- a/packages/wallet-contracts/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -library SubModuleNonce { - // Nonce schema - // - // - space[160]:nonce[96] - // - uint256 internal constant NONCE_BITS = 96; - bytes32 internal constant NONCE_MASK = bytes32(uint256(type(uint96).max)); - - /** - * @notice Decodes a raw nonce - * @dev Schema: space[160]:type[96] - * @param _rawNonce Nonce to be decoded - * @return _space The nonce space of the raw nonce - * @return _nonce The nonce of the raw nonce - */ - function decodeNonce(uint256 _rawNonce) internal pure returns (uint256 _space, uint256 _nonce) { - unchecked { - // Decode nonce - _space = _rawNonce >> NONCE_BITS; - _nonce = uint256(bytes32(_rawNonce) & NONCE_MASK); - } - } - - function encodeNonce(uint256 _space, uint256 _nonce) internal pure returns (uint256) { - unchecked { - // Combine space and nonce - return (_space << NONCE_BITS) | _nonce; - } - } -} diff --git a/packages/wallet-contracts/contracts/modules/utils/GasEstimator.sol b/packages/wallet-contracts/contracts/modules/utils/GasEstimator.sol deleted file mode 100644 index fe1b1c5ef9..0000000000 --- a/packages/wallet-contracts/contracts/modules/utils/GasEstimator.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -contract GasEstimator { - function estimate(address _to, bytes calldata _data) - external - returns (bool success, bytes memory result, uint256 gas) - { - // solhint-disable - uint256 initialGas = gasleft(); - (success, result) = _to.call(_data); - gas = initialGas - gasleft(); - // solhint-enable - } -} diff --git a/packages/wallet-contracts/contracts/modules/utils/MultiCallUtils.sol b/packages/wallet-contracts/contracts/modules/utils/MultiCallUtils.sol deleted file mode 100644 index 7ad33e6c77..0000000000 --- a/packages/wallet-contracts/contracts/modules/utils/MultiCallUtils.sol +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../commons/interfaces/IModuleCalls.sol"; - -contract MultiCallUtils { - // Errors - error DelegateCallNotAllowed(uint256 _index); - error CallReverted(uint256 _index, bytes _result); - - function multiCall(IModuleCalls.Transaction[] memory _txs) - public - payable - returns (bool[] memory _successes, bytes[] memory _results) - { - _successes = new bool[](_txs.length); - _results = new bytes[](_txs.length); - - for (uint256 i = 0; i < _txs.length; i++) { - IModuleCalls.Transaction memory transaction = _txs[i]; - - if (transaction.delegateCall) revert DelegateCallNotAllowed(i); - if (gasleft() < transaction.gasLimit) revert IModuleCalls.NotEnoughGas(i, transaction.gasLimit, gasleft()); - - // solhint-disable - (_successes[i], _results[i]) = transaction.target - .call{ - value: transaction.value, gas: transaction.gasLimit == 0 ? gasleft() : transaction.gasLimit - }(transaction.data); - // solhint-enable - - if (!_successes[i] && _txs[i].revertOnError) revert CallReverted(i, _results[i]); - } - } - - // /// - // Globals - // /// - - function callBlockhash(uint256 _i) external view returns (bytes32) { - return blockhash(_i); - } - - function callCoinbase() external view returns (address) { - return block.coinbase; - } - - function callDifficulty() external view returns (uint256) { - return block.prevrandao; // old block.difficulty - } - - function callPrevrandao() external view returns (uint256) { - return block.prevrandao; - } - - function callGasLimit() external view returns (uint256) { - return block.gaslimit; - } - - function callBlockNumber() external view returns (uint256) { - return block.number; - } - - function callTimestamp() external view returns (uint256) { - return block.timestamp; - } - - function callGasLeft() external view returns (uint256) { - return gasleft(); - } - - function callGasPrice() external view returns (uint256) { - return tx.gasprice; - } - - function callOrigin() external view returns (address) { - return tx.origin; - } - - function callBalanceOf(address _addr) external view returns (uint256) { - return _addr.balance; - } - - function callCodeSize(address _addr) external view returns (uint256 size) { - assembly { size := extcodesize(_addr) } - } - - function callCode(address _addr) external view returns (bytes memory code) { - assembly { - let size := extcodesize(_addr) - code := mload(0x40) - mstore(0x40, add(code, and(add(add(size, 0x20), 0x1f), not(0x1f)))) - mstore(code, size) - extcodecopy(_addr, add(code, 0x20), 0, size) - } - } - - function callCodeHash(address _addr) external view returns (bytes32 codeHash) { - assembly { codeHash := extcodehash(_addr) } - } - - function callChainId() external view returns (uint256 id) { - assembly { id := chainid() } - } -} diff --git a/packages/wallet-contracts/contracts/modules/utils/RequireUtils.sol b/packages/wallet-contracts/contracts/modules/utils/RequireUtils.sol deleted file mode 100644 index e89f773217..0000000000 --- a/packages/wallet-contracts/contracts/modules/utils/RequireUtils.sol +++ /dev/null @@ -1,112 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../commons/ModuleNonce.sol"; -import "../commons/submodules/nonce/SubModuleNonce.sol"; - -import "../../interfaces/tokens/IERC20.sol"; -import "../../interfaces/tokens/IERC721.sol"; -import "../../interfaces/tokens/IERC1155.sol"; - -contract RequireUtils { - /** - * @notice Validates that a given expiration hasn't expired - * @dev Used as an optional transaction on a Sequence batch, to create expirable transactions. - * - * @param _expiration Expiration to check - */ - function requireNonExpired(uint256 _expiration) external view { - require(block.timestamp < _expiration, "RequireUtils#requireNonExpired: EXPIRED"); - } - - /** - * @notice Validates that a given wallet has reached a given nonce - * @dev Used as an optional transaction on a Sequence batch, to define transaction execution order - * - * @param _wallet Sequence wallet - * @param _nonce Required nonce - */ - function requireMinNonce(address _wallet, uint256 _nonce) external view { - (uint256 space, uint256 nonce) = SubModuleNonce.decodeNonce(_nonce); - uint256 currentNonce = ModuleNonce(_wallet).readNonce(space); - require(currentNonce >= nonce, "RequireUtils#requireMinNonce: NONCE_BELOW_REQUIRED"); - } - - /** - * @notice Validates that a wallet has a minimum ERC20 token balance - * @param _token ERC20 token address - * @param _wallet Sequence wallet - * @param _minBalance Minimum required balance - */ - function requireMinERC20Balance(address _token, address _wallet, uint256 _minBalance) external view { - uint256 balance = IERC20(_token).balanceOf(_wallet); - require(balance >= _minBalance, "RequireUtils#requireMinERC20Balance: BALANCE_TOO_LOW"); - } - - /** - * @notice Validates that a wallet has a minimum ERC20 allowance for a spender - * @param _token ERC20 token address - * @param _owner Sequence wallet - * @param _spender Address allowed to spend the tokens - * @param _minAllowance Minimum required allowance - */ - function requireMinERC20Allowance(address _token, address _owner, address _spender, uint256 _minAllowance) - external - view - { - uint256 allowance = IERC20(_token).allowance(_owner, _spender); - require(allowance >= _minAllowance, "RequireUtils#requireMinERC20Allowance: ALLOWANCE_TOO_LOW"); - } - - /** - * @notice Validates that a wallet owns a specific ERC721 token - * @param _token ERC721 token address - * @param _wallet Sequence wallet - * @param _tokenId Token ID to check for ownership - */ - function requireERC721Ownership(address _token, address _wallet, uint256 _tokenId) external view { - address owner = IERC721(_token).ownerOf(_tokenId); - require(owner == _wallet, "RequireUtils#requireERC721Ownership: NOT_OWNER"); - } - - /** - * @notice Validates that an ERC721 token is approved for a specific spender - * @param _token ERC721 token address - * @param _owner Sequence wallet - * @param _spender Address that should have approval - * @param _tokenId Token ID to check for approval - */ - function requireERC721Approval(address _token, address _owner, address _spender, uint256 _tokenId) external view { - address approved = IERC721(_token).getApproved(_tokenId); - require( - approved == _spender || IERC721(_token).isApprovedForAll(_owner, _spender), - "RequireUtils#requireERC721Approval: NOT_APPROVED" - ); - } - - /** - * @notice Validates that a wallet has a minimum balance of an ERC1155 token - * @param _token ERC1155 token address - * @param _wallet Sequence wallet - * @param _tokenId Token ID to check - * @param _minBalance Minimum required balance - */ - function requireMinERC1155Balance(address _token, address _wallet, uint256 _tokenId, uint256 _minBalance) - external - view - { - uint256 balance = IERC1155(_token).balanceOf(_wallet, _tokenId); - require(balance >= _minBalance, "RequireUtils#requireMinERC1155Balance: BALANCE_TOO_LOW"); - } - - /** - * @notice Validates that an ERC1155 token is approved for a specific operator - * @param _token ERC1155 token address - * @param _owner Sequence wallet - * @param _operator Address that should have operator approval - */ - function requireERC1155Approval(address _token, address _owner, address _operator) external view { - bool isApproved = IERC1155(_token).isApprovedForAll(_owner, _operator); - require(isApproved, "RequireUtils#requireERC1155Approval: NOT_APPROVED"); - } -} diff --git a/packages/wallet-contracts/contracts/modules/utils/SequenceUtils.sol b/packages/wallet-contracts/contracts/modules/utils/SequenceUtils.sol deleted file mode 100644 index 6e9f294fa8..0000000000 --- a/packages/wallet-contracts/contracts/modules/utils/SequenceUtils.sol +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./MultiCallUtils.sol"; -import "./RequireUtils.sol"; - -contract SequenceUtils is MultiCallUtils, RequireUtils {} diff --git a/packages/wallet-contracts/contracts/trust/Trust.sol b/packages/wallet-contracts/contracts/trust/Trust.sol deleted file mode 100644 index 3bdfc359af..0000000000 --- a/packages/wallet-contracts/contracts/trust/Trust.sol +++ /dev/null @@ -1,160 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../interfaces/IERC1271Wallet.sol"; -import "../utils/SignatureValidator.sol"; - -function absDiff(uint256 a, uint256 b) pure returns (bool, uint256) { - if (a > b) { - return (true, a - b); - } - - return (false, b - a); -} - -contract Trust is IERC1271Wallet { - error UnlockInThePast(uint256 _unlocksAt, uint256 _elapsed); - error UnlockTooEarly(uint256 _unlocksAt, uint256 _diff); - - error NotOwner(address _sender); - error NotUnlocked(uint256 _unlocksAt); - error FailedTransaction(address payable _to, uint256 _value, bytes _data, bytes _result); - - error EmptySignature(); - error InvalidSignatureFlag(bytes _signature, bytes1 _flag); - error InvalidSignature(bytes32 _hash, bytes32 _rehash, address _signer, bytes _signature); - - event SetUnlocksAt(uint256 _unlocksAt); - event SentTransaction(address payable _to, uint256 _value, bytes _data, bytes _result); - - address public immutable owner; - address public immutable beneficiary; - uint256 public immutable duration; - - uint256 public unlocksAt = type(uint256).max; - - constructor(address _owner, address _beneficiary, uint256 _duration) { - owner = _owner; - beneficiary = _beneficiary; - duration = _duration; - } - - modifier onlyAllowed() { - if (msg.sender != owner) { - if (msg.sender != beneficiary) { - revert NotOwner(msg.sender); - } - - if (isLocked()) { - revert NotUnlocked(unlocksAt); - } - } - - _; - } - - modifier onlyMember() { - if (msg.sender != owner && msg.sender != beneficiary) { - revert NotOwner(msg.sender); - } - - _; - } - - function isLocked() public view returns (bool) { - return block.timestamp < unlocksAt; - } - - function setUnlocksAt(uint256 _unlocksAt) external onlyMember { - // Diff between the current time and the unlock time must be - // greater than the duration of the trust - (bool isPast, uint256 elapsed) = absDiff(block.timestamp, _unlocksAt); - if (isPast) { - revert UnlockInThePast(_unlocksAt, elapsed); - } - - if (elapsed < duration) { - revert UnlockTooEarly(_unlocksAt, elapsed); - } - - emit SetUnlocksAt(_unlocksAt); - unlocksAt = _unlocksAt; - } - - function sendTransaction(address payable _to, uint256 _value, bytes calldata _data) - external - onlyAllowed - returns (bytes memory) - { - (bool success, bytes memory result) = _to.call{value: _value}(_data); - - if (!success) { - revert FailedTransaction(_to, _value, _data, result); - } - - emit SentTransaction(_to, _value, _data, result); - return result; - } - - bytes4 internal constant SELECTOR_ERC1271_BYTES_BYTES = 0x20c13b0b; - bytes4 internal constant SELECTOR_ERC1271_BYTES32_BYTES = 0x1626ba7e; - - function isValidSignature(bytes calldata _data, bytes calldata _signature) external view returns (bytes4) { - bytes4 res = Trust(payable(address((this)))).isValidSignature(keccak256(_data), _signature); - - assert(res == SELECTOR_ERC1271_BYTES32_BYTES); - return SELECTOR_ERC1271_BYTES_BYTES; - } - - function isValidSignature(bytes32 _hash, bytes calldata _signature) external view returns (bytes4) { - if (_signature.length == 0) { - revert EmptySignature(); - } - - // The last byte determines how the signature is going to be interpreted - // 0x00 -> Signed by the owner - // 0x01 -> Signed by the beneficiary - // 0x02 -> Signed by the owner for any network - // 0x03 -> Signed by the beneficiary for any network - address signer; - uint256 chainId; - - { - bytes1 flag = _signature[_signature.length - 1]; - - if (flag == 0x00) { - signer = owner; - chainId = block.chainid; - } else if (flag == 0x01) { - signer = beneficiary; - chainId = block.chainid; - } else if (flag == 0x02) { - signer = owner; - chainId = 0; - } else if (flag == 0x03) { - signer = beneficiary; - chainId = 0; - } else { - revert InvalidSignatureFlag(_signature, flag); - } - } - - if (signer != owner && isLocked()) { - revert NotUnlocked(unlocksAt); - } - - // Re-hash the hash adding the address of the trust - // otherwise the signature will be valid for any trust - bytes32 rehash = keccak256(abi.encode(address(this), _hash, chainId)); - - // Validate the signature - if (!SignatureValidator.isValidSignature(rehash, signer, _signature[0:_signature.length - 1])) { - revert InvalidSignature(_hash, rehash, signer, _signature[0:_signature.length - 1]); - } - - return SELECTOR_ERC1271_BYTES32_BYTES; - } - - receive() external payable {} - fallback() external payable {} -} diff --git a/packages/wallet-contracts/contracts/trust/TrustFactory.sol b/packages/wallet-contracts/contracts/trust/TrustFactory.sol deleted file mode 100644 index 1dd900efcb..0000000000 --- a/packages/wallet-contracts/contracts/trust/TrustFactory.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "./Trust.sol"; - -contract TrustFactory { - function trustCreationCode() external pure returns (bytes memory) { - return type(Trust).creationCode; - } - - function addressOf(address _owner, address _beneficiary, uint256 _duration) external view returns (address) { - return address( - uint160( - uint256( - keccak256( - abi.encodePacked( - bytes1(0xff), - address(this), - bytes32(0), - keccak256( - abi.encodePacked(type(Trust).creationCode, abi.encode(_owner, _beneficiary, _duration)) - ) - ) - ) - ) - ) - ); - } - - function deploy(address _owner, address _beneficiary, uint256 _duration) external returns (Trust) { - return new Trust{salt: bytes32(0)}(_owner, _beneficiary, _duration); - } -} diff --git a/packages/wallet-contracts/contracts/utils/LibAddress.sol b/packages/wallet-contracts/contracts/utils/LibAddress.sol deleted file mode 100644 index 9095dc64ad..0000000000 --- a/packages/wallet-contracts/contracts/utils/LibAddress.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -library LibAddress { - /** - * @notice Will return true if provided address is a contract - * @param account Address to verify if contract or not - * @dev This contract will return false if called within the constructor of - * a contract's deployment, as the code is not yet stored on-chain. - */ - function isContract(address account) internal view returns (bool) { - uint256 csize; - // solhint-disable-next-line no-inline-assembly - assembly { csize := extcodesize(account) } - return csize != 0; - } -} diff --git a/packages/wallet-contracts/contracts/utils/LibBytes.sol b/packages/wallet-contracts/contracts/utils/LibBytes.sol deleted file mode 100644 index 20860e754c..0000000000 --- a/packages/wallet-contracts/contracts/utils/LibBytes.sol +++ /dev/null @@ -1,75 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -/** - * @title Library for reading data from bytes arrays - * @author Agustin Aguilar (aa@horizon.io) - * @notice This library contains functions for reading data from bytes arrays. - * - * @dev These functions do not check if the input index is within the bounds of the data array. - * Reading out of bounds may return dirty values. - */ -library LibBytes { - /** - * @notice Returns the bytes32 value at the given index in the input data. - * @param data The input data. - * @param index The index of the value to retrieve. - * @return a The bytes32 value at the given index. - */ - function readBytes32(bytes calldata data, uint256 index) internal pure returns (bytes32 a) { - assembly { - a := calldataload(add(data.offset, index)) - } - } - - /** - * @notice Returns the uint8 value at the given index in the input data. - * @param data The input data. - * @param index The index of the value to retrieve. - * @return a The uint8 value at the given index. - */ - function readUint8(bytes calldata data, uint256 index) internal pure returns (uint8 a) { - assembly { - let word := calldataload(add(index, data.offset)) - a := shr(248, word) - } - } - - /** - * @notice Returns the first uint16 value in the input data. - * @param data The input data. - * @return a The first uint16 value in the input data. - */ - function readFirstUint16(bytes calldata data) internal pure returns (uint16 a) { - assembly { - let word := calldataload(data.offset) - a := shr(240, word) - } - } - - /** - * @notice Returns the uint32 value at the given index in the input data. - * @param data The input data. - * @param index The index of the value to retrieve. - * @return a The uint32 value at the given index. - */ - function readUint32(bytes calldata data, uint256 index) internal pure returns (uint32 a) { - assembly { - let word := calldataload(add(index, data.offset)) - a := shr(224, word) - } - } - - function readMBytes4(bytes memory data, uint256 index) internal pure returns (bytes4 a) { - assembly { - let word := mload(add(add(data, 0x20), index)) - a := and(word, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000) - } - } - - function readMBytes32(bytes memory data, uint256 index) internal pure returns (bytes32 a) { - assembly { - a := mload(add(add(data, 0x20), index)) - } - } -} diff --git a/packages/wallet-contracts/contracts/utils/LibBytesPointer.sol b/packages/wallet-contracts/contracts/utils/LibBytesPointer.sol deleted file mode 100644 index 021f9b2496..0000000000 --- a/packages/wallet-contracts/contracts/utils/LibBytesPointer.sol +++ /dev/null @@ -1,150 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -/** - * @title Library for reading data from bytes arrays with a pointer - * @author Agustin Aguilar (aa@horizon.io) - * @notice This library contains functions for reading data from bytes arrays with a pointer. - * - * @dev These functions do not check if the input index is within the bounds of the data array. - * Reading out of bounds may return dirty values. - */ -library LibBytesPointer { - /** - * @dev Returns the first uint16 value in the input data and updates the pointer. - * @param _data The input data. - * @return a The first uint16 value. - * @return newPointer The new pointer. - */ - function readFirstUint16(bytes calldata _data) internal pure returns (uint16 a, uint256 newPointer) { - assembly { - let word := calldataload(_data.offset) - a := shr(240, word) - newPointer := 2 - } - } - - /** - * @notice Returns the uint8 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint8 value at the given index. - * @return newPointer The new pointer. - */ - function readUint8(bytes calldata _data, uint256 _index) internal pure returns (uint8 a, uint256 newPointer) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := shr(248, word) - newPointer := add(_index, 1) - } - } - - function readAddress(bytes calldata _data, uint256 _index) internal pure returns (address a, uint256 newPointer) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := and(shr(96, word), 0xffffffffffffffffffffffffffffffffffffffff) - newPointer := add(_index, 20) - } - } - - /** - * @notice Returns the uint8 value and the address at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint8 value at the given index. - * @return b The following address value. - * @return newPointer The new pointer. - */ - function readUint8Address(bytes calldata _data, uint256 _index) - internal - pure - returns (uint8 a, address b, uint256 newPointer) - { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := shr(248, word) - b := and(shr(88, word), 0xffffffffffffffffffffffffffffffffffffffff) - newPointer := add(_index, 21) - } - } - - /** - * @notice Returns the uint16 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint16 value at the given index. - * @return newPointer The new pointer. - */ - function readUint16(bytes calldata _data, uint256 _index) internal pure returns (uint16 a, uint256 newPointer) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := and(shr(240, word), 0xffff) - newPointer := add(_index, 2) - } - } - - function readUintX(bytes calldata _data, uint256 _bytes, uint256 _index) - internal - pure - returns (uint256 a, uint256 newPointer) - { - assembly { - let word := calldataload(add(_index, _data.offset)) - let shift := sub(256, mul(_bytes, 8)) - a := and(shr(shift, word), sub(shl(mul(8, _bytes), 1), 1)) - newPointer := add(_index, _bytes) - } - } - - /** - * @notice Returns the uint24 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint24 value at the given index. - * @return newPointer The new pointer. - */ - function readUint24(bytes calldata _data, uint256 _index) internal pure returns (uint24 a, uint256 newPointer) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := and(shr(232, word), 0xffffff) - newPointer := add(_index, 3) - } - } - - /** - * @notice Returns the uint64 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _index The index of the value to retrieve. - * @return a The uint64 value at the given index. - * @return newPointer The new pointer. - */ - function readUint64(bytes calldata _data, uint256 _index) internal pure returns (uint64 a, uint256 newPointer) { - assembly { - let word := calldataload(add(_index, _data.offset)) - a := and(shr(192, word), 0xffffffffffffffff) - newPointer := add(_index, 8) - } - } - - function readBytes4(bytes calldata _data, uint256 _pointer) internal pure returns (bytes4 a, uint256 newPointer) { - assembly { - a := calldataload(add(_pointer, _data.offset)) - a := and(a, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000) - newPointer := add(_pointer, 4) - } - } - - /** - * @notice Returns the bytes32 value at the given index in the input data and updates the pointer. - * @param _data The input data. - * @param _pointer The index of the value to retrieve. - * @return a The bytes32 value at the given index. - * @return newPointer The new pointer. - */ - function readBytes32(bytes calldata _data, uint256 _pointer) internal pure returns (bytes32 a, uint256 newPointer) { - assembly { - a := calldataload(add(_pointer, _data.offset)) - newPointer := add(_pointer, 32) - } - } -} diff --git a/packages/wallet-contracts/contracts/utils/LibOptim.sol b/packages/wallet-contracts/contracts/utils/LibOptim.sol deleted file mode 100644 index 1a8674083d..0000000000 --- a/packages/wallet-contracts/contracts/utils/LibOptim.sol +++ /dev/null @@ -1,74 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -/** - * @title Library for optimized EVM operations - * @author Agustin Aguilar (aa@horizon.io) - * @notice This library contains functions for optimizing certain EVM operations. - */ -library LibOptim { - /** - * @notice Computes the keccak256 hash of two 32-byte inputs. - * @dev It uses only scratch memory space. - * @param _a The first 32 bytes of the hash. - * @param _b The second 32 bytes of the hash. - * @return c The keccak256 hash of the two 32-byte inputs. - */ - function fkeccak256(bytes32 _a, bytes32 _b) internal pure returns (bytes32 c) { - assembly { - mstore(0, _a) - mstore(32, _b) - c := keccak256(0, 64) - } - } - - /** - * @notice Returns the return data from the last call. - * @return r The return data from the last call. - */ - function returnData() internal pure returns (bytes memory r) { - assembly { - let size := returndatasize() - r := mload(0x40) - let start := add(r, 32) - mstore(0x40, add(start, size)) - mstore(r, size) - returndatacopy(start, 0, size) - } - } - - /** - * @notice Calls another contract with the given parameters. - * @dev This method doesn't increase the memory pointer. - * @param _to The address of the contract to call. - * @param _val The value to send to the contract. - * @param _gas The amount of gas to provide for the call. - * @param _data The data to send to the contract. - * @return r The success status of the call. - */ - function call(address _to, uint256 _val, uint256 _gas, bytes calldata _data) internal returns (bool r) { - assembly { - let tmp := mload(0x40) - calldatacopy(tmp, _data.offset, _data.length) - - r := call(_gas, _to, _val, tmp, _data.length, 0, 0) - } - } - - /** - * @notice Calls another contract with the given parameters, using delegatecall. - * @dev This method doesn't increase the memory pointer. - * @param _to The address of the contract to call. - * @param _gas The amount of gas to provide for the call. - * @param _data The data to send to the contract. - * @return r The success status of the call. - */ - function delegatecall(address _to, uint256 _gas, bytes calldata _data) internal returns (bool r) { - assembly { - let tmp := mload(0x40) - calldatacopy(tmp, _data.offset, _data.length) - - r := delegatecall(_gas, _to, tmp, _data.length, 0, 0) - } - } -} diff --git a/packages/wallet-contracts/contracts/utils/LibString.sol b/packages/wallet-contracts/contracts/utils/LibString.sol deleted file mode 100644 index be352c5adf..0000000000 --- a/packages/wallet-contracts/contracts/utils/LibString.sol +++ /dev/null @@ -1,87 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -/** - * @title Library for string manipulation operations - * @notice This library contains functions for manipulating strings in Solidity. - */ -library LibString { - bytes private constant ALPHABET_HEX_16 = "0123456789abcdef"; - bytes private constant ALPHABET_32 = "abcdefghijklmnopqrstuvwxyz234567"; - - /** - * @notice Prefixes a hexadecimal string with "0x". - * @param _hex The hexadecimal string to prefix. - * @return The prefixed hexadecimal string. - */ - function prefixHexadecimal(string memory _hex) internal pure returns (string memory) { - return string(abi.encodePacked("0x", _hex)); - } - - /** - * @notice Prefixes a base32 string with "b". - * @param _base32 The base32 string to prefix. - * @return The prefixed base32 string. - */ - function prefixBase32(string memory _base32) internal pure returns (string memory) { - return string(abi.encodePacked("b", _base32)); - } - - /** - * @notice Converts a byte array to a hexadecimal string. - * @param _bytes The byte array to convert. - * @return The resulting hexadecimal string. - */ - function bytesToHexadecimal(bytes memory _bytes) internal pure returns (string memory) { - uint256 bytesLength = _bytes.length; - bytes memory bytesArray = new bytes(bytesLength << 1); - - unchecked { - for (uint256 i = 0; i < bytesLength; i++) { - uint256 word = uint8(_bytes[i]); - uint256 ib = i << 1; - bytesArray[ib] = bytes1(ALPHABET_HEX_16[word >> 4]); - bytesArray[ib + 1] = bytes1(ALPHABET_HEX_16[word & 0xf]); - } - } - - return string(bytesArray); - } - - /** - * @notice Converts a byte array to a base32 string. - * @param _bytes The byte array to convert. - * @return The resulting base32 string. - */ - function bytesToBase32(bytes memory _bytes) internal pure returns (string memory) { - uint256 bytesLength = _bytes.length; - - uint256 t1 = bytesLength << 3; - - unchecked { - // base32-encoded length = ceil(# of bits / 5) - bytes memory bytesArray = new bytes((t1 + 4) / 5); - - uint256 bits = 0; - uint256 buffer = 0; - uint256 pointer = 0; - - for (uint256 i = 0; i < bytesLength; i++) { - buffer = (buffer << 8) | uint8(_bytes[i]); - bits += 8; - - while (bits >= 5) { - bits -= 5; - bytesArray[pointer] = bytes1(ALPHABET_32[(buffer >> bits) & 0x1f]); - pointer++; - } - } - - if (bits > 0) { - bytesArray[pointer] = bytes1(ALPHABET_32[(buffer << (5 - bits)) & 0x1f]); - } - - return string(bytesArray); - } - } -} diff --git a/packages/wallet-contracts/contracts/utils/SignatureValidator.sol b/packages/wallet-contracts/contracts/utils/SignatureValidator.sol deleted file mode 100644 index 5af4e5bacb..0000000000 --- a/packages/wallet-contracts/contracts/utils/SignatureValidator.sol +++ /dev/null @@ -1,127 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "../interfaces/IERC1271Wallet.sol"; - -import "./LibBytes.sol"; - -/** - * @dev Contains logic for signature validation. - * Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md) - * Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/ - */ -library SignatureValidator { - // Errors - error InvalidSignatureLength(bytes _signature); - error EmptySignature(); - error InvalidSValue(bytes _signature, bytes32 _s); - error InvalidVValue(bytes _signature, uint256 _v); - error UnsupportedSignatureType(bytes _signature, uint256 _type, bool _recoverMode); - error SignerIsAddress0(bytes _signature); - - using LibBytes for bytes; - - /***********************************| - | Variables | - |__________________________________*/ - - // bytes4(keccak256("isValidSignature(bytes,bytes)")) - bytes4 internal constant ERC1271_MAGICVALUE = 0x20c13b0b; - - // bytes4(keccak256("isValidSignature(bytes32,bytes)")) - bytes4 internal constant ERC1271_MAGICVALUE_BYTES32 = 0x1626ba7e; - - // Allowed signature types. - uint256 private constant SIG_TYPE_EIP712 = 1; - uint256 private constant SIG_TYPE_ETH_SIGN = 2; - uint256 private constant SIG_TYPE_WALLET_BYTES32 = 3; - - /***********************************| - | Signature Functions | - |__________________________________*/ - - /** - * @notice Recover the signer of hash, assuming it's an EOA account - * @dev Only for SignatureType.EIP712 and SignatureType.EthSign signatures - * @param _hash Hash that was signed - * encoded as (bytes32 r, bytes32 s, uint8 v, ... , SignatureType sigType) - */ - function recoverSigner(bytes32 _hash, bytes calldata _signature) internal pure returns (address signer) { - if (_signature.length != 66) revert InvalidSignatureLength(_signature); - uint256 signatureType = _signature.readUint8(_signature.length - 1); - - // Variables are not scoped in Solidity. - uint8 v = _signature.readUint8(64); - bytes32 r = _signature.readBytes32(0); - bytes32 s = _signature.readBytes32(32); - - // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature - // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines - // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most - // signatures from current libraries generate a unique signature with an s-value in the lower half order. - // - // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value - // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or - // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept - // these malleable signatures as well. - // - // Source OpenZeppelin - // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/cryptography/ECDSA.sol - - if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { - revert InvalidSValue(_signature, s); - } - - if (v != 27 && v != 28) { - revert InvalidVValue(_signature, v); - } - - // Signature using EIP712 - if (signatureType == SIG_TYPE_EIP712) { - signer = ecrecover(_hash, v, r, s); - - // Signed using web3.eth_sign() or Ethers wallet.signMessage() - } else if (signatureType == SIG_TYPE_ETH_SIGN) { - signer = ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash)), v, r, s); - } else { - // We cannot recover the signer for any other signature type. - revert UnsupportedSignatureType(_signature, signatureType, true); - } - - // Prevent signer from being 0x0 - if (signer == address(0x0)) revert SignerIsAddress0(_signature); - - return signer; - } - - /** - * @notice Returns true if the provided signature is valid for the given signer. - * @dev Supports SignatureType.EIP712, SignatureType.EthSign, and ERC1271 signatures - * @param _hash Hash that was signed - * @param _signer Address of the signer candidate - * @param _signature Signature byte array - */ - function isValidSignature(bytes32 _hash, address _signer, bytes calldata _signature) - internal - view - returns (bool valid) - { - if (_signature.length == 0) { - revert EmptySignature(); - } - - uint256 signatureType = uint8(_signature[_signature.length - 1]); - if (signatureType == SIG_TYPE_EIP712 || signatureType == SIG_TYPE_ETH_SIGN) { - // Recover signer and compare with provided - valid = recoverSigner(_hash, _signature) == _signer; - } else if (signatureType == SIG_TYPE_WALLET_BYTES32) { - // Remove signature type before calling ERC1271, restore after call - valid = ERC1271_MAGICVALUE_BYTES32 - == IERC1271Wallet(_signer).isValidSignature(_hash, _signature[0:_signature.length - 1]); - } else { - // We cannot validate any other signature type. - // We revert because we can say nothing about its validity. - revert UnsupportedSignatureType(_signature, signatureType, false); - } - } -} diff --git a/packages/wallet-contracts/docs/book.css b/packages/wallet-contracts/docs/book.css deleted file mode 100644 index b5ce903f99..0000000000 --- a/packages/wallet-contracts/docs/book.css +++ /dev/null @@ -1,13 +0,0 @@ -table { - margin: 0 auto; - border-collapse: collapse; - width: 100%; -} - -table td:first-child { - width: 15%; -} - -table td:nth-child(2) { - width: 25%; -} \ No newline at end of file diff --git a/packages/wallet-contracts/docs/book.toml b/packages/wallet-contracts/docs/book.toml deleted file mode 100644 index 22d0b1db75..0000000000 --- a/packages/wallet-contracts/docs/book.toml +++ /dev/null @@ -1,13 +0,0 @@ -[book] -src = "src" -title = "" - -[output.html] -no-section-label = true -additional-js = ["solidity.min.js"] -additional-css = ["book.css"] -mathjax-support = true -git-repository-url = "https://github.com/0xsequence/wallet-contracts" - -[output.html.fold] -enable = true diff --git a/packages/wallet-contracts/docs/solidity.min.js b/packages/wallet-contracts/docs/solidity.min.js deleted file mode 100644 index 1924932919..0000000000 --- a/packages/wallet-contracts/docs/solidity.min.js +++ /dev/null @@ -1,74 +0,0 @@ -hljs.registerLanguage("solidity",(()=>{"use strict";function e(){try{return!0 -}catch(e){return!1}} -var a=/-?(\b0[xX]([a-fA-F0-9]_?)*[a-fA-F0-9]|(\b[1-9](_?\d)*(\.((\d_?)*\d)?)?|\.\d(_?\d)*)([eE][-+]?\d(_?\d)*)?|\b0)(?!\w|\$)/ -;e()&&(a=a.source.replace(/\\b/g,"(?{ -var a=r(e),o=l(e),c=/[A-Za-z_$][A-Za-z_$0-9.]*/,d=e.inherit(e.TITLE_MODE,{ -begin:/[A-Za-z$_][0-9A-Za-z$_]*/,lexemes:c,keywords:n}),u={className:"params", -begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,lexemes:c,keywords:n, -contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,o,s]},_={ -className:"operator",begin:/:=|->/};return{keywords:n,lexemes:c, -contains:[a,o,i,t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,_,{ -className:"function",lexemes:c,beginKeywords:"function",end:"{",excludeEnd:!0, -contains:[d,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,_]}]}}, -solAposStringMode:r,solQuoteStringMode:l,HEX_APOS_STRING_MODE:i, -HEX_QUOTE_STRING_MODE:t,SOL_NUMBER:s,isNegativeLookbehindAvailable:e} -;const{baseAssembly:c,solAposStringMode:d,solQuoteStringMode:u,HEX_APOS_STRING_MODE:_,HEX_QUOTE_STRING_MODE:m,SOL_NUMBER:b,isNegativeLookbehindAvailable:E}=o -;return e=>{for(var a=d(e),s=u(e),n=[],i=0;i<32;i++)n[i]=i+1 -;var t=n.map((e=>8*e)),r=[];for(i=0;i<=80;i++)r[i]=i -;var l=n.map((e=>"bytes"+e)).join(" ")+" ",o=t.map((e=>"uint"+e)).join(" ")+" ",g=t.map((e=>"int"+e)).join(" ")+" ",M=[].concat.apply([],t.map((e=>r.map((a=>e+"x"+a))))),p={ -keyword:"var bool string int uint "+g+o+"byte bytes "+l+"fixed ufixed "+M.map((e=>"fixed"+e)).join(" ")+" "+M.map((e=>"ufixed"+e)).join(" ")+" enum struct mapping address new delete if else for while continue break return throw emit try catch revert unchecked _ function modifier event constructor fallback receive error virtual override constant immutable anonymous indexed storage memory calldata external public internal payable pure view private returns import from as using pragma contract interface library is abstract type assembly", -literal:"true false wei gwei szabo finney ether seconds minutes hours days weeks years", -built_in:"self this super selfdestruct suicide now msg block tx abi blockhash gasleft assert require Error Panic sha3 sha256 keccak256 ripemd160 ecrecover addmod mulmod log0 log1 log2 log3 log4" -},O={className:"operator",begin:/[+\-!~*\/%<>&^|=]/ -},C=/[A-Za-z_$][A-Za-z_$0-9]*/,N={className:"params",begin:/\(/,end:/\)/, -excludeBegin:!0,excludeEnd:!0,lexemes:C,keywords:p, -contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,s,b,"self"]},f={ -begin:/\.\s*/,end:/[^A-Za-z0-9$_\.]/,excludeBegin:!0,excludeEnd:!0,keywords:{ -built_in:"gas value selector address length push pop send transfer call callcode delegatecall staticcall balance code codehash wrap unwrap name creationCode runtimeCode interfaceId min max" -},relevance:2},y=e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/, -lexemes:C,keywords:p}),w={className:"built_in", -begin:(E()?"(? 0x18 0x5b 0x5b JUMPDEST 0 rds -0x19 0xf3 0xf3 RETURN -flat deployed code: 0x363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3 -deploy function: -0x00 0x60 0x3a 0x603a PUSH1 0x3a -0x02 0x60 0x0e 0x600e PUSH1 0x0e 0x3a -0x04 0x3d 0x3d RETURNDATASIZE 0 0x0e 0x3a -0x05 0x39 0x39 CODECOPY -0x06 0x60 0x1a 0x601a PUSH1 0x1a -0x08 0x80 0x80 DUP1 0x1a 0x1a -0x09 0x51 0x51 MLOAD imp 0x1a -0x0A 0x30 0x30 ADDRESS addr imp 0x1a -0x0B 0x55 0x55 SSTORE 0x1a -0x0C 0x3d 0x3d RETURNDATASIZE 0 0x1a -0x0D 0xf3 0xf3 RETURN -[...deployed code] -flat deploy function: 0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3 - - -## State Variables -### creationCode - -```solidity -bytes internal constant creationCode = - hex"603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3" -``` - - diff --git a/packages/wallet-contracts/docs/src/contracts/hooks/README.md b/packages/wallet-contracts/docs/src/contracts/hooks/README.md deleted file mode 100644 index 388d4a0a5b..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/hooks/README.md +++ /dev/null @@ -1,5 +0,0 @@ - - -# Contents -- [interfaces](/contracts/hooks/interfaces) -- [WalletProxyHook](WalletProxyHook.sol/contract.WalletProxyHook.md) diff --git a/packages/wallet-contracts/docs/src/contracts/hooks/WalletProxyHook.sol/contract.WalletProxyHook.md b/packages/wallet-contracts/docs/src/contracts/hooks/WalletProxyHook.sol/contract.WalletProxyHook.md deleted file mode 100644 index 070736509b..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/hooks/WalletProxyHook.sol/contract.WalletProxyHook.md +++ /dev/null @@ -1,15 +0,0 @@ -# WalletProxyHook -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/hooks/WalletProxyHook.sol) - -**Inherits:** -[IWalletProxy](/home/dargon789/wallet-contracts/docs/src/contracts/hooks/interfaces/IWalletProxy.sol/interface.IWalletProxy.md), [Implementation](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/Implementation.sol/contract.Implementation.md) - - -## Functions -### PROXY_getImplementation - - -```solidity -function PROXY_getImplementation() public view returns (address); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/hooks/interfaces/IWalletProxy.sol/interface.IWalletProxy.md b/packages/wallet-contracts/docs/src/contracts/hooks/interfaces/IWalletProxy.sol/interface.IWalletProxy.md deleted file mode 100644 index 46775f431d..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/hooks/interfaces/IWalletProxy.sol/interface.IWalletProxy.md +++ /dev/null @@ -1,14 +0,0 @@ -# IWalletProxy -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/hooks/interfaces/IWalletProxy.sol) - -Interface for Passport Wallet's proxy contract. - - -## Functions -### PROXY_getImplementation - - -```solidity -function PROXY_getImplementation() external view returns (address); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/hooks/interfaces/README.md b/packages/wallet-contracts/docs/src/contracts/hooks/interfaces/README.md deleted file mode 100644 index d294d7392c..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/hooks/interfaces/README.md +++ /dev/null @@ -1,4 +0,0 @@ - - -# Contents -- [IWalletProxy](IWalletProxy.sol/interface.IWalletProxy.md) diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/IERC1271Wallet.sol/interface.IERC1271Wallet.md b/packages/wallet-contracts/docs/src/contracts/interfaces/IERC1271Wallet.sol/interface.IERC1271Wallet.md deleted file mode 100644 index 90fe5b6c0b..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/IERC1271Wallet.sol/interface.IERC1271Wallet.md +++ /dev/null @@ -1,57 +0,0 @@ -# IERC1271Wallet -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/interfaces/IERC1271Wallet.sol) - - -## Functions -### isValidSignature - -Verifies whether the provided signature is valid with respect to the provided data - -MUST return the correct magic value if the signature provided is valid for the provided data -> The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)") -> This function MAY modify Ethereum's state - - -```solidity -function isValidSignature(bytes calldata _data, bytes calldata _signature) external view returns (bytes4 magicValue); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`| Arbitrary length data signed on the behalf of address(this)| -|`_signature`|`bytes`| Signature byte array associated with _data| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`magicValue`|`bytes4`|Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise| - - -### isValidSignature - -Verifies whether the provided signature is valid with respect to the provided hash - -MUST return the correct magic value if the signature provided is valid for the provided hash -> The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)") -> This function MAY modify Ethereum's state - - -```solidity -function isValidSignature(bytes32 _hash, bytes calldata _signature) external view returns (bytes4 magicValue); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_hash`|`bytes32`| keccak256 hash that was signed| -|`_signature`|`bytes`| Signature byte array associated with _data| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`magicValue`|`bytes4`|Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise| - - diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/README.md b/packages/wallet-contracts/docs/src/contracts/interfaces/README.md deleted file mode 100644 index 482732f11e..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/README.md +++ /dev/null @@ -1,6 +0,0 @@ - - -# Contents -- [receivers](/contracts/interfaces/receivers) -- [tokens](/contracts/interfaces/tokens) -- [IERC1271Wallet](IERC1271Wallet.sol/interface.IERC1271Wallet.md) diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC1155Receiver.sol/interface.IERC1155Receiver.md b/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC1155Receiver.sol/interface.IERC1155Receiver.md deleted file mode 100644 index 15ae7d6f4f..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC1155Receiver.sol/interface.IERC1155Receiver.md +++ /dev/null @@ -1,21 +0,0 @@ -# IERC1155Receiver -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/interfaces/receivers/IERC1155Receiver.sol) - - -## Functions -### onERC1155Received - - -```solidity -function onERC1155Received(address, address, uint256, uint256, bytes calldata) external returns (bytes4); -``` - -### onERC1155BatchReceived - - -```solidity -function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) - external - returns (bytes4); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC223Receiver.sol/interface.IERC223Receiver.md b/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC223Receiver.sol/interface.IERC223Receiver.md deleted file mode 100644 index 0cd75e79e6..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC223Receiver.sol/interface.IERC223Receiver.md +++ /dev/null @@ -1,12 +0,0 @@ -# IERC223Receiver -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/interfaces/receivers/IERC223Receiver.sol) - - -## Functions -### tokenFallback - - -```solidity -function tokenFallback(address, uint256, bytes calldata) external; -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC721Receiver.sol/interface.IERC721Receiver.md b/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC721Receiver.sol/interface.IERC721Receiver.md deleted file mode 100644 index bb3179c879..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC721Receiver.sol/interface.IERC721Receiver.md +++ /dev/null @@ -1,12 +0,0 @@ -# IERC721Receiver -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/interfaces/receivers/IERC721Receiver.sol) - - -## Functions -### onERC721Received - - -```solidity -function onERC721Received(address, address, uint256, bytes calldata) external returns (bytes4); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC777Receiver.sol/interface.IERC777Receiver.md b/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC777Receiver.sol/interface.IERC777Receiver.md deleted file mode 100644 index 0ce16e2bb7..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC777Receiver.sol/interface.IERC777Receiver.md +++ /dev/null @@ -1,12 +0,0 @@ -# IERC777Receiver -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/interfaces/receivers/IERC777Receiver.sol) - - -## Functions -### tokensReceived - - -```solidity -function tokensReceived(address, address, address, uint256, bytes calldata, bytes calldata) external; -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/README.md b/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/README.md deleted file mode 100644 index b825f22b3c..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/receivers/README.md +++ /dev/null @@ -1,7 +0,0 @@ - - -# Contents -- [IERC1155Receiver](IERC1155Receiver.sol/interface.IERC1155Receiver.md) -- [IERC223Receiver](IERC223Receiver.sol/interface.IERC223Receiver.md) -- [IERC721Receiver](IERC721Receiver.sol/interface.IERC721Receiver.md) -- [IERC777Receiver](IERC777Receiver.sol/interface.IERC777Receiver.md) diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC1155.sol/interface.IERC1155.md b/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC1155.sol/interface.IERC1155.md deleted file mode 100644 index 9633499019..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC1155.sol/interface.IERC1155.md +++ /dev/null @@ -1,83 +0,0 @@ -# IERC1155 -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/interfaces/tokens/IERC1155.sol) - - -## Functions -### balanceOf - - -```solidity -function balanceOf(address account, uint256 id) external view returns (uint256); -``` - -### balanceOfBatch - - -```solidity -function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) - external - view - returns (uint256[] memory); -``` - -### setApprovalForAll - - -```solidity -function setApprovalForAll(address operator, bool approved) external; -``` - -### isApprovedForAll - - -```solidity -function isApprovedForAll(address account, address operator) external view returns (bool); -``` - -### safeTransferFrom - - -```solidity -function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external; -``` - -### safeBatchTransferFrom - - -```solidity -function safeBatchTransferFrom( - address from, - address to, - uint256[] calldata ids, - uint256[] calldata amounts, - bytes calldata data -) external; -``` - -## Events -### TransferSingle - -```solidity -event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); -``` - -### TransferBatch - -```solidity -event TransferBatch( - address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values -); -``` - -### ApprovalForAll - -```solidity -event ApprovalForAll(address indexed account, address indexed operator, bool approved); -``` - -### URI - -```solidity -event URI(string value, uint256 indexed id); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC20.sol/interface.IERC20.md b/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC20.sol/interface.IERC20.md deleted file mode 100644 index b725da4852..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC20.sol/interface.IERC20.md +++ /dev/null @@ -1,60 +0,0 @@ -# IERC20 -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/interfaces/tokens/IERC20.sol) - - -## Functions -### totalSupply - - -```solidity -function totalSupply() external view returns (uint256); -``` - -### balanceOf - - -```solidity -function balanceOf(address account) external view returns (uint256); -``` - -### transfer - - -```solidity -function transfer(address recipient, uint256 amount) external returns (bool); -``` - -### allowance - - -```solidity -function allowance(address owner, address spender) external view returns (uint256); -``` - -### approve - - -```solidity -function approve(address spender, uint256 amount) external returns (bool); -``` - -### transferFrom - - -```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); -``` - -## Events -### Transfer - -```solidity -event Transfer(address indexed from, address indexed to, uint256 value); -``` - -### Approval - -```solidity -event Approval(address indexed owner, address indexed spender, uint256 value); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC721.sol/interface.IERC721.md b/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC721.sol/interface.IERC721.md deleted file mode 100644 index 04afa1fca1..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/IERC721.sol/interface.IERC721.md +++ /dev/null @@ -1,87 +0,0 @@ -# IERC721 -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/interfaces/tokens/IERC721.sol) - - -## Functions -### balanceOf - - -```solidity -function balanceOf(address owner) external view returns (uint256 balance); -``` - -### ownerOf - - -```solidity -function ownerOf(uint256 tokenId) external view returns (address owner); -``` - -### safeTransferFrom - - -```solidity -function safeTransferFrom(address from, address to, uint256 tokenId) external; -``` - -### transferFrom - - -```solidity -function transferFrom(address from, address to, uint256 tokenId) external; -``` - -### approve - - -```solidity -function approve(address to, uint256 tokenId) external; -``` - -### getApproved - - -```solidity -function getApproved(uint256 tokenId) external view returns (address operator); -``` - -### setApprovalForAll - - -```solidity -function setApprovalForAll(address operator, bool approved) external; -``` - -### isApprovedForAll - - -```solidity -function isApprovedForAll(address owner, address operator) external view returns (bool); -``` - -### safeTransferFrom - - -```solidity -function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; -``` - -## Events -### Transfer - -```solidity -event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); -``` - -### Approval - -```solidity -event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); -``` - -### ApprovalForAll - -```solidity -event ApprovalForAll(address indexed owner, address indexed operator, bool approved); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/README.md b/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/README.md deleted file mode 100644 index b3210e36c1..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/interfaces/tokens/README.md +++ /dev/null @@ -1,6 +0,0 @@ - - -# Contents -- [IERC1155](IERC1155.sol/interface.IERC1155.md) -- [IERC20](IERC20.sol/interface.IERC20.md) -- [IERC721](IERC721.sol/interface.IERC721.md) diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/AlwaysRevertMock.sol/contract.AlwaysRevertMock.md b/packages/wallet-contracts/docs/src/contracts/mocks/AlwaysRevertMock.sol/contract.AlwaysRevertMock.md deleted file mode 100644 index cbc78e73a2..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/AlwaysRevertMock.sol/contract.AlwaysRevertMock.md +++ /dev/null @@ -1,12 +0,0 @@ -# AlwaysRevertMock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/AlwaysRevertMock.sol) - - -## Functions -### fallback - - -```solidity -fallback() external payable; -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/CallReceiverMock.sol/contract.CallReceiverMock.md b/packages/wallet-contracts/docs/src/contracts/mocks/CallReceiverMock.sol/contract.CallReceiverMock.md deleted file mode 100644 index 971bcd4956..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/CallReceiverMock.sol/contract.CallReceiverMock.md +++ /dev/null @@ -1,48 +0,0 @@ -# CallReceiverMock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/CallReceiverMock.sol) - - -## State Variables -### lastValA - -```solidity -uint256 public lastValA -``` - - -### lastValB - -```solidity -bytes public lastValB -``` - - -### revertFlag - -```solidity -bool revertFlag -``` - - -## Functions -### constructor - - -```solidity -constructor() payable; -``` - -### setRevertFlag - - -```solidity -function setRevertFlag(bool _revertFlag) external; -``` - -### testCall - - -```solidity -function testCall(uint256 _valA, bytes calldata _valB) external payable; -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/DelegateCallMock.sol/contract.DelegateCallMock.md b/packages/wallet-contracts/docs/src/contracts/mocks/DelegateCallMock.sol/contract.DelegateCallMock.md deleted file mode 100644 index 27c8031675..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/DelegateCallMock.sol/contract.DelegateCallMock.md +++ /dev/null @@ -1,48 +0,0 @@ -# DelegateCallMock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/DelegateCallMock.sol) - - -## State Variables -### REVERT_SLOT - -```solidity -uint256 private constant REVERT_SLOT = uint256(keccak256("revert-flag")) -``` - - -### store - -```solidity -mapping(uint256 => uint256) private store -``` - - -## Functions -### setRevertFlag - - -```solidity -function setRevertFlag(bool _revertFlag) external; -``` - -### write - - -```solidity -function write(uint256 _key, uint256 _val) external; -``` - -### read - - -```solidity -function read(uint256 _key) external; -``` - -## Events -### Readed - -```solidity -event Readed(uint256 _val); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/ERC1155Mock.sol/contract.ERC1155Mock.md b/packages/wallet-contracts/docs/src/contracts/mocks/ERC1155Mock.sol/contract.ERC1155Mock.md deleted file mode 100644 index 07439ae1a0..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/ERC1155Mock.sol/contract.ERC1155Mock.md +++ /dev/null @@ -1,110 +0,0 @@ -# ERC1155Mock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/ERC1155Mock.sol) - - -## State Variables -### name - -```solidity -string public name = "Mock ERC1155 Token" -``` - - -### symbol - -```solidity -string public symbol = "MERC1155" -``` - - -### owner - -```solidity -address public owner -``` - - -### balances - -```solidity -mapping(uint256 => mapping(address => uint256)) public balances -``` - - -### operatorApprovals - -```solidity -mapping(address => mapping(address => bool)) public operatorApprovals -``` - - -## Functions -### constructor - - -```solidity -constructor() ; -``` - -### onlyOwner - - -```solidity -modifier onlyOwner() ; -``` - -### balanceOf - - -```solidity -function balanceOf(address account, uint256 id) public view returns (uint256); -``` - -### balanceOfBatch - - -```solidity -function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view returns (uint256[] memory); -``` - -### mint - - -```solidity -function mint(address to, uint256 id, uint256 amount) public onlyOwner; -``` - -### safeTransferFrom - - -```solidity -function safeTransferFrom(address from, address to, uint256 id, uint256 amount) public; -``` - -### setApprovalForAll - - -```solidity -function setApprovalForAll(address operator, bool approved) public; -``` - -### isApprovedForAll - - -```solidity -function isApprovedForAll(address account, address operator) public view returns (bool); -``` - -## Events -### TransferSingle - -```solidity -event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); -``` - -### ApprovalForAll - -```solidity -event ApprovalForAll(address indexed account, address indexed operator, bool approved); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/ERC165CheckerMock.sol/contract.ERC165CheckerMock.md b/packages/wallet-contracts/docs/src/contracts/mocks/ERC165CheckerMock.sol/contract.ERC165CheckerMock.md deleted file mode 100644 index 15df064f08..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/ERC165CheckerMock.sol/contract.ERC165CheckerMock.md +++ /dev/null @@ -1,37 +0,0 @@ -# ERC165CheckerMock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/ERC165CheckerMock.sol) - - -## State Variables -### InvalidID - -```solidity -bytes4 constant InvalidID = 0xffffffff -``` - - -### ERC165ID - -```solidity -bytes4 constant ERC165ID = 0x01ffc9a7 -``` - - -## Functions -### doesContractImplementInterface - - -```solidity -function doesContractImplementInterface(address _contract, bytes4 _interfaceId) external view returns (bool); -``` - -### noThrowCall - - -```solidity -function noThrowCall(address _contract, bytes4 _interfaceId) - private - view - returns (uint256 success, uint256 result); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/ERC20Mock.sol/contract.ERC20Mock.md b/packages/wallet-contracts/docs/src/contracts/mocks/ERC20Mock.sol/contract.ERC20Mock.md deleted file mode 100644 index 986bf48aff..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/ERC20Mock.sol/contract.ERC20Mock.md +++ /dev/null @@ -1,103 +0,0 @@ -# ERC20Mock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/ERC20Mock.sol) - - -## State Variables -### name - -```solidity -string public name = "Mock ERC20 Token" -``` - - -### symbol - -```solidity -string public symbol = "MERC20" -``` - - -### decimals - -```solidity -uint8 public decimals = 18 -``` - - -### totalSupply - -```solidity -uint256 public totalSupply -``` - - -### balances - -```solidity -mapping(address => uint256) public balances -``` - - -### allowances - -```solidity -mapping(address => mapping(address => uint256)) public allowances -``` - - -## Functions -### constructor - - -```solidity -constructor(uint256 initialSupply) ; -``` - -### balanceOf - - -```solidity -function balanceOf(address account) public view returns (uint256); -``` - -### transfer - - -```solidity -function transfer(address recipient, uint256 amount) public returns (bool); -``` - -### allowance - - -```solidity -function allowance(address owner, address spender) public view returns (uint256); -``` - -### approve - - -```solidity -function approve(address spender, uint256 amount) public returns (bool); -``` - -### transferFrom - - -```solidity -function transferFrom(address sender, address recipient, uint256 amount) public returns (bool); -``` - -## Events -### Transfer - -```solidity -event Transfer(address indexed from, address indexed to, uint256 value); -``` - -### Approval - -```solidity -event Approval(address indexed owner, address indexed spender, uint256 value); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/ERC721Mock.sol/contract.ERC721Mock.md b/packages/wallet-contracts/docs/src/contracts/mocks/ERC721Mock.sol/contract.ERC721Mock.md deleted file mode 100644 index e8da713f0d..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/ERC721Mock.sol/contract.ERC721Mock.md +++ /dev/null @@ -1,151 +0,0 @@ -# ERC721Mock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/ERC721Mock.sol) - - -## State Variables -### name - -```solidity -string public name = "Mock ERC721 Token" -``` - - -### symbol - -```solidity -string public symbol = "MERC721" -``` - - -### totalSupply - -```solidity -uint256 public totalSupply -``` - - -### owner - -```solidity -address public owner -``` - - -### balances - -```solidity -mapping(address => uint256) public balances -``` - - -### owners - -```solidity -mapping(uint256 => address) public owners -``` - - -### operatorApprovals - -```solidity -mapping(address => mapping(address => bool)) public operatorApprovals -``` - - -### tokenApprovals - -```solidity -mapping(uint256 => address) public tokenApprovals -``` - - -## Functions -### constructor - - -```solidity -constructor() ; -``` - -### onlyOwner - - -```solidity -modifier onlyOwner() ; -``` - -### balanceOf - - -```solidity -function balanceOf(address _owner) public view returns (uint256); -``` - -### ownerOf - - -```solidity -function ownerOf(uint256 tokenId) public view returns (address); -``` - -### mint - - -```solidity -function mint(address to, uint256 tokenId) public onlyOwner; -``` - -### transferFrom - - -```solidity -function transferFrom(address from, address to, uint256 tokenId) public; -``` - -### approve - - -```solidity -function approve(address to, uint256 tokenId) public; -``` - -### getApproved - - -```solidity -function getApproved(uint256 tokenId) public view returns (address); -``` - -### setApprovalForAll - - -```solidity -function setApprovalForAll(address operator, bool approved) public; -``` - -### isApprovedForAll - - -```solidity -function isApprovedForAll(address _owner, address operator) public view returns (bool); -``` - -## Events -### Transfer - -```solidity -event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); -``` - -### Approval - -```solidity -event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); -``` - -### ApprovalForAll - -```solidity -event ApprovalForAll(address indexed owner, address indexed operator, bool approved); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/GasBurnerMock.sol/contract.GasBurnerMock.md b/packages/wallet-contracts/docs/src/contracts/mocks/GasBurnerMock.sol/contract.GasBurnerMock.md deleted file mode 100644 index 4b29aa335e..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/GasBurnerMock.sol/contract.GasBurnerMock.md +++ /dev/null @@ -1,19 +0,0 @@ -# GasBurnerMock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/GasBurnerMock.sol) - - -## Functions -### burnGas - - -```solidity -function burnGas(uint256 _burn) external; -``` - -## Events -### ProvidedGas - -```solidity -event ProvidedGas(uint256 _val); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/HookCallerMock.sol/contract.HookCallerMock.md b/packages/wallet-contracts/docs/src/contracts/mocks/HookCallerMock.sol/contract.HookCallerMock.md deleted file mode 100644 index 31228f830e..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/HookCallerMock.sol/contract.HookCallerMock.md +++ /dev/null @@ -1,49 +0,0 @@ -# HookCallerMock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/HookCallerMock.sol) - - -## Functions -### callERC1155Received - - -```solidity -function callERC1155Received(address _addr) external; -``` - -### callERC1155BatchReceived - - -```solidity -function callERC1155BatchReceived(address _addr) external; -``` - -### callERC721Received - - -```solidity -function callERC721Received(address _addr) external; -``` - -### callERC223Received - - -```solidity -function callERC223Received(address _addr) external; -``` - -### callERC1271isValidSignatureData - - -```solidity -function callERC1271isValidSignatureData(address _addr, bytes calldata _data, bytes calldata _signature) - external - view; -``` - -### callERC1271isValidSignatureHash - - -```solidity -function callERC1271isValidSignatureHash(address _addr, bytes32 _hash, bytes calldata _signature) external view; -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/HookMock.sol/contract.HookMock.md b/packages/wallet-contracts/docs/src/contracts/mocks/HookMock.sol/contract.HookMock.md deleted file mode 100644 index cbbeaef8a4..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/HookMock.sol/contract.HookMock.md +++ /dev/null @@ -1,12 +0,0 @@ -# HookMock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/HookMock.sol) - - -## Functions -### onHookMockCall - - -```solidity -function onHookMockCall(uint256 _num) external pure returns (uint256); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/LibBytesImpl.sol/contract.LibBytesImpl.md b/packages/wallet-contracts/docs/src/contracts/mocks/LibBytesImpl.sol/contract.LibBytesImpl.md deleted file mode 100644 index 4e4c03e92b..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/LibBytesImpl.sol/contract.LibBytesImpl.md +++ /dev/null @@ -1,26 +0,0 @@ -# LibBytesImpl -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/LibBytesImpl.sol) - - -## Functions -### readBytes32 - - -```solidity -function readBytes32(bytes calldata data, uint256 index) external pure returns (bytes32 a); -``` - -### readUint8 - - -```solidity -function readUint8(bytes calldata data, uint256 index) external pure returns (uint8 a); -``` - -### readUint32 - - -```solidity -function readUint32(bytes calldata data, uint256 index) external pure returns (uint32 a); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/LibBytesPointerImpl.sol/contract.LibBytesPointerImpl.md b/packages/wallet-contracts/docs/src/contracts/mocks/LibBytesPointerImpl.sol/contract.LibBytesPointerImpl.md deleted file mode 100644 index dcc906b54b..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/LibBytesPointerImpl.sol/contract.LibBytesPointerImpl.md +++ /dev/null @@ -1,33 +0,0 @@ -# LibBytesPointerImpl -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/LibBytesPointerImpl.sol) - - -## Functions -### readFirstUint16 - - -```solidity -function readFirstUint16(bytes calldata data) external pure returns (uint16 a, uint256 newPointer); -``` - -### readUint16 - - -```solidity -function readUint16(bytes calldata data, uint256 index) external pure returns (uint16 a, uint256 newPointer); -``` - -### readUint24 - - -```solidity -function readUint24(bytes calldata data, uint256 index) external pure returns (uint24 a, uint256 newPointer); -``` - -### readUint64 - - -```solidity -function readUint64(bytes calldata data, uint256 index) external pure returns (uint64 a, uint256 newPointer); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/LibStringImp.sol/contract.LibStringImp.md b/packages/wallet-contracts/docs/src/contracts/mocks/LibStringImp.sol/contract.LibStringImp.md deleted file mode 100644 index dbe4b943ed..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/LibStringImp.sol/contract.LibStringImp.md +++ /dev/null @@ -1,33 +0,0 @@ -# LibStringImp -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/LibStringImp.sol) - - -## Functions -### prefixBase32 - - -```solidity -function prefixBase32(string calldata data) external pure returns (string memory); -``` - -### prefixHexadecimal - - -```solidity -function prefixHexadecimal(string calldata data) external pure returns (string memory); -``` - -### bytesToBase32 - - -```solidity -function bytesToBase32(bytes calldata data) external pure returns (string memory); -``` - -### bytesToHexadecimal - - -```solidity -function bytesToHexadecimal(bytes calldata data) external pure returns (string memory); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/ModuleMock.sol/contract.ModuleMock.md b/packages/wallet-contracts/docs/src/contracts/mocks/ModuleMock.sol/contract.ModuleMock.md deleted file mode 100644 index 1f7091182d..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/ModuleMock.sol/contract.ModuleMock.md +++ /dev/null @@ -1,19 +0,0 @@ -# ModuleMock -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/mocks/ModuleMock.sol) - - -## Functions -### ping - - -```solidity -function ping() external; -``` - -## Events -### Pong - -```solidity -event Pong(); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/mocks/README.md b/packages/wallet-contracts/docs/src/contracts/mocks/README.md deleted file mode 100644 index c96d7e081d..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/mocks/README.md +++ /dev/null @@ -1,17 +0,0 @@ - - -# Contents -- [AlwaysRevertMock](AlwaysRevertMock.sol/contract.AlwaysRevertMock.md) -- [CallReceiverMock](CallReceiverMock.sol/contract.CallReceiverMock.md) -- [DelegateCallMock](DelegateCallMock.sol/contract.DelegateCallMock.md) -- [ERC1155Mock](ERC1155Mock.sol/contract.ERC1155Mock.md) -- [ERC165CheckerMock](ERC165CheckerMock.sol/contract.ERC165CheckerMock.md) -- [ERC20Mock](ERC20Mock.sol/contract.ERC20Mock.md) -- [ERC721Mock](ERC721Mock.sol/contract.ERC721Mock.md) -- [GasBurnerMock](GasBurnerMock.sol/contract.GasBurnerMock.md) -- [HookCallerMock](HookCallerMock.sol/contract.HookCallerMock.md) -- [HookMock](HookMock.sol/contract.HookMock.md) -- [LibBytesImpl](LibBytesImpl.sol/contract.LibBytesImpl.md) -- [LibBytesPointerImpl](LibBytesPointerImpl.sol/contract.LibBytesPointerImpl.md) -- [LibStringImp](LibStringImp.sol/contract.LibStringImp.md) -- [ModuleMock](ModuleMock.sol/contract.ModuleMock.md) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/GuestModule.sol/contract.GuestModule.md b/packages/wallet-contracts/docs/src/contracts/modules/GuestModule.sol/contract.GuestModule.md deleted file mode 100644 index 3c4bd106ba..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/GuestModule.sol/contract.GuestModule.md +++ /dev/null @@ -1,124 +0,0 @@ -# GuestModule -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/GuestModule.sol) - -**Inherits:** -[ModuleAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuth.sol/abstract.ModuleAuth.md), [ModuleCalls](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleCalls.sol/abstract.ModuleCalls.md), [ModuleCreator](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleCreator.sol/contract.ModuleCreator.md) - -GuestModule implements a Sequence wallet without signatures, nonce or replay protection. -executing transactions using this wallet is not an authenticated process, and can be done by any address. - -This contract is completely public with no security, designed to execute pre-signed transactions -and use Sequence tools without using the wallets. - - -## Functions -### execute - -Allow any caller to execute an action - - -```solidity -function execute(Transaction[] calldata _txs, uint256, bytes calldata) public override; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txs`|`Transaction[]`|Transactions to process| -|``|`uint256`|| -|``|`bytes`|| - - -### selfExecute - -Allow any caller to execute an action - - -```solidity -function selfExecute(Transaction[] calldata _txs) public override; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txs`|`Transaction[]`|Transactions to process| - - -### _executeGuest - -Executes a list of transactions - - -```solidity -function _executeGuest(bytes32 _txHash, Transaction[] calldata _txs) private; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txHash`|`bytes32`| Hash of the batch of transactions| -|`_txs`|`Transaction[]`| Transactions to execute| - - -### _isValidImage - -Validates any signature image, because the wallet is public and has no owner. - - -```solidity -function _isValidImage(bytes32) internal pure override returns (bool); -``` -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|true, all signatures are valid.| - - -### _updateImageHash - -Not supported. - - -```solidity -function _updateImageHash(bytes32) internal virtual override; -``` - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) - public - pure - override(ModuleAuth, ModuleCalls, ModuleCreator) - returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - -## Errors -### DelegateCallNotAllowed - -```solidity -error DelegateCallNotAllowed(uint256 _index); -``` - -### NotSupported - -```solidity -error NotSupported(); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/MainModule.sol/contract.MainModule.md b/packages/wallet-contracts/docs/src/contracts/modules/MainModule.sol/contract.MainModule.md deleted file mode 100644 index 3518e44562..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/MainModule.sol/contract.MainModule.md +++ /dev/null @@ -1,57 +0,0 @@ -# MainModule -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/MainModule.sol) - -**Inherits:** -[ModuleAuthFixed](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthFixed.sol/abstract.ModuleAuthFixed.md), [ModuleExtraAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleExtraAuth.sol/abstract.ModuleExtraAuth.md), [ModuleCalls](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleCalls.sol/abstract.ModuleCalls.md), [ModuleHooks](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleHooks.sol/contract.ModuleHooks.md), [ModuleCreator](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleCreator.sol/contract.ModuleCreator.md), [ModuleAuthConvenience](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthConvenience.sol/abstract.ModuleAuthConvenience.md) - -Contains the core functionality Sequence wallets will inherit. - -If using a new main module, developers must ensure that all inherited -contracts by the main module don't conflict and are accounted for to be -supported by the supportsInterface method. - - -## Functions -### constructor - - -```solidity -constructor(address _factory, address _mainModuleUpgradable) ModuleAuthFixed(_factory, _mainModuleUpgradable); -``` - -### _isValidImage - - -```solidity -function _isValidImage(bytes32 _imageHash) - internal - view - override(IModuleAuth, ModuleAuthFixed, ModuleExtraAuth) - returns (bool); -``` - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) - public - pure - override(ModuleAuthFixed, ModuleAuthConvenience, ModuleCalls, ModuleExtraAuth, ModuleHooks, ModuleCreator) - returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/MainModuleGasEstimation.sol/contract.MainModuleGasEstimation.md b/packages/wallet-contracts/docs/src/contracts/modules/MainModuleGasEstimation.sol/contract.MainModuleGasEstimation.md deleted file mode 100644 index 1faeb0395f..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/MainModuleGasEstimation.sol/contract.MainModuleGasEstimation.md +++ /dev/null @@ -1,85 +0,0 @@ -# MainModuleGasEstimation -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/MainModuleGasEstimation.sol) - -**Inherits:** -[ModuleIgnoreAuthUpgradable](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol/abstract.ModuleIgnoreAuthUpgradable.md), [ModuleIgnoreNonceCalls](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/ModuleIgnoreNonceCalls.sol/abstract.ModuleIgnoreNonceCalls.md), [ModuleUpdate](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleUpdate.sol/contract.ModuleUpdate.md), [ModuleHooks](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleHooks.sol/contract.ModuleHooks.md), [ModuleCreator](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleCreator.sol/contract.ModuleCreator.md) - -Contains an alternative implementation of the MainModules that skips validation of -signatures, this implementation SHOULD NOT be used directly on a wallet. -Intended to be used only for gas estimation, using eth_call and overrides. - - -## Functions -### simulateExecute - -Simulate each transaction in a bundle for gas usage and execution result - - -```solidity -function simulateExecute(Transaction[] calldata _txs) public virtual returns (SimulateResult[] memory); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txs`|`Transaction[]`|Transactions to process| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`SimulateResult[]`|The gas used and execution result for each transaction in the bundle| - - -### _isValidImage - - -```solidity -function _isValidImage(bytes32 _imageHash) - internal - view - override(IModuleAuth, ModuleIgnoreAuthUpgradable) - returns (bool); -``` - -### supportsInterface - -Query if a contract implements an interface - -If using a new main module, developers must ensure that all inherited -contracts by the main module don't conflict and are accounted for to be -supported by the supportsInterface method. - - -```solidity -function supportsInterface(bytes4 _interfaceID) - public - pure - override(ModuleAuthUpgradable, ModuleCalls, ModuleUpdate, ModuleHooks, ModuleCreator) - returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - -## Structs -### SimulateResult - -```solidity -struct SimulateResult { - bool executed; - bool succeeded; - bytes result; - uint256 gasUsed; -} -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/MainModuleUpgradable.sol/contract.MainModuleUpgradable.md b/packages/wallet-contracts/docs/src/contracts/modules/MainModuleUpgradable.sol/contract.MainModuleUpgradable.md deleted file mode 100644 index 6d6d84d91d..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/MainModuleUpgradable.sol/contract.MainModuleUpgradable.md +++ /dev/null @@ -1,63 +0,0 @@ -# MainModuleUpgradable -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/MainModuleUpgradable.sol) - -**Inherits:** -[ModuleAuthUpgradable](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthUpgradable.sol/abstract.ModuleAuthUpgradable.md), [ModuleExtraAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleExtraAuth.sol/abstract.ModuleExtraAuth.md), [ModuleCalls](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleCalls.sol/abstract.ModuleCalls.md), [ModuleUpdate](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleUpdate.sol/contract.ModuleUpdate.md), [ModuleHooks](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleHooks.sol/contract.ModuleHooks.md), [ModuleCreator](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleCreator.sol/contract.ModuleCreator.md), [ModuleAuthConvenience](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthConvenience.sol/abstract.ModuleAuthConvenience.md) - -Contains the core functionality Sequence wallets will inherit with -the added functionality that the main module can be changed. - -If using a new main module, developers must ensure that all inherited -contracts by the main module don't conflict and are accounted for to be -supported by the supportsInterface method. - - -## Functions -### _isValidImage - - -```solidity -function _isValidImage(bytes32 _imageHash) - internal - view - override(IModuleAuth, ModuleAuthUpgradable, ModuleExtraAuth) - returns (bool); -``` - -### supportsInterface - -Query if a contract implements an interface - -If using a new main module, developers must ensure that all inherited -contracts by the main module don't conflict and are accounted for to be -supported by the supportsInterface method. - - -```solidity -function supportsInterface(bytes4 _interfaceID) - public - pure - override( - ModuleAuthUpgradable, - ModuleAuthConvenience, - ModuleCalls, - ModuleExtraAuth, - ModuleUpdate, - ModuleHooks, - ModuleCreator - ) - returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/README.md b/packages/wallet-contracts/docs/src/contracts/modules/README.md deleted file mode 100644 index 4aea181eda..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/README.md +++ /dev/null @@ -1,9 +0,0 @@ - - -# Contents -- [commons](/contracts/modules/commons) -- [utils](/contracts/modules/utils) -- [GuestModule](GuestModule.sol/contract.GuestModule.md) -- [MainModule](MainModule.sol/contract.MainModule.md) -- [MainModuleGasEstimation](MainModuleGasEstimation.sol/contract.MainModuleGasEstimation.md) -- [MainModuleUpgradable](MainModuleUpgradable.sol/contract.MainModuleUpgradable.md) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/Implementation.sol/contract.Implementation.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/Implementation.sol/contract.Implementation.md deleted file mode 100644 index 48ffca756e..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/Implementation.sol/contract.Implementation.md +++ /dev/null @@ -1,42 +0,0 @@ -# Implementation -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/Implementation.sol) - -Allows modules to access the implementation slot - - -## Functions -### _setImplementation - -Updates the Wallet implementation - -The wallet implementation is stored on the storage slot -defined by the address of the wallet itself -WARNING updating this value may break the wallet and users -must be confident that the new implementation is safe. - - -```solidity -function _setImplementation(address _imp) internal; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imp`|`address`|New implementation address| - - -### _getImplementation - -Returns the Wallet implementation - - -```solidity -function _getImplementation() internal view returns (address _imp); -``` -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`_imp`|`address`|The address of the current Wallet implementation| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuth.sol/abstract.ModuleAuth.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuth.sol/abstract.ModuleAuth.md deleted file mode 100644 index 08b9d690a8..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuth.sol/abstract.ModuleAuth.md +++ /dev/null @@ -1,203 +0,0 @@ -# ModuleAuth -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleAuth.sol) - -**Inherits:** -[IModuleAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuth.sol/abstract.IModuleAuth.md), [ModuleERC165](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md), [IERC1271Wallet](/home/dargon789/wallet-contracts/docs/src/contracts/interfaces/IERC1271Wallet.sol/interface.IERC1271Wallet.md), [SequenceChainedSig](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol/abstract.SequenceChainedSig.md) - - -## State Variables -### LEGACY_TYPE - -```solidity -bytes1 internal constant LEGACY_TYPE = hex"00" -``` - - -### DYNAMIC_TYPE - -```solidity -bytes1 internal constant DYNAMIC_TYPE = hex"01" -``` - - -### NO_CHAIN_ID_TYPE - -```solidity -bytes1 internal constant NO_CHAIN_ID_TYPE = hex"02" -``` - - -### CHAINED_TYPE - -```solidity -bytes1 internal constant CHAINED_TYPE = hex"03" -``` - - -### SELECTOR_ERC1271_BYTES_BYTES - -```solidity -bytes4 internal constant SELECTOR_ERC1271_BYTES_BYTES = 0x20c13b0b -``` - - -### SELECTOR_ERC1271_BYTES32_BYTES - -```solidity -bytes4 internal constant SELECTOR_ERC1271_BYTES32_BYTES = 0x1626ba7e -``` - - -## Functions -### signatureRecovery - -Recovers the threshold, weight, imageHash, subdigest, and checkpoint of a signature. - -The signature must be prefixed with a type byte, which is used to determine the recovery method. - - -```solidity -function signatureRecovery(bytes32 _digest, bytes calldata _signature) - public - view - virtual - override - returns (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 checkpoint); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_digest`|`bytes32`|Digest of the signed data.| -|`_signature`|`bytes`|A Sequence signature.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`threshold`|`uint256`|The required number of signatures needed to consider the signature valid.| -|`weight`|`uint256`|The actual number of signatures collected in the signature.| -|`imageHash`|`bytes32`|The imageHash of the configuration that signed the message.| -|`subdigest`|`bytes32`|A modified version of the original digest, unique for each wallet/network.| -|`checkpoint`|`uint256`|A nonce that is incremented every time a new configuration is set.| - - -### _signatureValidation - -Validates a signature. - - -```solidity -function _signatureValidation(bytes32 _digest, bytes calldata _signature) - internal - view - virtual - override - returns (bool isValid, bytes32 subdigest); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_digest`|`bytes32`|Digest of the signed data.| -|`_signature`|`bytes`|A Sequence signature.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`isValid`|`bool`|Indicates whether the signature is valid or not.| -|`subdigest`|`bytes32`|A modified version of the original digest, unique for each wallet/network.| - - -### isValidSignature - -Verifies whether the provided signature is valid with respect to the provided data - -MUST return the correct magic value if the signature provided is valid for the provided data -> The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256("isValidSignature(bytes,bytes)")) - - -```solidity -function isValidSignature(bytes calldata _data, bytes calldata _signatures) - public - view - virtual - override - returns (bytes4); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`| Arbitrary length data signed on the behalf of address(this)| -|`_signatures`|`bytes`|Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes4`|magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise| - - -### isValidSignature - -Verifies whether the provided signature is valid with respect to the provided hash - -MUST return the correct magic value if the signature provided is valid for the provided hash -> The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)")) - - -```solidity -function isValidSignature(bytes32 _hash, bytes calldata _signatures) public view virtual override returns (bytes4); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_hash`|`bytes32`| keccak256 hash that was signed| -|`_signatures`|`bytes`|Signature byte array associated with _data. Encoded as abi.encode(Signature[], Configs)| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes4`|magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise| - - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - -### updateImageHash - -Updates the signers configuration of the wallet - - -```solidity -function updateImageHash(bytes32 _imageHash) external virtual override onlySelf; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|New required image hash of the signature| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthConvenience.sol/abstract.ModuleAuthConvenience.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthConvenience.sol/abstract.ModuleAuthConvenience.md deleted file mode 100644 index 19295f3520..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthConvenience.sol/abstract.ModuleAuthConvenience.md +++ /dev/null @@ -1,53 +0,0 @@ -# ModuleAuthConvenience -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleAuthConvenience.sol) - -**Inherits:** -[ModuleERC165](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md), [ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md), [ModuleAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuth.sol/abstract.ModuleAuth.md), [ModuleIPFS](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleIPFS.sol/contract.ModuleIPFS.md) - - -## Functions -### updateImageHashAndIPFS - -Updates the image hash and the IPFS root in a single operation. - -These two operations are often performed together, so this function -allows to save some gas by performing them in a single step. - - -```solidity -function updateImageHashAndIPFS(bytes32 _imageHash, bytes32 _ipfsRoot) external onlySelf; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|The new image hash to be set.| -|`_ipfsRoot`|`bytes32`|The new IPFS root to be set.| - - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) - public - pure - virtual - override(ModuleERC165, ModuleAuth) - returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthFixed.sol/abstract.ModuleAuthFixed.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthFixed.sol/abstract.ModuleAuthFixed.md deleted file mode 100644 index 06b88e89f0..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthFixed.sol/abstract.ModuleAuthFixed.md +++ /dev/null @@ -1,108 +0,0 @@ -# ModuleAuthFixed -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleAuthFixed.sol) - -**Inherits:** -[ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md), [ModuleAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuth.sol/abstract.ModuleAuth.md), [ModuleUpdate](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleUpdate.sol/contract.ModuleUpdate.md) - -Implements ModuleAuth by validating the signature image against -the salt used to deploy the contract -This module allows wallets to be deployed with a default configuration -without using any aditional contract storage - - -## State Variables -### INIT_CODE_HASH - -```solidity -bytes32 public immutable INIT_CODE_HASH -``` - - -### FACTORY - -```solidity -address public immutable FACTORY -``` - - -### UPGRADEABLE_IMPLEMENTATION - -```solidity -address public immutable UPGRADEABLE_IMPLEMENTATION -``` - - -## Functions -### constructor - - -```solidity -constructor(address _factory, address _mainModuleUpgradeable) ; -``` - -### _updateImageHash - -Updates the configuration of the wallet - -In the process of updating the configuration, the wallet implementation -is updated to the mainModuleUpgradeable, this only happens once in the -lifetime of the wallet. - - -```solidity -function _updateImageHash(bytes32 _imageHash) internal virtual override; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|New required image hash of the signature| - - -### _isValidImage - -Validates the signature image with the salt used to deploy the contract - - -```solidity -function _isValidImage(bytes32 _imageHash) internal view virtual override returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|Hash image of signature| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|true if the signature image is valid| - - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) - public - pure - virtual - override(ModuleAuth, ModuleUpdate) - returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthUpgradable.sol/abstract.ModuleAuthUpgradable.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthUpgradable.sol/abstract.ModuleAuthUpgradable.md deleted file mode 100644 index f89410fe4a..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthUpgradable.sol/abstract.ModuleAuthUpgradable.md +++ /dev/null @@ -1,75 +0,0 @@ -# ModuleAuthUpgradable -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleAuthUpgradable.sol) - -**Inherits:** -[IModuleAuthUpgradable](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuthUpgradable.sol/interface.IModuleAuthUpgradable.md), [ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md), [ModuleAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuth.sol/abstract.ModuleAuth.md) - - -## Functions -### _updateImageHash - -Updates the signers configuration of the wallet - - -```solidity -function _updateImageHash(bytes32 _imageHash) internal virtual override; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|New required image hash of the signature| - - -### imageHash - -Returns the current image hash of the wallet - - -```solidity -function imageHash() external view virtual override returns (bytes32); -``` - -### _isValidImage - -Validates the signature image with a valid image hash defined -in the contract storage - - -```solidity -function _isValidImage(bytes32 _imageHash) internal view virtual override returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|Hash image of signature| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|true if the signature image is valid| - - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleCalls.sol/abstract.ModuleCalls.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleCalls.sol/abstract.ModuleCalls.md deleted file mode 100644 index a2d9ebc10a..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleCalls.sol/abstract.ModuleCalls.md +++ /dev/null @@ -1,104 +0,0 @@ -# ModuleCalls -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleCalls.sol) - -**Inherits:** -[IModuleCalls](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleCalls.sol/interface.IModuleCalls.md), [IModuleAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuth.sol/abstract.IModuleAuth.md), [ModuleERC165](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md), [ModuleOnlyDelegatecall](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleOnlyDelegatecall.sol/contract.ModuleOnlyDelegatecall.md), [ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md), [ModuleNonce](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleNonce.sol/contract.ModuleNonce.md) - - -## Functions -### execute - -Allow wallet owner to execute an action - -Relayers must ensure that the gasLimit specified for each transaction -is acceptable to them. A user could specify large enough that it could -consume all the gas available. - - -```solidity -function execute(Transaction[] calldata _txs, uint256 _nonce, bytes calldata _signature) - external - virtual - override - onlyDelegatecall; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txs`|`Transaction[]`| Transactions to process| -|`_nonce`|`uint256`| Signature nonce (may contain an encoded space)| -|`_signature`|`bytes`| Encoded signature| - - -### selfExecute - -Allow wallet to execute an action -without signing the message - - -```solidity -function selfExecute(Transaction[] calldata _txs) external virtual override onlySelf; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txs`|`Transaction[]`| Transactions to execute| - - -### _execute - -Executes a list of transactions - - -```solidity -function _execute(bytes32 _txHash, Transaction[] calldata _txs) private; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txHash`|`bytes32`| Hash of the batch of transactions| -|`_txs`|`Transaction[]`| Transactions to execute| - - -### _revertBytes - -Logs a failed transaction, reverts if the transaction is not optional - - -```solidity -function _revertBytes(bool _revertOnError, bytes32 _txHash, uint256 _index, bytes memory _reason) internal; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_revertOnError`|`bool`| Signals if it should revert or just log| -|`_txHash`|`bytes32`| Hash of the transaction| -|`_index`|`uint256`| Index of the transaction in the batch| -|`_reason`|`bytes`| Encoded revert message| - - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleCreator.sol/contract.ModuleCreator.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleCreator.sol/contract.ModuleCreator.md deleted file mode 100644 index 9ba53c0757..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleCreator.sol/contract.ModuleCreator.md +++ /dev/null @@ -1,57 +0,0 @@ -# ModuleCreator -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleCreator.sol) - -**Inherits:** -[IModuleCreator](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleCreator.sol/interface.IModuleCreator.md), [ModuleERC165](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md), [ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md) - - -## Functions -### createContract - -Creates a contract forwarding eth value - - -```solidity -function createContract(bytes memory _code) public payable virtual override onlySelf returns (address addr); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_code`|`bytes`|Creation code of the contract| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`addr`|`address`|The address of the created contract| - - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - -## Events -### CreatedContract - -```solidity -event CreatedContract(address _contract); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md deleted file mode 100644 index be2e7f2a46..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md +++ /dev/null @@ -1,31 +0,0 @@ -# ModuleERC165 -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleERC165.sol) - - -## Functions -### supportsInterface - -Query if a contract implements an interface - -Adding new hooks will not lead to them being reported by this function -without upgrading the wallet. In addition, developers must ensure that -all inherited contracts by the main module don't conflict and are accounted -to be supported by the supportsInterface method. - - -```solidity -function supportsInterface(bytes4 _interfaceID) public pure virtual returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC5719.sol/contract.ModuleERC5719.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC5719.sol/contract.ModuleERC5719.md deleted file mode 100644 index 85502e3785..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC5719.sol/contract.ModuleERC5719.md +++ /dev/null @@ -1,15 +0,0 @@ -# ModuleERC5719 -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleERC5719.sol) - -**Inherits:** -[ModuleIPFS](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleIPFS.sol/contract.ModuleIPFS.md) - - -## Functions -### getAlternativeSignature - - -```solidity -function getAlternativeSignature(bytes32 _digest) external view returns (string memory); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleExtraAuth.sol/abstract.ModuleExtraAuth.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleExtraAuth.sol/abstract.ModuleExtraAuth.md deleted file mode 100644 index 754cdce9e7..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleExtraAuth.sol/abstract.ModuleExtraAuth.md +++ /dev/null @@ -1,92 +0,0 @@ -# ModuleExtraAuth -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleExtraAuth.sol) - -**Inherits:** -[ModuleERC165](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md), [ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md), [ModuleAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuth.sol/abstract.ModuleAuth.md) - - -## State Variables -### EXTRA_IMAGE_HASH_KEY - -```solidity -bytes32 private constant EXTRA_IMAGE_HASH_KEY = - bytes32(0x849e7bdc245db17e50b9f43086f1914d70eb4dab6dd89af4d541d53353ad97de) -``` - - -## Functions -### _writeExpirationForImageHash - - -```solidity -function _writeExpirationForImageHash(bytes32 _imageHash, uint256 _expiration) internal; -``` - -### _readExpirationForImageHash - - -```solidity -function _readExpirationForImageHash(bytes32 _imageHash) internal view returns (uint256 _expiration); -``` - -### _isValidImage - - -```solidity -function _isValidImage(bytes32 _imageHash) internal view virtual override returns (bool); -``` - -### extraImageHash - - -```solidity -function extraImageHash(bytes32 _imageHash) public view returns (uint256); -``` - -### setExtraImageHash - - -```solidity -function setExtraImageHash(bytes32 _imageHash, uint256 _expiration) external onlySelf; -``` - -### clearExtraImageHashes - - -```solidity -function clearExtraImageHashes(bytes32[] calldata _imageHashes) external onlySelf; -``` - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) - public - pure - virtual - override(ModuleERC165, ModuleAuth) - returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - -## Events -### SetExtraImageHash - -```solidity -event SetExtraImageHash(bytes32 indexed _imageHash, uint256 _expiration); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleHooks.sol/contract.ModuleHooks.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleHooks.sol/contract.ModuleHooks.md deleted file mode 100644 index ba8fc7c128..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleHooks.sol/contract.ModuleHooks.md +++ /dev/null @@ -1,202 +0,0 @@ -# ModuleHooks -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleHooks.sol) - -**Inherits:** -[IERC1155Receiver](/home/dargon789/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC1155Receiver.sol/interface.IERC1155Receiver.md), [IERC721Receiver](/home/dargon789/wallet-contracts/docs/src/contracts/interfaces/receivers/IERC721Receiver.sol/interface.IERC721Receiver.md), [IModuleHooks](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleHooks.sol/interface.IModuleHooks.md), [ModuleERC165](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md), [ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md) - - -## State Variables -### HOOKS_KEY - -```solidity -bytes32 private constant HOOKS_KEY = bytes32(0xbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a120) -``` - - -## Functions -### readHook - -Reads the implementation hook of a signature - - -```solidity -function readHook(bytes4 _signature) external view virtual override returns (address); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_signature`|`bytes4`|Signature function| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`address`|The address of the implementation hook, address(0) if none| - - -### addHook - -Adds a new hook to handle a given function selector - -Can't overwrite hooks that are part of the main module (those defined below) - - -```solidity -function addHook(bytes4 _signature, address _implementation) external virtual override onlySelf; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_signature`|`bytes4`|Signature function linked to the hook| -|`_implementation`|`address`|Hook implementation contract| - - -### removeHook - -Removes a registered hook - -Can't remove hooks that are part of the main module (those defined below) -without upgrading the wallet - - -```solidity -function removeHook(bytes4 _signature) external virtual override onlySelf; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_signature`|`bytes4`|Signature function linked to the hook| - - -### _readHook - -Reads the implementation hook of a signature - - -```solidity -function _readHook(bytes4 _signature) private view returns (address); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_signature`|`bytes4`|Signature function| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`address`|The address of the implementation hook, address(0) if none| - - -### _writeHook - -Writes the implementation hook of a signature - - -```solidity -function _writeHook(bytes4 _signature, address _implementation) private; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_signature`|`bytes4`|Signature function| -|`_implementation`|`address`|Hook implementation contract| - - -### onERC1155Received - -Handle the receipt of a single ERC1155 token type. - - -```solidity -function onERC1155Received(address, address, uint256, uint256, bytes calldata) - external - virtual - override - returns (bytes4); -``` -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes4`|`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`| - - -### onERC1155BatchReceived - -Handle the receipt of multiple ERC1155 token types. - - -```solidity -function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) - external - virtual - override - returns (bytes4); -``` -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes4`|`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`| - - -### onERC721Received - -Handle the receipt of a single ERC721 token. - - -```solidity -function onERC721Received(address, address, uint256, bytes calldata) external virtual override returns (bytes4); -``` -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes4`|`bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`| - - -### fallback - -Routes fallback calls through hooks - - -```solidity -fallback() external payable; -``` - -### receive - -Allows the wallet to receive ETH - - -```solidity -receive() external payable; -``` - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleIPFS.sol/contract.ModuleIPFS.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleIPFS.sol/contract.ModuleIPFS.md deleted file mode 100644 index d871bd84ca..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleIPFS.sol/contract.ModuleIPFS.md +++ /dev/null @@ -1,52 +0,0 @@ -# ModuleIPFS -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleIPFS.sol) - -**Inherits:** -[ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md) - - -## State Variables -### IPFS_ROOT_KEY - -```solidity -bytes32 private constant IPFS_ROOT_KEY = - bytes32(0x0eecac93ced8722d209199364cda3bc33da3bc3a23daef6be49ebd780511d033) -``` - - -## Functions -### ipfsRootBytes32 - - -```solidity -function ipfsRootBytes32() public view returns (bytes32); -``` - -### ipfsRoot - - -```solidity -function ipfsRoot() public view returns (string memory); -``` - -### updateIPFSRoot - - -```solidity -function updateIPFSRoot(bytes32 _hash) external onlySelf; -``` - -### _updateIPFSRoot - - -```solidity -function _updateIPFSRoot(bytes32 _hash) internal; -``` - -## Events -### IPFSRootUpdated - -```solidity -event IPFSRootUpdated(bytes32 _hash); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleNonce.sol/contract.ModuleNonce.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleNonce.sol/contract.ModuleNonce.md deleted file mode 100644 index a10e72eac9..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleNonce.sol/contract.ModuleNonce.md +++ /dev/null @@ -1,96 +0,0 @@ -# ModuleNonce -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleNonce.sol) - - -## State Variables -### NONCE_KEY - -```solidity -bytes32 private constant NONCE_KEY = bytes32(0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e) -``` - - -## Functions -### nonce - -Returns the next nonce of the default nonce space - -The default nonce space is 0x00 - - -```solidity -function nonce() external view virtual returns (uint256); -``` -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`uint256`|The next nonce| - - -### readNonce - -Returns the next nonce of the given nonce space - - -```solidity -function readNonce(uint256 _space) public view virtual returns (uint256); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_space`|`uint256`|Nonce space, each space keeps an independent nonce count| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`uint256`|The next nonce| - - -### _writeNonce - -Changes the next nonce of the given nonce space - - -```solidity -function _writeNonce(uint256 _space, uint256 _nonce) internal; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_space`|`uint256`|Nonce space, each space keeps an independent nonce count| -|`_nonce`|`uint256`|Nonce to write on the space| - - -### _validateNonce - -Verify if a nonce is valid - - -```solidity -function _validateNonce(uint256 _rawNonce) internal virtual; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_rawNonce`|`uint256`|Nonce to validate (may contain an encoded space)| - - -## Events -### NonceChange - -```solidity -event NonceChange(uint256 _space, uint256 _newNonce); -``` - -## Errors -### BadNonce - -```solidity -error BadNonce(uint256 _space, uint256 _provided, uint256 _current); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleOnlyDelegatecall.sol/contract.ModuleOnlyDelegatecall.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleOnlyDelegatecall.sol/contract.ModuleOnlyDelegatecall.md deleted file mode 100644 index 3704b9fbdf..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleOnlyDelegatecall.sol/contract.ModuleOnlyDelegatecall.md +++ /dev/null @@ -1,36 +0,0 @@ -# ModuleOnlyDelegatecall -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleOnlyDelegatecall.sol) - - -## State Variables -### self - -```solidity -address private immutable self -``` - - -## Functions -### constructor - - -```solidity -constructor() ; -``` - -### onlyDelegatecall - -Modifier that only allows functions to be called via delegatecall. - - -```solidity -modifier onlyDelegatecall() ; -``` - -## Errors -### OnlyDelegatecall - -```solidity -error OnlyDelegatecall(); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md deleted file mode 100644 index 03e4b82442..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md +++ /dev/null @@ -1,19 +0,0 @@ -# ModuleSelfAuth -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleSelfAuth.sol) - - -## Functions -### onlySelf - - -```solidity -modifier onlySelf() ; -``` - -## Errors -### OnlySelfAuth - -```solidity -error OnlySelfAuth(address _sender, address _self); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleStorage.sol/library.ModuleStorage.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleStorage.sol/library.ModuleStorage.md deleted file mode 100644 index ecd0209c38..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleStorage.sol/library.ModuleStorage.md +++ /dev/null @@ -1,33 +0,0 @@ -# ModuleStorage -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleStorage.sol) - - -## Functions -### writeBytes32 - - -```solidity -function writeBytes32(bytes32 _key, bytes32 _val) internal; -``` - -### readBytes32 - - -```solidity -function readBytes32(bytes32 _key) internal view returns (bytes32 val); -``` - -### writeBytes32Map - - -```solidity -function writeBytes32Map(bytes32 _key, bytes32 _subKey, bytes32 _val) internal; -``` - -### readBytes32Map - - -```solidity -function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleUpdate.sol/contract.ModuleUpdate.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleUpdate.sol/contract.ModuleUpdate.md deleted file mode 100644 index 91abdfdde0..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/ModuleUpdate.sol/contract.ModuleUpdate.md +++ /dev/null @@ -1,70 +0,0 @@ -# ModuleUpdate -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/ModuleUpdate.sol) - -**Inherits:** -[IModuleUpdate](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleUpdate.sol/abstract.IModuleUpdate.md), [ModuleERC165](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleERC165.sol/abstract.ModuleERC165.md), [ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md), [Implementation](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/Implementation.sol/contract.Implementation.md) - - -## Functions -### updateImplementation - -Updates the implementation of the base wallet - -WARNING Updating the implementation can brick the wallet - - -```solidity -function updateImplementation(address _implementation) external virtual override onlySelf; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_implementation`|`address`|New main module implementation| - - -### _updateImplementation - -Updates the implementation of the base wallet, used internally. - -WARNING Updating the implementation can brick the wallet - - -```solidity -function _updateImplementation(address _implementation) internal virtual override; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_implementation`|`address`|New main module implementation| - - -### supportsInterface - -Query if a contract implements an interface - - -```solidity -function supportsInterface(bytes4 _interfaceID) public pure virtual override returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_interfaceID`|`bytes4`|The interface identifier, as specified in ERC-165| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|`true` if the contract implements `_interfaceID`| - - -## Events -### ImplementationUpdated - -```solidity -event ImplementationUpdated(address newImplementation); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/README.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/README.md deleted file mode 100644 index 59da911372..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/README.md +++ /dev/null @@ -1,23 +0,0 @@ - - -# Contents -- [gas-estimation](/contracts/modules/commons/gas-estimation) -- [interfaces](/contracts/modules/commons/interfaces) -- [submodules](/contracts/modules/commons/submodules) -- [Implementation](Implementation.sol/contract.Implementation.md) -- [ModuleAuth](ModuleAuth.sol/abstract.ModuleAuth.md) -- [ModuleAuthConvenience](ModuleAuthConvenience.sol/abstract.ModuleAuthConvenience.md) -- [ModuleAuthFixed](ModuleAuthFixed.sol/abstract.ModuleAuthFixed.md) -- [ModuleAuthUpgradable](ModuleAuthUpgradable.sol/abstract.ModuleAuthUpgradable.md) -- [ModuleCalls](ModuleCalls.sol/abstract.ModuleCalls.md) -- [ModuleCreator](ModuleCreator.sol/contract.ModuleCreator.md) -- [ModuleERC165](ModuleERC165.sol/abstract.ModuleERC165.md) -- [ModuleERC5719](ModuleERC5719.sol/contract.ModuleERC5719.md) -- [ModuleExtraAuth](ModuleExtraAuth.sol/abstract.ModuleExtraAuth.md) -- [ModuleHooks](ModuleHooks.sol/contract.ModuleHooks.md) -- [ModuleIPFS](ModuleIPFS.sol/contract.ModuleIPFS.md) -- [ModuleNonce](ModuleNonce.sol/contract.ModuleNonce.md) -- [ModuleOnlyDelegatecall](ModuleOnlyDelegatecall.sol/contract.ModuleOnlyDelegatecall.md) -- [ModuleSelfAuth](ModuleSelfAuth.sol/contract.ModuleSelfAuth.md) -- [ModuleStorage](ModuleStorage.sol/library.ModuleStorage.md) -- [ModuleUpdate](ModuleUpdate.sol/contract.ModuleUpdate.md) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol/abstract.ModuleIgnoreAuthUpgradable.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol/abstract.ModuleIgnoreAuthUpgradable.md deleted file mode 100644 index d3da287bf1..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol/abstract.ModuleIgnoreAuthUpgradable.md +++ /dev/null @@ -1,32 +0,0 @@ -# ModuleIgnoreAuthUpgradable -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/gas-estimation/ModuleIgnoreAuthUpgradable.sol) - -**Inherits:** -[ModuleAuthUpgradable](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleAuthUpgradable.sol/abstract.ModuleAuthUpgradable.md) - -Implements ModuleAuthUpgradable but ignores the validity of the signature -should only be used during gas estimation. - - -## Functions -### _isValidImage - -Removes the signature validation from the module, by returning true for any _imageHash - - -```solidity -function _isValidImage(bytes32 _imageHash) internal view virtual override(ModuleAuthUpgradable) returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|Hash image of signature| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|true always| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/ModuleIgnoreNonceCalls.sol/abstract.ModuleIgnoreNonceCalls.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/ModuleIgnoreNonceCalls.sol/abstract.ModuleIgnoreNonceCalls.md deleted file mode 100644 index 3895b32b25..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/ModuleIgnoreNonceCalls.sol/abstract.ModuleIgnoreNonceCalls.md +++ /dev/null @@ -1,26 +0,0 @@ -# ModuleIgnoreNonceCalls -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/gas-estimation/ModuleIgnoreNonceCalls.sol) - -**Inherits:** -[ModuleCalls](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleCalls.sol/abstract.ModuleCalls.md) - -Implements ModuleCalls but ignores the validity of the nonce -should only be used during gas estimation. - - -## Functions -### _validateNonce - -Verify if a nonce is valid - - -```solidity -function _validateNonce(uint256 _rawNonce) internal virtual override; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_rawNonce`|`uint256`|Nonce to validate (may contain an encoded space)| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/README.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/README.md deleted file mode 100644 index 5a5ea3ddc5..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/gas-estimation/README.md +++ /dev/null @@ -1,5 +0,0 @@ - - -# Contents -- [ModuleIgnoreAuthUpgradable](ModuleIgnoreAuthUpgradable.sol/abstract.ModuleIgnoreAuthUpgradable.md) -- [ModuleIgnoreNonceCalls](ModuleIgnoreNonceCalls.sol/abstract.ModuleIgnoreNonceCalls.md) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuth.sol/abstract.IModuleAuth.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuth.sol/abstract.IModuleAuth.md deleted file mode 100644 index 7b62d2f9c4..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuth.sol/abstract.IModuleAuth.md +++ /dev/null @@ -1,101 +0,0 @@ -# IModuleAuth -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/interfaces/IModuleAuth.sol) - - -## State Variables -### IMAGE_HASH_KEY - -```solidity -bytes32 internal constant IMAGE_HASH_KEY = - bytes32(0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8) -``` - - -## Functions -### _signatureValidation - - -```solidity -function _signatureValidation(bytes32 _digest, bytes calldata _signature) - internal - view - virtual - returns (bool isValid, bytes32 subdigest); -``` - -### signatureRecovery - - -```solidity -function signatureRecovery(bytes32 _digest, bytes calldata _signature) - public - view - virtual - returns (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 checkpoint); -``` - -### _isValidImage - -Validates the signature image - - -```solidity -function _isValidImage(bytes32) internal view virtual returns (bool); -``` -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|true if the signature image is valid| - - -### updateImageHash - -Updates the signers configuration of the wallet - - -```solidity -function updateImageHash(bytes32 _imageHash) external virtual; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|New required image hash of the signature| - - -### _updateImageHash - -Updates the signers configuration of the wallet - - -```solidity -function _updateImageHash(bytes32 _imageHash) internal virtual; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|New required image hash of the signature| - - -## Events -### ImageHashUpdated - -```solidity -event ImageHashUpdated(bytes32 newImageHash); -``` - -## Errors -### ImageHashIsZero - -```solidity -error ImageHashIsZero(); -``` - -### InvalidSignatureType - -```solidity -error InvalidSignatureType(bytes1 _type); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuthUpgradable.sol/interface.IModuleAuthUpgradable.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuthUpgradable.sol/interface.IModuleAuthUpgradable.md deleted file mode 100644 index 00f2551a1c..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuthUpgradable.sol/interface.IModuleAuthUpgradable.md +++ /dev/null @@ -1,14 +0,0 @@ -# IModuleAuthUpgradable -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/interfaces/IModuleAuthUpgradable.sol) - - -## Functions -### imageHash - -Returns the current image hash of the wallet - - -```solidity -function imageHash() external view returns (bytes32); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleCalls.sol/interface.IModuleCalls.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleCalls.sol/interface.IModuleCalls.md deleted file mode 100644 index c27a52b38d..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleCalls.sol/interface.IModuleCalls.md +++ /dev/null @@ -1,78 +0,0 @@ -# IModuleCalls -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/interfaces/IModuleCalls.sol) - - -## Functions -### execute - -Allow wallet owner to execute an action - - -```solidity -function execute(Transaction[] calldata _txs, uint256 _nonce, bytes calldata _signature) external; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txs`|`Transaction[]`| Transactions to process| -|`_nonce`|`uint256`| Signature nonce (may contain an encoded space)| -|`_signature`|`bytes`| Encoded signature| - - -### selfExecute - -Allow wallet to execute an action -without signing the message - - -```solidity -function selfExecute(Transaction[] calldata _txs) external; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_txs`|`Transaction[]`| Transactions to execute| - - -## Events -### TxFailed - -```solidity -event TxFailed(bytes32 indexed _tx, uint256 _index, bytes _reason); -``` - -### TxExecuted - -```solidity -event TxExecuted(bytes32 indexed _tx, uint256 _index); -``` - -## Errors -### NotEnoughGas - -```solidity -error NotEnoughGas(uint256 _index, uint256 _requested, uint256 _available); -``` - -### InvalidSignature - -```solidity -error InvalidSignature(bytes32 _hash, bytes _signature); -``` - -## Structs -### Transaction - -```solidity -struct Transaction { - bool delegateCall; // Performs delegatecall - bool revertOnError; // Reverts transaction bundle if tx fails - uint256 gasLimit; // Maximum gas to be forwarded - address target; // Address of the contract to call - uint256 value; // Amount of ETH to pass with the call - bytes data; // calldata to pass -} -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleCreator.sol/interface.IModuleCreator.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleCreator.sol/interface.IModuleCreator.md deleted file mode 100644 index 1b9319007e..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleCreator.sol/interface.IModuleCreator.md +++ /dev/null @@ -1,33 +0,0 @@ -# IModuleCreator -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/interfaces/IModuleCreator.sol) - - -## Functions -### createContract - -Creates a contract forwarding eth value - - -```solidity -function createContract(bytes calldata _code) external payable returns (address addr); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_code`|`bytes`|Creation code of the contract| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`addr`|`address`|The address of the created contract| - - -## Errors -### CreateFailed - -```solidity -error CreateFailed(bytes _code); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleHooks.sol/interface.IModuleHooks.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleHooks.sol/interface.IModuleHooks.md deleted file mode 100644 index a1cc8907d9..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleHooks.sol/interface.IModuleHooks.md +++ /dev/null @@ -1,77 +0,0 @@ -# IModuleHooks -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/interfaces/IModuleHooks.sol) - - -## Functions -### readHook - -Reads the implementation hook of a signature - - -```solidity -function readHook(bytes4 _signature) external view returns (address); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_signature`|`bytes4`|Signature function| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`address`|The address of the implementation hook, address(0) if none| - - -### addHook - -Adds a new hook to handle a given function selector - - -```solidity -function addHook(bytes4 _signature, address _implementation) external; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_signature`|`bytes4`|Signature function linked to the hook| -|`_implementation`|`address`|Hook implementation contract| - - -### removeHook - -Removes a registered hook - - -```solidity -function removeHook(bytes4 _signature) external; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_signature`|`bytes4`|Signature function linked to the hook| - - -## Events -### DefinedHook - -```solidity -event DefinedHook(bytes4 _signature, address _implementation); -``` - -## Errors -### HookAlreadyExists - -```solidity -error HookAlreadyExists(bytes4 _signature); -``` - -### HookDoesNotExist - -```solidity -error HookDoesNotExist(bytes4 _signature); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleUpdate.sol/abstract.IModuleUpdate.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleUpdate.sol/abstract.IModuleUpdate.md deleted file mode 100644 index 5a8be6f241..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleUpdate.sol/abstract.IModuleUpdate.md +++ /dev/null @@ -1,46 +0,0 @@ -# IModuleUpdate -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/interfaces/IModuleUpdate.sol) - - -## Functions -### updateImplementation - -Updates the implementation of the base wallet - -WARNING Updating the implementation can brick the wallet - - -```solidity -function updateImplementation(address _implementation) external virtual; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_implementation`|`address`|New main module implementation| - - -### _updateImplementation - -Updates the implementation of the base wallet, used internally. - -WARNING Updating the implementation can brick the wallet - - -```solidity -function _updateImplementation(address _implementation) internal virtual; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_implementation`|`address`|New main module implementation| - - -## Errors -### InvalidImplementation - -```solidity -error InvalidImplementation(address _implementation); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/README.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/README.md deleted file mode 100644 index c23c874119..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/interfaces/README.md +++ /dev/null @@ -1,9 +0,0 @@ - - -# Contents -- [IModuleAuth](IModuleAuth.sol/abstract.IModuleAuth.md) -- [IModuleAuthUpgradable](IModuleAuthUpgradable.sol/interface.IModuleAuthUpgradable.md) -- [IModuleCalls](IModuleCalls.sol/interface.IModuleCalls.md) -- [IModuleCreator](IModuleCreator.sol/interface.IModuleCreator.md) -- [IModuleHooks](IModuleHooks.sol/interface.IModuleHooks.md) -- [IModuleUpdate](IModuleUpdate.sol/abstract.IModuleUpdate.md) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/README.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/README.md deleted file mode 100644 index 86110985fd..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/README.md +++ /dev/null @@ -1,5 +0,0 @@ - - -# Contents -- [auth](/contracts/modules/commons/submodules/auth) -- [nonce](/contracts/modules/commons/submodules/nonce) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/README.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/README.md deleted file mode 100644 index c19a5f59a6..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/README.md +++ /dev/null @@ -1,7 +0,0 @@ - - -# Contents -- [SequenceBaseSig](SequenceBaseSig.sol/library.SequenceBaseSig.md) -- [SequenceChainedSig](SequenceChainedSig.sol/abstract.SequenceChainedSig.md) -- [SequenceDynamicSig](SequenceDynamicSig.sol/library.SequenceDynamicSig.md) -- [SequenceNoChainIdSig](SequenceNoChainIdSig.sol/library.SequenceNoChainIdSig.md) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol/library.SequenceBaseSig.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol/library.SequenceBaseSig.md deleted file mode 100644 index 73d8121a13..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol/library.SequenceBaseSig.md +++ /dev/null @@ -1,225 +0,0 @@ -# SequenceBaseSig -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/submodules/auth/SequenceBaseSig.sol) - -**Author:** -Agustin Aguilar (aa@horizon.io) - -A Solidity implementation for handling signatures in the Sequence protocol. - - -## State Variables -### FLAG_SIGNATURE - -```solidity -uint256 internal constant FLAG_SIGNATURE = 0 -``` - - -### FLAG_ADDRESS - -```solidity -uint256 internal constant FLAG_ADDRESS = 1 -``` - - -### FLAG_DYNAMIC_SIGNATURE - -```solidity -uint256 internal constant FLAG_DYNAMIC_SIGNATURE = 2 -``` - - -### FLAG_NODE - -```solidity -uint256 internal constant FLAG_NODE = 3 -``` - - -### FLAG_BRANCH - -```solidity -uint256 internal constant FLAG_BRANCH = 4 -``` - - -### FLAG_SUBDIGEST - -```solidity -uint256 internal constant FLAG_SUBDIGEST = 5 -``` - - -### FLAG_NESTED - -```solidity -uint256 internal constant FLAG_NESTED = 6 -``` - - -## Functions -### subdigest - -Generates a subdigest for the input digest (unique for this wallet and network). - - -```solidity -function subdigest(bytes32 _digest) internal view returns (bytes32); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_digest`|`bytes32`|The input digest to generate the subdigest from.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes32`|bytes32 The subdigest generated from the input digest.| - - -### _leafForAddressAndWeight - -Generates the leaf for an address and weight. - -The leaf is generated by concatenating the address and weight. - - -```solidity -function _leafForAddressAndWeight(address _addr, uint96 _weight) internal pure returns (bytes32); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_addr`|`address`|The address to generate the leaf for.| -|`_weight`|`uint96`|The weight to generate the leaf for.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes32`|bytes32 The leaf generated from the address and weight.| - - -### _leafForHardcodedSubdigest - -Generates the leaf for a hardcoded subdigest. - -The leaf is generated by hashing 'Sequence static digest:\n' and the subdigest. - - -```solidity -function _leafForHardcodedSubdigest(bytes32 _subdigest) internal pure returns (bytes32); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_subdigest`|`bytes32`|The subdigest to generate the leaf for.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes32`|bytes32 The leaf generated from the hardcoded subdigest.| - - -### _leafForNested - -Generates the leaf for a nested tree node. - -The leaf is generated by hashing 'Sequence nested config:\n', the node, the threshold and the weight. - - -```solidity -function _leafForNested(bytes32 _node, uint256 _threshold, uint256 _weight) internal pure returns (bytes32); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_node`|`bytes32`|The root of the node to generate the leaf for.| -|`_threshold`|`uint256`|The internal threshold of the tree.| -|`_weight`|`uint256`|The external weight of the tree.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes32`|bytes32 The leaf generated from the nested tree.| - - -### recoverBranch - -Returns the weight and root of a signature branch. - -If the signature contains a hardcoded subdigest, and it matches the input digest, then the weight is set to 2 ** 256 - 1. - - -```solidity -function recoverBranch(bytes32 _subdigest, bytes calldata _signature) - internal - view - returns (uint256 weight, bytes32 root); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_subdigest`|`bytes32`|The digest to verify the signature against.| -|`_signature`|`bytes`|The signature branch to recover.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`weight`|`uint256`|The total weight of the recovered signatures.| -|`root`|`bytes32`|The root hash of the recovered configuration.| - - -### recover - -Returns the threshold, weight, root, and checkpoint of a signature. - -To verify the signature, the weight must be greater than or equal to the threshold, and the root -must match the expected `imageHash` of the wallet. - - -```solidity -function recover(bytes32 _subdigest, bytes calldata _signature) - internal - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_subdigest`|`bytes32`|The digest to verify the signature against.| -|`_signature`|`bytes`|The signature to recover.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`threshold`|`uint256`|The minimum weight required for the signature to be valid.| -|`weight`|`uint256`|The total weight of the recovered signatures.| -|`imageHash`|`bytes32`|The root hash of the recovered configuration| -|`checkpoint`|`uint256`|The checkpoint of the signature.| - - -## Errors -### InvalidNestedSignature - -```solidity -error InvalidNestedSignature(bytes32 _hash, address _addr, bytes _signature); -``` - -### InvalidSignatureFlag - -```solidity -error InvalidSignatureFlag(uint256 _flag); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol/abstract.SequenceChainedSig.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol/abstract.SequenceChainedSig.md deleted file mode 100644 index 299493ce3c..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol/abstract.SequenceChainedSig.md +++ /dev/null @@ -1,91 +0,0 @@ -# SequenceChainedSig -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/submodules/auth/SequenceChainedSig.sol) - -**Inherits:** -[IModuleAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/interfaces/IModuleAuth.sol/abstract.IModuleAuth.md), [ModuleSelfAuth](/home/dargon789/wallet-contracts/docs/src/contracts/modules/commons/ModuleSelfAuth.sol/contract.ModuleSelfAuth.md) - -**Author:** -Agustin Aguilar (aa@horizon.io) - -Defines Sequence signatures that work by delegating control to new configurations. - -The delegations can be chained together, the first signature is the one that is used to validate -the message, the last signature must match the current on-chain configuration of the wallet. - - -## State Variables -### SET_IMAGE_HASH_TYPE_HASH - -```solidity -bytes32 public constant SET_IMAGE_HASH_TYPE_HASH = keccak256("SetImageHash(bytes32 imageHash)") -``` - - -## Functions -### _hashSetImageHashStruct - -Defined the special token that must be signed to delegate control to a new configuration. - - -```solidity -function _hashSetImageHashStruct(bytes32 _imageHash) internal pure returns (bytes32); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_imageHash`|`bytes32`|The hash of the new configuration.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes32`|bytes32 The message hash to be signed.| - - -### chainedRecover - -Returns the threshold, weight, root, and checkpoint of a (chained) signature. - -This method return the `threshold`, `weight` and `imageHash` of the last signature in the chain. -Intermediate signatures are validated directly in this method. The `subdigest` is the one of the -first signature in the chain (since that's the one that is used to validate the message). - - -```solidity -function chainedRecover(bytes32 _digest, bytes calldata _signature) - internal - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 checkpoint); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_digest`|`bytes32`|The digest to recover the signature from.| -|`_signature`|`bytes`|The signature to recover.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`threshold`|`uint256`|The threshold of the (last) signature.| -|`weight`|`uint256`|The weight of the (last) signature.| -|`imageHash`|`bytes32`|The image hash of the (last) signature.| -|`subdigest`|`bytes32`|The subdigest of the (first) signature in the chain.| -|`checkpoint`|`uint256`|The checkpoint of the (last) signature.| - - -## Errors -### LowWeightChainedSignature - -```solidity -error LowWeightChainedSignature(bytes _signature, uint256 threshold, uint256 _weight); -``` - -### WrongChainedCheckpointOrder - -```solidity -error WrongChainedCheckpointOrder(uint256 _current, uint256 _prev); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol/library.SequenceDynamicSig.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol/library.SequenceDynamicSig.md deleted file mode 100644 index 9fe9b4a99d..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol/library.SequenceDynamicSig.md +++ /dev/null @@ -1,35 +0,0 @@ -# SequenceDynamicSig -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol) - - -## Functions -### recover - -Recover a "dynamically encoded" Sequence signature. - -The Signature is stripped of the first byte, which is the encoding flag. - - -```solidity -function recover(bytes32 _subdigest, bytes calldata _signature) - internal - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_subdigest`|`bytes32`|The digest of the signature.| -|`_signature`|`bytes`|The Sequence signature.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`threshold`|`uint256`|The threshold weight required to validate the signature.| -|`weight`|`uint256`|The weight of the signature.| -|`imageHash`|`bytes32`|The hash of the recovered configuration.| -|`checkpoint`|`uint256`|The checkpoint of the configuration.| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol/library.SequenceNoChainIdSig.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol/library.SequenceNoChainIdSig.md deleted file mode 100644 index b0cc788eab..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol/library.SequenceNoChainIdSig.md +++ /dev/null @@ -1,28 +0,0 @@ -# SequenceNoChainIdSig -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol) - - -## Functions -### subdigest - -Computes a subdigest for a Sequence signature that works on all chains. - -The subdigest is computed by removing the chain ID from the digest (using 0 instead). - - -```solidity -function subdigest(bytes32 _digest) internal view returns (bytes32); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_digest`|`bytes32`|The digest of the chain of signatures.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bytes32`|bytes32 The subdigest with no chain ID.| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/nonce/README.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/nonce/README.md deleted file mode 100644 index fe84b67cec..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/nonce/README.md +++ /dev/null @@ -1,4 +0,0 @@ - - -# Contents -- [SubModuleNonce](SubModuleNonce.sol/library.SubModuleNonce.md) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol/library.SubModuleNonce.md b/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol/library.SubModuleNonce.md deleted file mode 100644 index 0f65c75a90..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol/library.SubModuleNonce.md +++ /dev/null @@ -1,51 +0,0 @@ -# SubModuleNonce -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/commons/submodules/nonce/SubModuleNonce.sol) - - -## State Variables -### NONCE_BITS - -```solidity -uint256 internal constant NONCE_BITS = 96 -``` - - -### NONCE_MASK - -```solidity -bytes32 internal constant NONCE_MASK = bytes32(uint256(type(uint96).max)) -``` - - -## Functions -### decodeNonce - -Decodes a raw nonce - -Schema: space[160]:type[96] - - -```solidity -function decodeNonce(uint256 _rawNonce) internal pure returns (uint256 _space, uint256 _nonce); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_rawNonce`|`uint256`|Nonce to be decoded| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`_space`|`uint256`|The nonce space of the raw nonce| -|`_nonce`|`uint256`|The nonce of the raw nonce| - - -### encodeNonce - - -```solidity -function encodeNonce(uint256 _space, uint256 _nonce) internal pure returns (uint256); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/utils/GasEstimator.sol/contract.GasEstimator.md b/packages/wallet-contracts/docs/src/contracts/modules/utils/GasEstimator.sol/contract.GasEstimator.md deleted file mode 100644 index 6e07e6de10..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/utils/GasEstimator.sol/contract.GasEstimator.md +++ /dev/null @@ -1,14 +0,0 @@ -# GasEstimator -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/utils/GasEstimator.sol) - - -## Functions -### estimate - - -```solidity -function estimate(address _to, bytes calldata _data) - external - returns (bool success, bytes memory result, uint256 gas); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/utils/MultiCallUtils.sol/contract.MultiCallUtils.md b/packages/wallet-contracts/docs/src/contracts/modules/utils/MultiCallUtils.sol/contract.MultiCallUtils.md deleted file mode 100644 index 7dcf5e935e..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/utils/MultiCallUtils.sol/contract.MultiCallUtils.md +++ /dev/null @@ -1,133 +0,0 @@ -# MultiCallUtils -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/utils/MultiCallUtils.sol) - - -## Functions -### multiCall - - -```solidity -function multiCall(IModuleCalls.Transaction[] memory _txs) - public - payable - returns (bool[] memory _successes, bytes[] memory _results); -``` - -### callBlockhash - - -```solidity -function callBlockhash(uint256 _i) external view returns (bytes32); -``` - -### callCoinbase - - -```solidity -function callCoinbase() external view returns (address); -``` - -### callDifficulty - - -```solidity -function callDifficulty() external view returns (uint256); -``` - -### callPrevrandao - - -```solidity -function callPrevrandao() external view returns (uint256); -``` - -### callGasLimit - - -```solidity -function callGasLimit() external view returns (uint256); -``` - -### callBlockNumber - - -```solidity -function callBlockNumber() external view returns (uint256); -``` - -### callTimestamp - - -```solidity -function callTimestamp() external view returns (uint256); -``` - -### callGasLeft - - -```solidity -function callGasLeft() external view returns (uint256); -``` - -### callGasPrice - - -```solidity -function callGasPrice() external view returns (uint256); -``` - -### callOrigin - - -```solidity -function callOrigin() external view returns (address); -``` - -### callBalanceOf - - -```solidity -function callBalanceOf(address _addr) external view returns (uint256); -``` - -### callCodeSize - - -```solidity -function callCodeSize(address _addr) external view returns (uint256 size); -``` - -### callCode - - -```solidity -function callCode(address _addr) external view returns (bytes memory code); -``` - -### callCodeHash - - -```solidity -function callCodeHash(address _addr) external view returns (bytes32 codeHash); -``` - -### callChainId - - -```solidity -function callChainId() external view returns (uint256 id); -``` - -## Errors -### DelegateCallNotAllowed - -```solidity -error DelegateCallNotAllowed(uint256 _index); -``` - -### CallReverted - -```solidity -error CallReverted(uint256 _index, bytes _result); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/utils/README.md b/packages/wallet-contracts/docs/src/contracts/modules/utils/README.md deleted file mode 100644 index 2e46e3c6ac..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/utils/README.md +++ /dev/null @@ -1,7 +0,0 @@ - - -# Contents -- [GasEstimator](GasEstimator.sol/contract.GasEstimator.md) -- [MultiCallUtils](MultiCallUtils.sol/contract.MultiCallUtils.md) -- [RequireUtils](RequireUtils.sol/contract.RequireUtils.md) -- [SequenceUtils](SequenceUtils.sol/contract.SequenceUtils.md) diff --git a/packages/wallet-contracts/docs/src/contracts/modules/utils/RequireUtils.sol/contract.RequireUtils.md b/packages/wallet-contracts/docs/src/contracts/modules/utils/RequireUtils.sol/contract.RequireUtils.md deleted file mode 100644 index fb8ff96cba..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/utils/RequireUtils.sol/contract.RequireUtils.md +++ /dev/null @@ -1,149 +0,0 @@ -# RequireUtils -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/utils/RequireUtils.sol) - - -## Functions -### requireNonExpired - -Validates that a given expiration hasn't expired - -Used as an optional transaction on a Sequence batch, to create expirable transactions. - - -```solidity -function requireNonExpired(uint256 _expiration) external view; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_expiration`|`uint256`| Expiration to check| - - -### requireMinNonce - -Validates that a given wallet has reached a given nonce - -Used as an optional transaction on a Sequence batch, to define transaction execution order - - -```solidity -function requireMinNonce(address _wallet, uint256 _nonce) external view; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_wallet`|`address`|Sequence wallet| -|`_nonce`|`uint256`| Required nonce| - - -### requireMinERC20Balance - -Validates that a wallet has a minimum ERC20 token balance - - -```solidity -function requireMinERC20Balance(address _token, address _wallet, uint256 _minBalance) external view; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_token`|`address`|ERC20 token address| -|`_wallet`|`address`|Sequence wallet| -|`_minBalance`|`uint256`|Minimum required balance| - - -### requireMinERC20Allowance - -Validates that a wallet has a minimum ERC20 allowance for a spender - - -```solidity -function requireMinERC20Allowance(address _token, address _owner, address _spender, uint256 _minAllowance) - external - view; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_token`|`address`|ERC20 token address| -|`_owner`|`address`|Sequence wallet| -|`_spender`|`address`|Address allowed to spend the tokens| -|`_minAllowance`|`uint256`|Minimum required allowance| - - -### requireERC721Ownership - -Validates that a wallet owns a specific ERC721 token - - -```solidity -function requireERC721Ownership(address _token, address _wallet, uint256 _tokenId) external view; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_token`|`address`|ERC721 token address| -|`_wallet`|`address`|Sequence wallet| -|`_tokenId`|`uint256`|Token ID to check for ownership| - - -### requireERC721Approval - -Validates that an ERC721 token is approved for a specific spender - - -```solidity -function requireERC721Approval(address _token, address _owner, address _spender, uint256 _tokenId) external view; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_token`|`address`|ERC721 token address| -|`_owner`|`address`|Sequence wallet| -|`_spender`|`address`|Address that should have approval| -|`_tokenId`|`uint256`|Token ID to check for approval| - - -### requireMinERC1155Balance - -Validates that a wallet has a minimum balance of an ERC1155 token - - -```solidity -function requireMinERC1155Balance(address _token, address _wallet, uint256 _tokenId, uint256 _minBalance) - external - view; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_token`|`address`|ERC1155 token address| -|`_wallet`|`address`|Sequence wallet| -|`_tokenId`|`uint256`|Token ID to check| -|`_minBalance`|`uint256`|Minimum required balance| - - -### requireERC1155Approval - -Validates that an ERC1155 token is approved for a specific operator - - -```solidity -function requireERC1155Approval(address _token, address _owner, address _operator) external view; -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_token`|`address`|ERC1155 token address| -|`_owner`|`address`|Sequence wallet| -|`_operator`|`address`|Address that should have operator approval| - - diff --git a/packages/wallet-contracts/docs/src/contracts/modules/utils/SequenceUtils.sol/contract.SequenceUtils.md b/packages/wallet-contracts/docs/src/contracts/modules/utils/SequenceUtils.sol/contract.SequenceUtils.md deleted file mode 100644 index f91b8e21cb..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/modules/utils/SequenceUtils.sol/contract.SequenceUtils.md +++ /dev/null @@ -1,7 +0,0 @@ -# SequenceUtils -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/modules/utils/SequenceUtils.sol) - -**Inherits:** -[MultiCallUtils](/home/dargon789/wallet-contracts/docs/src/contracts/modules/utils/MultiCallUtils.sol/contract.MultiCallUtils.md), [RequireUtils](/home/dargon789/wallet-contracts/docs/src/contracts/modules/utils/RequireUtils.sol/contract.RequireUtils.md) - - diff --git a/packages/wallet-contracts/docs/src/contracts/trust/README.md b/packages/wallet-contracts/docs/src/contracts/trust/README.md deleted file mode 100644 index 4252abd93a..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/trust/README.md +++ /dev/null @@ -1,6 +0,0 @@ - - -# Contents -- [Trust](Trust.sol/contract.Trust.md) -- [absDiff](Trust.sol/function.absDiff.md) -- [TrustFactory](TrustFactory.sol/contract.TrustFactory.md) diff --git a/packages/wallet-contracts/docs/src/contracts/trust/Trust.sol/contract.Trust.md b/packages/wallet-contracts/docs/src/contracts/trust/Trust.sol/contract.Trust.md deleted file mode 100644 index ed6d43c6fb..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/trust/Trust.sol/contract.Trust.md +++ /dev/null @@ -1,186 +0,0 @@ -# Trust -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/trust/Trust.sol) - -**Inherits:** -[IERC1271Wallet](/home/dargon789/wallet-contracts/docs/src/contracts/interfaces/IERC1271Wallet.sol/interface.IERC1271Wallet.md) - - -## State Variables -### owner - -```solidity -address public immutable owner -``` - - -### beneficiary - -```solidity -address public immutable beneficiary -``` - - -### duration - -```solidity -uint256 public immutable duration -``` - - -### unlocksAt - -```solidity -uint256 public unlocksAt = type(uint256).max -``` - - -### SELECTOR_ERC1271_BYTES_BYTES - -```solidity -bytes4 internal constant SELECTOR_ERC1271_BYTES_BYTES = 0x20c13b0b -``` - - -### SELECTOR_ERC1271_BYTES32_BYTES - -```solidity -bytes4 internal constant SELECTOR_ERC1271_BYTES32_BYTES = 0x1626ba7e -``` - - -## Functions -### constructor - - -```solidity -constructor(address _owner, address _beneficiary, uint256 _duration) ; -``` - -### onlyAllowed - - -```solidity -modifier onlyAllowed() ; -``` - -### onlyMember - - -```solidity -modifier onlyMember() ; -``` - -### isLocked - - -```solidity -function isLocked() public view returns (bool); -``` - -### setUnlocksAt - - -```solidity -function setUnlocksAt(uint256 _unlocksAt) external onlyMember; -``` - -### sendTransaction - - -```solidity -function sendTransaction(address payable _to, uint256 _value, bytes calldata _data) - external - onlyAllowed - returns (bytes memory); -``` - -### isValidSignature - - -```solidity -function isValidSignature(bytes calldata _data, bytes calldata _signature) external view returns (bytes4); -``` - -### isValidSignature - - -```solidity -function isValidSignature(bytes32 _hash, bytes calldata _signature) external view returns (bytes4); -``` - -### receive - - -```solidity -receive() external payable; -``` - -### fallback - - -```solidity -fallback() external payable; -``` - -## Events -### SetUnlocksAt - -```solidity -event SetUnlocksAt(uint256 _unlocksAt); -``` - -### SentTransaction - -```solidity -event SentTransaction(address payable _to, uint256 _value, bytes _data, bytes _result); -``` - -## Errors -### UnlockInThePast - -```solidity -error UnlockInThePast(uint256 _unlocksAt, uint256 _elapsed); -``` - -### UnlockTooEarly - -```solidity -error UnlockTooEarly(uint256 _unlocksAt, uint256 _diff); -``` - -### NotOwner - -```solidity -error NotOwner(address _sender); -``` - -### NotUnlocked - -```solidity -error NotUnlocked(uint256 _unlocksAt); -``` - -### FailedTransaction - -```solidity -error FailedTransaction(address payable _to, uint256 _value, bytes _data, bytes _result); -``` - -### EmptySignature - -```solidity -error EmptySignature(); -``` - -### InvalidSignatureFlag - -```solidity -error InvalidSignatureFlag(bytes _signature, bytes1 _flag); -``` - -### InvalidSignature - -```solidity -error InvalidSignature(bytes32 _hash, bytes32 _rehash, address _signer, bytes _signature); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/trust/Trust.sol/function.absDiff.md b/packages/wallet-contracts/docs/src/contracts/trust/Trust.sol/function.absDiff.md deleted file mode 100644 index 97adf7e8f5..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/trust/Trust.sol/function.absDiff.md +++ /dev/null @@ -1,8 +0,0 @@ -# absDiff -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/trust/Trust.sol) - - -```solidity -function absDiff(uint256 a, uint256 b) pure returns (bool, uint256); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/trust/TrustFactory.sol/contract.TrustFactory.md b/packages/wallet-contracts/docs/src/contracts/trust/TrustFactory.sol/contract.TrustFactory.md deleted file mode 100644 index 8f92c5125f..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/trust/TrustFactory.sol/contract.TrustFactory.md +++ /dev/null @@ -1,26 +0,0 @@ -# TrustFactory -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/trust/TrustFactory.sol) - - -## Functions -### trustCreationCode - - -```solidity -function trustCreationCode() external pure returns (bytes memory); -``` - -### addressOf - - -```solidity -function addressOf(address _owner, address _beneficiary, uint256 _duration) external view returns (address); -``` - -### deploy - - -```solidity -function deploy(address _owner, address _beneficiary, uint256 _duration) external returns (Trust); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/utils/LibAddress.sol/library.LibAddress.md b/packages/wallet-contracts/docs/src/contracts/utils/LibAddress.sol/library.LibAddress.md deleted file mode 100644 index f39aeb8990..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/utils/LibAddress.sol/library.LibAddress.md +++ /dev/null @@ -1,23 +0,0 @@ -# LibAddress -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/utils/LibAddress.sol) - - -## Functions -### isContract - -Will return true if provided address is a contract - -This contract will return false if called within the constructor of -a contract's deployment, as the code is not yet stored on-chain. - - -```solidity -function isContract(address account) internal view returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`account`|`address`|Address to verify if contract or not| - - diff --git a/packages/wallet-contracts/docs/src/contracts/utils/LibBytes.sol/library.LibBytes.md b/packages/wallet-contracts/docs/src/contracts/utils/LibBytes.sol/library.LibBytes.md deleted file mode 100644 index 4daa0b35a9..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/utils/LibBytes.sol/library.LibBytes.md +++ /dev/null @@ -1,114 +0,0 @@ -# LibBytes -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/utils/LibBytes.sol) - -**Author:** -Agustin Aguilar (aa@horizon.io) - -This library contains functions for reading data from bytes arrays. - -These functions do not check if the input index is within the bounds of the data array. -Reading out of bounds may return dirty values. - - -## Functions -### readBytes32 - -Returns the bytes32 value at the given index in the input data. - - -```solidity -function readBytes32(bytes calldata data, uint256 index) internal pure returns (bytes32 a); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`data`|`bytes`|The input data.| -|`index`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`bytes32`|The bytes32 value at the given index.| - - -### readUint8 - -Returns the uint8 value at the given index in the input data. - - -```solidity -function readUint8(bytes calldata data, uint256 index) internal pure returns (uint8 a); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`data`|`bytes`|The input data.| -|`index`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint8`|The uint8 value at the given index.| - - -### readFirstUint16 - -Returns the first uint16 value in the input data. - - -```solidity -function readFirstUint16(bytes calldata data) internal pure returns (uint16 a); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`data`|`bytes`|The input data.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint16`|The first uint16 value in the input data.| - - -### readUint32 - -Returns the uint32 value at the given index in the input data. - - -```solidity -function readUint32(bytes calldata data, uint256 index) internal pure returns (uint32 a); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`data`|`bytes`|The input data.| -|`index`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint32`|The uint32 value at the given index.| - - -### readMBytes4 - - -```solidity -function readMBytes4(bytes memory data, uint256 index) internal pure returns (bytes4 a); -``` - -### readMBytes32 - - -```solidity -function readMBytes32(bytes memory data, uint256 index) internal pure returns (bytes32 a); -``` - diff --git a/packages/wallet-contracts/docs/src/contracts/utils/LibBytesPointer.sol/library.LibBytesPointer.md b/packages/wallet-contracts/docs/src/contracts/utils/LibBytesPointer.sol/library.LibBytesPointer.md deleted file mode 100644 index 3ba4bd7a06..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/utils/LibBytesPointer.sol/library.LibBytesPointer.md +++ /dev/null @@ -1,201 +0,0 @@ -# LibBytesPointer -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/utils/LibBytesPointer.sol) - -**Author:** -Agustin Aguilar (aa@horizon.io) - -This library contains functions for reading data from bytes arrays with a pointer. - -These functions do not check if the input index is within the bounds of the data array. -Reading out of bounds may return dirty values. - - -## Functions -### readFirstUint16 - -Returns the first uint16 value in the input data and updates the pointer. - - -```solidity -function readFirstUint16(bytes calldata _data) internal pure returns (uint16 a, uint256 newPointer); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`|The input data.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint16`|The first uint16 value.| -|`newPointer`|`uint256`|The new pointer.| - - -### readUint8 - -Returns the uint8 value at the given index in the input data and updates the pointer. - - -```solidity -function readUint8(bytes calldata _data, uint256 _index) internal pure returns (uint8 a, uint256 newPointer); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`|The input data.| -|`_index`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint8`|The uint8 value at the given index.| -|`newPointer`|`uint256`|The new pointer.| - - -### readAddress - - -```solidity -function readAddress(bytes calldata _data, uint256 _index) internal pure returns (address a, uint256 newPointer); -``` - -### readUint8Address - -Returns the uint8 value and the address at the given index in the input data and updates the pointer. - - -```solidity -function readUint8Address(bytes calldata _data, uint256 _index) - internal - pure - returns (uint8 a, address b, uint256 newPointer); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`|The input data.| -|`_index`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint8`|The uint8 value at the given index.| -|`b`|`address`|The following address value.| -|`newPointer`|`uint256`|The new pointer.| - - -### readUint16 - -Returns the uint16 value at the given index in the input data and updates the pointer. - - -```solidity -function readUint16(bytes calldata _data, uint256 _index) internal pure returns (uint16 a, uint256 newPointer); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`|The input data.| -|`_index`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint16`|The uint16 value at the given index.| -|`newPointer`|`uint256`|The new pointer.| - - -### readUintX - - -```solidity -function readUintX(bytes calldata _data, uint256 _bytes, uint256 _index) - internal - pure - returns (uint256 a, uint256 newPointer); -``` - -### readUint24 - -Returns the uint24 value at the given index in the input data and updates the pointer. - - -```solidity -function readUint24(bytes calldata _data, uint256 _index) internal pure returns (uint24 a, uint256 newPointer); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`|The input data.| -|`_index`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint24`|The uint24 value at the given index.| -|`newPointer`|`uint256`|The new pointer.| - - -### readUint64 - -Returns the uint64 value at the given index in the input data and updates the pointer. - - -```solidity -function readUint64(bytes calldata _data, uint256 _index) internal pure returns (uint64 a, uint256 newPointer); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`|The input data.| -|`_index`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`uint64`|The uint64 value at the given index.| -|`newPointer`|`uint256`|The new pointer.| - - -### readBytes4 - - -```solidity -function readBytes4(bytes calldata _data, uint256 _pointer) internal pure returns (bytes4 a, uint256 newPointer); -``` - -### readBytes32 - -Returns the bytes32 value at the given index in the input data and updates the pointer. - - -```solidity -function readBytes32(bytes calldata _data, uint256 _pointer) internal pure returns (bytes32 a, uint256 newPointer); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_data`|`bytes`|The input data.| -|`_pointer`|`uint256`|The index of the value to retrieve.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`a`|`bytes32`|The bytes32 value at the given index.| -|`newPointer`|`uint256`|The new pointer.| - - diff --git a/packages/wallet-contracts/docs/src/contracts/utils/LibOptim.sol/library.LibOptim.md b/packages/wallet-contracts/docs/src/contracts/utils/LibOptim.sol/library.LibOptim.md deleted file mode 100644 index 3c5aa6bba9..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/utils/LibOptim.sol/library.LibOptim.md +++ /dev/null @@ -1,100 +0,0 @@ -# LibOptim -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/utils/LibOptim.sol) - -**Author:** -Agustin Aguilar (aa@horizon.io) - -This library contains functions for optimizing certain EVM operations. - - -## Functions -### fkeccak256 - -Computes the keccak256 hash of two 32-byte inputs. - -It uses only scratch memory space. - - -```solidity -function fkeccak256(bytes32 _a, bytes32 _b) internal pure returns (bytes32 c); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_a`|`bytes32`|The first 32 bytes of the hash.| -|`_b`|`bytes32`|The second 32 bytes of the hash.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`c`|`bytes32`|The keccak256 hash of the two 32-byte inputs.| - - -### returnData - -Returns the return data from the last call. - - -```solidity -function returnData() internal pure returns (bytes memory r); -``` -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`r`|`bytes`|The return data from the last call.| - - -### call - -Calls another contract with the given parameters. - -This method doesn't increase the memory pointer. - - -```solidity -function call(address _to, uint256 _val, uint256 _gas, bytes calldata _data) internal returns (bool r); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_to`|`address`|The address of the contract to call.| -|`_val`|`uint256`|The value to send to the contract.| -|`_gas`|`uint256`|The amount of gas to provide for the call.| -|`_data`|`bytes`|The data to send to the contract.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`r`|`bool`|The success status of the call.| - - -### delegatecall - -Calls another contract with the given parameters, using delegatecall. - -This method doesn't increase the memory pointer. - - -```solidity -function delegatecall(address _to, uint256 _gas, bytes calldata _data) internal returns (bool r); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_to`|`address`|The address of the contract to call.| -|`_gas`|`uint256`|The amount of gas to provide for the call.| -|`_data`|`bytes`|The data to send to the contract.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`r`|`bool`|The success status of the call.| - - diff --git a/packages/wallet-contracts/docs/src/contracts/utils/LibString.sol/library.LibString.md b/packages/wallet-contracts/docs/src/contracts/utils/LibString.sol/library.LibString.md deleted file mode 100644 index 9dfccb6370..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/utils/LibString.sol/library.LibString.md +++ /dev/null @@ -1,106 +0,0 @@ -# LibString -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/utils/LibString.sol) - -This library contains functions for manipulating strings in Solidity. - - -## State Variables -### ALPHABET_HEX_16 - -```solidity -bytes private constant ALPHABET_HEX_16 = "0123456789abcdef" -``` - - -### ALPHABET_32 - -```solidity -bytes private constant ALPHABET_32 = "abcdefghijklmnopqrstuvwxyz234567" -``` - - -## Functions -### prefixHexadecimal - -Prefixes a hexadecimal string with "0x". - - -```solidity -function prefixHexadecimal(string memory _hex) internal pure returns (string memory); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_hex`|`string`|The hexadecimal string to prefix.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`string`|The prefixed hexadecimal string.| - - -### prefixBase32 - -Prefixes a base32 string with "b". - - -```solidity -function prefixBase32(string memory _base32) internal pure returns (string memory); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_base32`|`string`|The base32 string to prefix.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`string`|The prefixed base32 string.| - - -### bytesToHexadecimal - -Converts a byte array to a hexadecimal string. - - -```solidity -function bytesToHexadecimal(bytes memory _bytes) internal pure returns (string memory); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_bytes`|`bytes`|The byte array to convert.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`string`|The resulting hexadecimal string.| - - -### bytesToBase32 - -Converts a byte array to a base32 string. - - -```solidity -function bytesToBase32(bytes memory _bytes) internal pure returns (string memory); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_bytes`|`bytes`|The byte array to convert.| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`string`|The resulting base32 string.| - - diff --git a/packages/wallet-contracts/docs/src/contracts/utils/README.md b/packages/wallet-contracts/docs/src/contracts/utils/README.md deleted file mode 100644 index 43a6ef4777..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/utils/README.md +++ /dev/null @@ -1,9 +0,0 @@ - - -# Contents -- [LibAddress](LibAddress.sol/library.LibAddress.md) -- [LibBytes](LibBytes.sol/library.LibBytes.md) -- [LibBytesPointer](LibBytesPointer.sol/library.LibBytesPointer.md) -- [LibOptim](LibOptim.sol/library.LibOptim.md) -- [LibString](LibString.sol/library.LibString.md) -- [SignatureValidator](SignatureValidator.sol/library.SignatureValidator.md) diff --git a/packages/wallet-contracts/docs/src/contracts/utils/SignatureValidator.sol/library.SignatureValidator.md b/packages/wallet-contracts/docs/src/contracts/utils/SignatureValidator.sol/library.SignatureValidator.md deleted file mode 100644 index 42767e4461..0000000000 --- a/packages/wallet-contracts/docs/src/contracts/utils/SignatureValidator.sol/library.SignatureValidator.md +++ /dev/null @@ -1,130 +0,0 @@ -# SignatureValidator -[Git Source](https://github.com/0xsequence/wallet-contracts/blob/09c54e74c2803b55df32c0470f8b0e0ebe86f4c9/contracts/utils/SignatureValidator.sol) - -Contains logic for signature validation. -Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md) -Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/ - - -## State Variables -### ERC1271_MAGICVALUE -| -| Variables | -|__________________________________ - - -```solidity -bytes4 internal constant ERC1271_MAGICVALUE = 0x20c13b0b -``` - - -### ERC1271_MAGICVALUE_BYTES32 - -```solidity -bytes4 internal constant ERC1271_MAGICVALUE_BYTES32 = 0x1626ba7e -``` - - -### SIG_TYPE_EIP712 - -```solidity -uint256 private constant SIG_TYPE_EIP712 = 1 -``` - - -### SIG_TYPE_ETH_SIGN - -```solidity -uint256 private constant SIG_TYPE_ETH_SIGN = 2 -``` - - -### SIG_TYPE_WALLET_BYTES32 - -```solidity -uint256 private constant SIG_TYPE_WALLET_BYTES32 = 3 -``` - - -## Functions -### recoverSigner - -| -| Signature Functions | -|__________________________________ - -Recover the signer of hash, assuming it's an EOA account - -Only for SignatureType.EIP712 and SignatureType.EthSign signatures - - -```solidity -function recoverSigner(bytes32 _hash, bytes calldata _signature) internal pure returns (address signer); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_hash`|`bytes32`| Hash that was signed encoded as (bytes32 r, bytes32 s, uint8 v, ... , SignatureType sigType)| -|`_signature`|`bytes`|| - - -### isValidSignature - -Returns true if the provided signature is valid for the given signer. - -Supports SignatureType.EIP712, SignatureType.EthSign, and ERC1271 signatures - - -```solidity -function isValidSignature(bytes32 _hash, address _signer, bytes calldata _signature) - internal - view - returns (bool valid); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`_hash`|`bytes32`| Hash that was signed| -|`_signer`|`address`| Address of the signer candidate| -|`_signature`|`bytes`|Signature byte array| - - -## Errors -### InvalidSignatureLength - -```solidity -error InvalidSignatureLength(bytes _signature); -``` - -### EmptySignature - -```solidity -error EmptySignature(); -``` - -### InvalidSValue - -```solidity -error InvalidSValue(bytes _signature, bytes32 _s); -``` - -### InvalidVValue - -```solidity -error InvalidVValue(bytes _signature, uint256 _v); -``` - -### UnsupportedSignatureType - -```solidity -error UnsupportedSignatureType(bytes _signature, uint256 _type, bool _recoverMode); -``` - -### SignerIsAddress0 - -```solidity -error SignerIsAddress0(bytes _signature); -``` - diff --git a/packages/wallet-contracts/foundry.lock b/packages/wallet-contracts/foundry.lock deleted file mode 100644 index bca6a6d8c1..0000000000 --- a/packages/wallet-contracts/foundry.lock +++ /dev/null @@ -1,8 +0,0 @@ -{ - "lib/forge-std": { - "rev": "73d44ec7d124e3831bc5f832267889ffb6f9bc3f" - }, - "lib/foundry-huff": { - "rev": "7648faf3990cc4561d52b71af03282fad3a803d8" - } -} \ No newline at end of file diff --git a/packages/wallet-contracts/foundry.toml b/packages/wallet-contracts/foundry.toml deleted file mode 100644 index d26fe591fe..0000000000 --- a/packages/wallet-contracts/foundry.toml +++ /dev/null @@ -1,11 +0,0 @@ -[profile.default] -src = 'contracts' -out = 'foundry_artifacts' -libs = ["node_modules", "lib", "dependencies"] -test = 'foundry_test' - -ffi = true -max_test_rejects = 2048000 - -[dependencies] -forge-std = "1.11.0" diff --git a/packages/wallet-contracts/foundry_test/base/AdvTest.sol b/packages/wallet-contracts/foundry_test/base/AdvTest.sol deleted file mode 100644 index b79268c40e..0000000000 --- a/packages/wallet-contracts/foundry_test/base/AdvTest.sol +++ /dev/null @@ -1,205 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "forge-std/Test.sol"; - -contract AdvTest is Test { - function signAndPack(uint256 _pk, bytes32 _hash) internal pure returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(_pk, _hash); - return abi.encodePacked(r, s, v); - } - - function signAndPack(uint256 _pk, bytes32 _hash, uint8 _sufix) internal pure returns (bytes memory) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(_pk, _hash); - return abi.encodePacked(r, s, v, _sufix); - } - - function mayBoundArr(uint256 _size) internal view returns (uint256) { - try vm.envUint("MAX_ARRAY_LEN") returns (uint256 b) { - return b == 0 ? _size : bound(_size, 0, b); - } catch { - return _size; - } - } - - function boundNoSys(address _a) internal view returns (address) { - address c2 = address(0x007109709ecfa91a80626ff3989d68f67f5b1dd12d); - address vm = address(0x004e59b44847b379578588920ca78fbf26c0b4956c); - address c3 = address(0x00000000000000000000636f6e736f6c652e6c6f67); - - boundNoPrecompile(_a); - boundDiff(_a, c2, vm, c3, address(this)); - - return _a; - } - - function boundNoPrecompile(address _a) internal pure returns (address) { - vm.assume(uint160(_a) > 10); - return _a; - } - - function boundDiff(address _a, address _b) internal pure returns (address) { - vm.assume(_a != _b); - return _a; - } - - function boundDiff(address _a, address _b, address _c) internal pure returns (address) { - address[] memory arr = new address[](2); - arr[0] = _b; - arr[1] = _c; - return boundDiff(_a, arr); - } - - function boundDiff(address _a, address _b, address _c, address _d) internal pure returns (address) { - address[] memory _arr = new address[](3); - _arr[0] = _b; - _arr[1] = _c; - _arr[2] = _d; - return boundDiff(_a, _arr); - } - - function boundDiff(address _a, address _b, address _c, address _d, address _e) internal pure returns (address) { - address[] memory _arr = new address[](4); - _arr[0] = _b; - _arr[1] = _c; - _arr[2] = _d; - _arr[3] = _e; - return boundDiff(_a, _arr); - } - - function boundDiff(address _a, address[] memory _b) internal pure returns (address) { - vm.assume(!inSet(_a, _b)); - return _a; - } - - function boundPk(uint256 _a) internal view returns (uint256) { - _a = bound(_a, 1, 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364139); - return _a; - } - - function boundDiff(uint256 _a, uint256 _b) internal pure returns (uint256) { - vm.assume(_a != _b); - return _a; - } - - function boundDiff(uint256 _a, uint256 _b, uint256 _c) internal pure returns (uint256) { - uint256[] memory arr = new uint256[](2); - arr[0] = _b; - arr[1] = _c; - return boundDiff(_a, arr); - } - - function boundDiff(uint256 _a, uint256 _b, uint256 _c, uint256 _d) internal pure returns (uint256) { - uint256[] memory _arr = new uint256[](3); - _arr[0] = _b; - _arr[1] = _c; - _arr[2] = _d; - return boundDiff(_a, _arr); - } - - function boundDiff(uint256 _a, uint256 _b, uint256 _c, uint256 _d, uint256 _e) internal pure returns (uint256) { - uint256[] memory _arr = new uint256[](4); - _arr[0] = _b; - _arr[1] = _c; - _arr[2] = _d; - _arr[3] = _e; - return boundDiff(_a, _arr); - } - - function boundDiff(uint256 _a, uint256 _b, uint256 _c, uint256 _d, uint256 _e, uint256 _f) - internal - pure - returns (uint256) - { - uint256[] memory _arr = new uint256[](5); - _arr[0] = _b; - _arr[1] = _c; - _arr[2] = _d; - _arr[3] = _e; - _arr[4] = _f; - return boundDiff(_a, _arr); - } - - function boundDiff(uint256 _a, uint256 _b, uint256 _c, uint256 _d, uint256 _e, uint256 _f, uint256 _g) - internal - pure - returns (uint256) - { - uint256[] memory _arr = new uint256[](6); - _arr[0] = _b; - _arr[1] = _c; - _arr[2] = _d; - _arr[3] = _e; - _arr[4] = _f; - _arr[5] = _g; - return boundDiff(_a, _arr); - } - - function boundDiff(uint256 _a, uint256 _b, uint256 _c, uint256 _d, uint256 _e, uint256 _f, uint256 _g, uint256 _h) - internal - pure - returns (uint256) - { - uint256[] memory _arr = new uint256[](7); - _arr[0] = _b; - _arr[1] = _c; - _arr[2] = _d; - _arr[3] = _e; - _arr[4] = _f; - _arr[5] = _g; - _arr[6] = _h; - return boundDiff(_a, _arr); - } - - function boundDiff(uint256 _a, uint256[] memory _b) internal pure returns (uint256) { - vm.assume(!inSet(_a, _b)); - return _a; - } - - function inSet(uint256 _a, uint256[] memory _b) internal pure returns (bool) { - unchecked { - for (uint256 i = 0; i < _b.length; i++) { - if (_a == _b[i]) { - return true; - } - } - - return false; - } - } - - function inSet(address _a, address[] memory _b) internal pure returns (bool) { - unchecked { - for (uint256 i = 0; i < _b.length; i++) { - if (_a == _b[i]) { - return true; - } - } - - return false; - } - } - - function boundNoContract(address _a) internal view returns (address) { - vm.assume(_a.code.length == 0); - return _a; - } - - function boundNoBalance(address _a) internal view returns (address) { - vm.assume(_a.balance == 0); - return _a; - } - - function replicate(bytes memory _data) internal { - (bool suc, bytes memory res) = address(this).call(_data); - if (!suc) { - assembly { - revert(add(res, 32), mload(res)) - } - } - } - - function addrToBytes32(address _addr) internal pure returns (bytes32) { - return bytes32(uint256(uint160(_addr))); - } -} diff --git a/packages/wallet-contracts/foundry_test/hooks/WalletProxyHook.t.sol b/packages/wallet-contracts/foundry_test/hooks/WalletProxyHook.t.sol deleted file mode 100644 index 04ebf54cf6..0000000000 --- a/packages/wallet-contracts/foundry_test/hooks/WalletProxyHook.t.sol +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/hooks/WalletProxyHook.sol"; -import "contracts/hooks/interfaces/IWalletProxy.sol"; -import "contracts/modules/commons/ModuleHooks.sol"; -import "contracts/Factory.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract WalletProxyHookTest is AdvTest { - ModuleHooks private template; - ModuleHooks private walletMod; - WalletProxyHook private wallet; - - function setUp() external { - Factory factory = new Factory(); - template = new ModuleHooks(); - walletMod = ModuleHooks(payable(factory.deploy(address(template), bytes32(0)))); - WalletProxyHook hook = new WalletProxyHook(); - - // Add hook - vm.prank(address(walletMod)); - walletMod.addHook(IWalletProxy.PROXY_getImplementation.selector, address(hook)); - - wallet = WalletProxyHook(address(walletMod)); - vm.label(address(wallet), "wallet"); - } - - // - // Get Implementation - // - - function test_PROXY_getImplementation() external { - assertEq(wallet.PROXY_getImplementation(), address(template)); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/Implementation.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/Implementation.t.sol deleted file mode 100644 index f974882809..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/Implementation.t.sol +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/Implementation.sol"; -import "contracts/Factory.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract ImplementationImp is Implementation { - function setImplementation(address _imp) external { - _setImplementation(_imp); - } - - function getImplementation() external view returns (address) { - return _getImplementation(); - } - - function stub() external pure virtual returns (uint256) { - return 1; - } -} - -contract NextImplementation is ImplementationImp { - function stub() external pure override returns (uint256) { - return 2; - } -} - -contract ImplementationTest is AdvTest { - function test_setImplementation(address _imp, address _next) external { - boundNoContract(boundNoSys(_imp)); - - vm.etch(_imp, address(new ImplementationImp()).code); - - assertEq(ImplementationImp(_imp).getImplementation(), address(0)); - - ImplementationImp(_imp).setImplementation(_next); - - assertEq(ImplementationImp(_imp).getImplementation(), _next); - assertEq(vm.load(_imp, addrToBytes32(_imp)), addrToBytes32(_next)); - } - - function test_setImplementation_matchWallet(bytes32 _salt, address _imp, address _imp2) external { - Factory factory = new Factory(); - - ImplementationImp imp = new ImplementationImp(); - ImplementationImp imp2 = new NextImplementation(); - - boundNoContract(boundDiff(boundNoSys(_imp), address(factory))); - boundNoContract(boundDiff(boundNoSys(_imp2), address(factory))); - - vm.etch(_imp, address(imp).code); - address wallet = factory.deploy(_imp, _salt); - - assertEq(ImplementationImp(wallet).getImplementation(), _imp); - assertEq(ImplementationImp(wallet).stub(), 1); - - vm.etch(_imp2, address(imp2).code); - - ImplementationImp(wallet).setImplementation(_imp2); - - assertEq(ImplementationImp(wallet).getImplementation(), _imp2); - assertEq(vm.load(wallet, addrToBytes32(wallet)), addrToBytes32(_imp2)); - assertEq(ImplementationImp(wallet).stub(), 2); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/ModuleCalls.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/ModuleCalls.t.sol deleted file mode 100644 index 493974bbec..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/ModuleCalls.t.sol +++ /dev/null @@ -1,351 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/ModuleCalls.sol"; -import "contracts/Factory.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract ImmutableBytes { - bytes public b; - - constructor(bytes memory _b) { - b = _b; - } - - fallback() external payable {} - receive() external payable {} -} - -contract WillRevert { - ImmutableBytes private immutable ib; - - constructor(bytes memory _err) { - ib = new ImmutableBytes(_err); - } - - fallback() external payable { - _revert(); - } - - receive() external payable { - _revert(); - } - - function _revert() internal view { - bytes memory e = ib.b(); - assembly { - revert(add(e, 32), mload(e)) - } - } -} - -contract WillDelegateTo { - address private immutable expectSelf; - bytes32 private immutable expectData; - address private immutable delegate; - - constructor(address _expectSelf, bytes memory _expectData) { - expectSelf = _expectSelf; - expectData = keccak256(_expectData); - delegate = address(this); - } - - fallback() external payable { - _check(); - } - - receive() external payable { - _check(); - } - - function _check() internal { - bytes32 dataHash = keccak256(msg.data); - require(dataHash == expectData && address(this) == expectSelf); - - bytes32 key = keccak256(abi.encode(delegate)); - assembly { sstore(key, add(sload(key), 1)) } - } -} - -contract ModuleCallsImp is ModuleCalls { - function validateNonce(uint256 _rawNonce) external { - _validateNonce(_rawNonce); - } - - function writeNonce(uint256 _space, uint256 _nonce) external { - _writeNonce(_space, _nonce); - } - - // Module Auth imp - mapping(bytes32 => mapping(bytes => bytes32)) public sigToSubdigest; - mapping(bytes32 => mapping(bytes => bool)) public sigToIsValid; - - function _signatureValidation(bytes32 _digest, bytes calldata _signature) - internal - view - override - returns (bool isValid, bytes32 subdigest) - { - subdigest = sigToSubdigest[_digest][_signature]; - isValid = sigToIsValid[_digest][_signature]; - } - - function mockSignature(bytes32 _digest, bytes calldata _signature, bytes32 _subdigest, bool _isValid) external { - sigToSubdigest[_digest][_signature] = _subdigest; - sigToIsValid[_digest][_signature] = _isValid; - } - - function signatureRecovery(bytes32, bytes calldata) - public - view - override - returns (uint256, uint256, bytes32, bytes32, uint256) - {} - - function _isValidImage(bytes32) internal view override returns (bool) {} - - function updateImageHash(bytes32) external override {} - - function _updateImageHash(bytes32) internal override {} -} - -contract ModuleCallsTest is AdvTest { - ModuleCallsImp private template; - ModuleCallsImp private imp; - Factory private factory; - - function setUp() external { - template = new ModuleCallsImp(); - factory = new Factory(); - imp = ModuleCallsImp(factory.deploy(address(template), bytes32(0))); - } - - struct ToValAndData { - address target; - uint256 value; - bytes data; - } - - event TxExecuted(bytes32 _tx) anonymous; - event NonceChange(uint256 _space, uint256 _newNonce); - event TxFailed(bytes32 _tx, bytes _reason); - event GapNonceChange(uint256 _space, uint256 _oldNonce, uint256 _newNonce); - event NoNonceUsed(); - - function test_execute(ToValAndData[] memory _rtxs, bytes memory _sig, bytes32 _subdigest) external { - uint256 size = mayBoundArr(_rtxs.length); - IModuleCalls.Transaction[] memory txs = new IModuleCalls.Transaction[](size); - uint256 total; - - for (uint256 i = 0; i < size; i++) { - txs[i].data = _rtxs[i].data; - txs[i].target = boundNoBalance( - boundNoContract( - boundDiff(boundNoSys(_rtxs[i].target), address(template), address(imp), address(factory)) - ) - ); - txs[i].value = bound(_rtxs[i].value, 0, type(uint256).max - total); - - total += txs[i].value; - } - - vm.deal(address(imp), total); - bytes32 digest = keccak256(abi.encode(0, txs)); - imp.mockSignature(digest, _sig, _subdigest, false); - - vm.expectRevert(abi.encodeWithSignature("InvalidSignature(bytes32,bytes)", _subdigest, _sig)); - imp.execute(txs, 0, _sig); - - vm.expectRevert(abi.encodeWithSignature("BadNonce(uint256,uint256,uint256)", 0, 1, 0)); - imp.execute(txs, 1, _sig); - - imp.mockSignature(digest, _sig, _subdigest, true); - - vm.expectEmit(true, true, true, true, address(imp)); - emit NonceChange(0, 1); - - for (uint256 i = 0; i < size; i++) { - vm.expectCall(txs[i].target, txs[i].data); - } - - imp.execute(txs, 0, _sig); - - assertEq(imp.nonce(), 1); - - for (uint256 i = 0; i < size; i++) { - assertTrue(txs[i].target.balance >= txs[i].value); - } - } - - function test_execute_reverts( - ToValAndData[] memory _rtxs, - uint256 _reverti, - bool _revertsOnErr, - bool _delegateCall, - bytes memory _err, - bytes memory _sig, - bytes32 _subdigest - ) external { - uint256 size = mayBoundArr(_rtxs.length); - vm.assume(size != 0); - - IModuleCalls.Transaction[] memory txs = new IModuleCalls.Transaction[](size); - uint256 total; - - _reverti = bound(_reverti, 0, size - 1); - - address willRevert = address(new WillRevert(_err)); - - for (uint256 i = 0; i < size; i++) { - if (_reverti == i) { - txs[i].target = willRevert; - txs[i].revertOnError = _revertsOnErr; - txs[i].delegateCall = _delegateCall; - } else { - txs[i].target = boundNoBalance( - boundNoContract( - boundDiff(boundNoSys(_rtxs[i].target), address(template), address(imp), address(factory)) - ) - ); - } - - txs[i].data = _rtxs[i].data; - txs[i].value = bound(_rtxs[i].value, 0, type(uint256).max - total); - - total += txs[i].value; - } - - vm.deal(address(imp), total); - - bytes32 digest = keccak256(abi.encode(0, txs)); - imp.mockSignature(digest, _sig, _subdigest, true); - - if (_revertsOnErr) { - vm.expectRevert(_err); - } - - imp.execute(txs, 0, _sig); - - for (uint256 i = 0; i < size; i++) { - if (_revertsOnErr || txs[i].target == willRevert) { - assertEq(txs[i].target.balance, 0); - } else { - assertTrue(txs[i].target.balance >= txs[i].value); - } - } - } - - function test_execute_delegateCall(ToValAndData[] memory _rtxs, bytes memory _sig, bytes32 _subdigest) external { - uint256 size = mayBoundArr(_rtxs.length); - IModuleCalls.Transaction[] memory txs = new IModuleCalls.Transaction[](size); - - for (uint256 i = 0; i < size; i++) { - txs[i].data = _rtxs[i].data; - txs[i].target = address(new WillDelegateTo(address(imp), _rtxs[i].data)); - txs[i].value = _rtxs[i].value; - txs[i].delegateCall = true; - } - - bytes32 digest = keccak256(abi.encode(0, txs)); - imp.mockSignature(digest, _sig, _subdigest, true); - - imp.execute(txs, 0, _sig); - assertEq(imp.nonce(), 1); - - for (uint256 i = 0; i < size; i++) { - bytes32 key = keccak256(abi.encode(txs[i].target)); - assertTrue(uint256(vm.load(address(imp), key)) != 0); - } - } - - function test_selfExecute(ToValAndData[] memory _rtxs) external { - uint256 size = mayBoundArr(_rtxs.length); - IModuleCalls.Transaction[] memory txs = new IModuleCalls.Transaction[](size); - uint256 total; - - for (uint256 i = 0; i < size; i++) { - txs[i].data = _rtxs[i].data; - txs[i].target = boundNoBalance( - boundNoContract( - boundDiff(boundNoSys(_rtxs[i].target), address(template), address(imp), address(factory)) - ) - ); - txs[i].value = bound(_rtxs[i].value, 0, type(uint256).max - total); - - total += txs[i].value; - } - - vm.deal(address(imp), total); - - for (uint256 i = 0; i < size; i++) { - vm.expectCall(txs[i].target, txs[i].data); - } - - vm.prank(address(imp)); - imp.selfExecute(txs); - - for (uint256 i = 0; i < size; i++) { - assertTrue(txs[i].target.balance >= txs[i].value); - } - } - - function test_fail_selfExecute_NotSelf(ToValAndData[] memory _rtxs, address _notself) external { - _notself = boundDiff(_notself, address(imp)); - - uint256 size = mayBoundArr(_rtxs.length); - IModuleCalls.Transaction[] memory txs = new IModuleCalls.Transaction[](size); - - for (uint256 i = 0; i < size; i++) { - txs[i].data = _rtxs[i].data; - txs[i].target = _rtxs[i].target; - txs[i].value = _rtxs[i].value; - } - - vm.prank(_notself); - vm.expectRevert(abi.encodeWithSignature("OnlySelfAuth(address,address)", _notself, address(imp))); - imp.selfExecute(txs); - } - - function test_validateNonce_Normal(uint160 _space, uint88 _nonce) external { - uint256 encoded = uint256(abi.decode(abi.encodePacked(_space, uint8(0), _nonce), (bytes32))); - - imp.writeNonce(_space, _nonce); - - vm.expectEmit(true, true, true, true, address(imp)); - emit NonceChange(_space, uint256(_nonce) + 1); - imp.validateNonce(encoded); - - assertEq(imp.readNonce(_space), uint256(_nonce) + 1); - assertEq(imp.nonce(), _space == 0 ? uint256(_nonce) + 1 : 0); - } - - function test_fail_validateNonce_Normal_Bad(uint160 _space, uint88 _nonce, uint88 _badprev) external { - _badprev = uint88(boundDiff(_badprev, _nonce)); - - uint256 encoded = uint256(abi.decode(abi.encodePacked(_space, uint8(0), _nonce), (bytes32))); - - imp.writeNonce(_space, _badprev); - - vm.expectRevert(abi.encodeWithSignature("BadNonce(uint256,uint256,uint256)", _space, _nonce, _badprev)); - imp.validateNonce(encoded); - } - - function test_fail_noDelegatecall(ToValAndData[] memory _rtxs, bytes memory _sig, uint256 _nonce) external { - uint256 size = mayBoundArr(_rtxs.length); - IModuleCalls.Transaction[] memory txs = new IModuleCalls.Transaction[](size); - uint256 total; - - for (uint256 i = 0; i < size; i++) { - txs[i].data = _rtxs[i].data; - txs[i].target = boundNoSys(_rtxs[i].target); - txs[i].value = bound(_rtxs[i].value, 0, type(uint256).max - total); - - total += txs[i].value; - } - - vm.deal(address(imp), total); - vm.expectRevert(abi.encodeWithSignature("OnlyDelegatecall()")); - template.execute(txs, _nonce, _sig); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/ModuleERC5719.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/ModuleERC5719.t.sol deleted file mode 100644 index 49fe4c1a08..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/ModuleERC5719.t.sol +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/ModuleERC5719.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract ModuleERC5719Test is AdvTest { - ModuleERC5719 private module; - - function setUp() public { - module = new ModuleERC5719(); - } - - function test_getAlternativeSignature() external { - // 0xba5a3cbb592813d90eae65a3aac33e9b6dfc7be50623aa25e151fe3da06c8443 - // == - // ipfs://bafybeif2li6lwwjicpmq5ltfuovmgpu3nx6hxzigeovclykr7y62a3eeim - - // 0xb6f77d000c8791676d96aedac165dd1bb2da4a5baf78198b9f391fc76b893f46 - // == - // ipfs://bafybeifw656qadehsftw3fvo3lawlxi3wlneuw5ppamyxhzzd7dwxcj7iy - - vm.startPrank(address(module)); - - bytes32 root = 0xba5a3cbb592813d90eae65a3aac33e9b6dfc7be50623aa25e151fe3da06c8443; - module.updateIPFSRoot(root); - - assertEq( - module.getAlternativeSignature(0x64f16a2f2c80ab7f3b0e0edc67c0bf1399402dc389cfb4271ba58abe3f61ea16), - "ipfs://bafybeif2li6lwwjicpmq5ltfuovmgpu3nx6hxzigeovclykr7y62a3eeim/ERC5719/0x64f16a2f2c80ab7f3b0e0edc67c0bf1399402dc389cfb4271ba58abe3f61ea16" - ); - - root = 0xb6f77d000c8791676d96aedac165dd1bb2da4a5baf78198b9f391fc76b893f46; - module.updateIPFSRoot(root); - - assertEq( - module.getAlternativeSignature(0x11b858b3b52eb84e900639ebb082aeacb10bd9d239f58ae3f7092885cc3593b6), - "ipfs://bafybeifw656qadehsftw3fvo3lawlxi3wlneuw5ppamyxhzzd7dwxcj7iy/ERC5719/0x11b858b3b52eb84e900639ebb082aeacb10bd9d239f58ae3f7092885cc3593b6" - ); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/ModuleExtraAuth.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/ModuleExtraAuth.t.sol deleted file mode 100644 index 3733500a42..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/ModuleExtraAuth.t.sol +++ /dev/null @@ -1,175 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/ModuleExtraAuth.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract ExtStore { - mapping(bytes32 => bool) private imageHashToIsValid; - - function setValidImageHash(bytes32 _imageHash, bool _isValid) external { - imageHashToIsValid[_imageHash] = _isValid; - } - - function isValidImage(bytes32 _imageHash) external view returns (bool) { - return imageHashToIsValid[_imageHash]; - } -} - -abstract contract ModuleAuthImp is IModuleAuth { - ExtStore private immutable EXT_STORE; - - constructor() { - EXT_STORE = new ExtStore(); - } - - function setValidImageHash(bytes32 _imageHash, bool _isValid) external { - EXT_STORE.setValidImageHash(_imageHash, _isValid); - } - - function _isValidImage(bytes32 _imageHash) internal view virtual override returns (bool) { - return EXT_STORE.isValidImage(_imageHash); - } -} - -contract ModuleExtraAuthImp2 is ModuleAuthImp, ModuleExtraAuth { - function _isValidImage(bytes32 _imageHash) internal view override(ModuleAuthImp, ModuleExtraAuth) returns (bool) { - return super._isValidImage(_imageHash); - } - - function isValidImage(bytes32 _imageHash) external view returns (bool) { - return _isValidImage(_imageHash); - } - - function _updateImageHash(bytes32) internal virtual override { - revert("not implemented"); - } -} - -contract ModuleExtraAuthTest is AdvTest { - ModuleExtraAuthImp2 private imp; - - function setUp() public { - imp = new ModuleExtraAuthImp2(); - } - - event SetExtraImageHash(bytes32 indexed _imageHash, uint256 _expiration); - - function test_shouldAcceptExtraImageHashes( - bytes32 _imageHashb, - bytes32 _imageHash1, - bytes32 _imageHash2, - uint256 _expiration1, - uint256 _expiration2 - ) external { - _expiration1 = bound(_expiration1, block.timestamp + 1, type(uint256).max); - _expiration2 = bound(_expiration2, block.timestamp + 1, type(uint256).max); - - assertFalse(imp.isValidImage(_imageHashb)); - assertFalse(imp.isValidImage(_imageHash1)); - assertFalse(imp.isValidImage(_imageHash2)); - - imp.setValidImageHash(_imageHashb, true); - assertTrue(imp.isValidImage(_imageHashb)); - assertEq(imp.isValidImage(_imageHash1), _imageHash1 == _imageHashb); - assertEq(imp.isValidImage(_imageHash2), _imageHash2 == _imageHashb); - - vm.prank(address(imp)); - vm.expectEmit(true, true, true, true, address(imp)); - emit SetExtraImageHash(_imageHash1, _expiration1); - imp.setExtraImageHash(_imageHash1, _expiration1); - - assertTrue(imp.isValidImage(_imageHash1)); - assertEq(imp.isValidImage(_imageHash2), _imageHash1 == _imageHash2 || _imageHashb == _imageHash2); - assertTrue(imp.isValidImage(_imageHashb)); - - vm.prank(address(imp)); - vm.expectEmit(true, true, true, true, address(imp)); - emit SetExtraImageHash(_imageHash2, _expiration2); - imp.setExtraImageHash(_imageHash2, _expiration2); - - assertTrue(imp.isValidImage(_imageHashb)); - assertTrue(imp.isValidImage(_imageHash1)); - assertTrue(imp.isValidImage(_imageHash2)); - } - - function test_shouldRejectExpiredImageHash( - bytes32 _imageHashb, - bytes32 _imageHash1, - bytes32 _imageHash2, - uint256 _expiration1, - uint256 _expiration2 - ) external { - _expiration1 = bound(_expiration1, block.timestamp + 1, type(uint256).max); - _expiration2 = bound(_expiration2, 0, block.timestamp); - - imp.setValidImageHash(_imageHashb, true); - - vm.prank(address(imp)); - vm.expectEmit(true, true, true, true, address(imp)); - emit SetExtraImageHash(_imageHash1, _expiration1); - imp.setExtraImageHash(_imageHash1, _expiration1); - - vm.prank(address(imp)); - vm.expectEmit(true, true, true, true, address(imp)); - emit SetExtraImageHash(_imageHash2, _expiration2); - imp.setExtraImageHash(_imageHash2, _expiration2); - - assertTrue(imp.isValidImage(_imageHashb)); - assertEq(imp.isValidImage(_imageHash1), _imageHash1 != _imageHash2 || _imageHash1 == _imageHashb); - assertEq(imp.isValidImage(_imageHash2), _imageHash2 == _imageHashb); - } - - struct SetIh { - bytes32 imageHash; - uint256 expiration; - } - - mapping(bytes32 => bool) private wasCleared; - - function test_shouldClearExtraImageHashes(bytes32 _base, SetIh[] calldata _set, bytes32[] calldata _clear) - external - { - uint256 sizeSet = mayBoundArr(_set.length); - uint256 sizeClear = mayBoundArr(_clear.length); - - imp.setValidImageHash(_base, true); - - vm.startPrank(address(imp)); - for (uint256 i = 0; i < sizeSet; i++) { - uint256 expiration = bound(_set[i].expiration, block.timestamp + 1, type(uint256).max); - imp.setExtraImageHash(_set[i].imageHash, expiration); - } - - bytes32[] memory toClear = new bytes32[](sizeClear); - for (uint256 i = 0; i < sizeClear; i++) { - toClear[i] = _clear[i]; - } - - imp.clearExtraImageHashes(toClear); - - for (uint256 i = 0; i < sizeClear; i++) { - assertEq(imp.isValidImage(_clear[i]), _clear[i] == _base); - wasCleared[_clear[i]] = true; - } - - for (uint256 i = 0; i < sizeSet; i++) { - assertEq(imp.isValidImage(_set[i].imageHash), _set[i].imageHash == _base || !wasCleared[_set[i].imageHash]); - } - } - - function test_fail_setExtraImageHash_notSelf(address _caller, bytes32 _imageHash, uint256 _expiration) external { - boundDiff(_caller, address(imp)); - vm.expectRevert(abi.encodeWithSignature("OnlySelfAuth(address,address)", _caller, address(imp))); - vm.prank(_caller); - imp.setExtraImageHash(_imageHash, _expiration); - } - - function test_fail_clearExtraImageHash_notSelf(address _caller, bytes32[] calldata _clear) external { - boundDiff(_caller, address(imp)); - vm.expectRevert(abi.encodeWithSignature("OnlySelfAuth(address,address)", _caller, address(imp))); - vm.prank(_caller); - imp.clearExtraImageHashes(_clear); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/ModuleIPFS.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/ModuleIPFS.t.sol deleted file mode 100644 index 1210a5c2a8..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/ModuleIPFS.t.sol +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/ModuleIPFS.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract ModuleIPFSTest is AdvTest { - ModuleIPFS private module; - - function setUp() public { - module = new ModuleIPFS(); - } - - function test_exposeRoot() external { - // 0xba5a3cbb592813d90eae65a3aac33e9b6dfc7be50623aa25e151fe3da06c8443 - // == - // ipfs://bafybeif2li6lwwjicpmq5ltfuovmgpu3nx6hxzigeovclykr7y62a3eeim - - // 0xb6f77d000c8791676d96aedac165dd1bb2da4a5baf78198b9f391fc76b893f46 - // == - // ipfs://bafybeifw656qadehsftw3fvo3lawlxi3wlneuw5ppamyxhzzd7dwxcj7iy - - vm.startPrank(address(module)); - - bytes32 root = 0xba5a3cbb592813d90eae65a3aac33e9b6dfc7be50623aa25e151fe3da06c8443; - module.updateIPFSRoot(root); - - assertEq(module.ipfsRootBytes32(), root); - assertEq(module.ipfsRoot(), "ipfs://bafybeif2li6lwwjicpmq5ltfuovmgpu3nx6hxzigeovclykr7y62a3eeim"); - - root = 0xb6f77d000c8791676d96aedac165dd1bb2da4a5baf78198b9f391fc76b893f46; - module.updateIPFSRoot(root); - - assertEq(module.ipfsRootBytes32(), root); - assertEq(module.ipfsRoot(), "ipfs://bafybeifw656qadehsftw3fvo3lawlxi3wlneuw5ppamyxhzzd7dwxcj7iy"); - } - - function test_fail_updateIPFSRoot_notSelf(address _notSelf) external { - boundDiff(_notSelf, address(module)); - - vm.prank(address(_notSelf)); - vm.expectRevert(abi.encodeWithSignature("OnlySelfAuth(address,address)", _notSelf, address(module))); - module.updateIPFSRoot(0x0); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/ModuleStorage.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/ModuleStorage.t.sol deleted file mode 100644 index 4242ceaa91..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/ModuleStorage.t.sol +++ /dev/null @@ -1,84 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/ModuleStorage.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract ModuleStorageImp { - function writeBytes32(bytes32 _key, bytes32 _val) external { - ModuleStorage.writeBytes32(_key, _val); - } - - function readBytes32(bytes32 _key) external view returns (bytes32) { - return ModuleStorage.readBytes32(_key); - } - - function writeBytes32Map(bytes32 _key, bytes32 _subKey, bytes32 _val) external { - ModuleStorage.writeBytes32Map(_key, _subKey, _val); - } - - function readBytes32Map(bytes32 _key, bytes32 _subKey) external view returns (bytes32) { - return ModuleStorage.readBytes32Map(_key, _subKey); - } -} - -contract ModuleStorageTest is AdvTest { - ModuleStorageImp private imp; - - function setUp() external { - imp = new ModuleStorageImp(); - } - - function test_writeBytes32(bytes32 _key1, bytes32 _key2, bytes32 _val1, bytes32 _val2) external { - assertEq(imp.readBytes32(_key1), bytes32(0)); - assertEq(imp.readBytes32(_key2), bytes32(0)); - - bool equal = _key1 == _key2; - - imp.writeBytes32(_key1, _val1); - - bytes32 res1 = imp.readBytes32(_key1); - assertEq(res1, _val1); - assertEq(vm.load(address(imp), _key1), res1); - - imp.writeBytes32(_key2, _val2); - - bytes32 res2 = imp.readBytes32(_key2); - res1 = imp.readBytes32(_key1); - - assertEq(res1, equal ? _val2 : _val1); - assertEq(res2, _val2); - assertEq(vm.load(address(imp), _key1), res1); - assertEq(vm.load(address(imp), _key2), res2); - } - - function test_writeBytes32Map( - bytes32 _key1, - bytes32 _subkey1, - bytes32 _val1, - bytes32 _key2, - bytes32 _subkey2, - bytes32 _val2 - ) external { - bool equal = _key1 == _key2 && _subkey1 == _subkey2; - bytes32 slot1 = keccak256(abi.encode(_key1, _subkey1)); - bytes32 slot2 = keccak256(abi.encode(_key2, _subkey2)); - assertEq(slot1 == slot2, equal); - - imp.writeBytes32Map(_key1, _subkey1, _val1); - bytes32 res1 = imp.readBytes32Map(_key1, _subkey1); - assertEq(res1, _val1); - assertEq(vm.load(address(imp), slot1), res1); - - imp.writeBytes32Map(_key2, _subkey2, _val2); - - bytes32 res2 = imp.readBytes32Map(_key2, _subkey2); - res1 = imp.readBytes32Map(_key1, _subkey1); - - assertEq(res1, equal ? _val2 : _val1); - assertEq(res2, _val2); - assertEq(vm.load(address(imp), slot1), res1); - assertEq(vm.load(address(imp), slot2), res2); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceBaseSig.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceBaseSig.t.sol deleted file mode 100644 index aa163bd3af..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceBaseSig.t.sol +++ /dev/null @@ -1,325 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/submodules/auth/SequenceBaseSig.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract SequenceBaseSigImp { - function subdigest(bytes32 _digest) external view returns (bytes32) { - return SequenceBaseSig.subdigest(_digest); - } - - function leafForAddressAndWeight(address _addr, uint96 _weight) external pure returns (bytes32) { - return SequenceBaseSig._leafForAddressAndWeight(_addr, _weight); - } - - function recoverBranch(bytes32 _digest, bytes calldata _signature) - external - view - returns (uint256 weight, bytes32 root) - { - return SequenceBaseSig.recoverBranch(_digest, _signature); - } - - function recover(bytes32 _subdigest, bytes calldata _signature) - external - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint) - { - return SequenceBaseSig.recover(_subdigest, _signature); - } -} - -contract SequenceBaseSigTest is AdvTest { - SequenceBaseSigImp private lib; - - uint8 private constant FLAG_SIGNATURE = 0; - uint8 private constant FLAG_ADDRESS = 1; - uint8 private constant FLAG_DYNAMIC_SIGNATURE = 2; - uint8 private constant FLAG_NODE = 3; - uint8 private constant FLAG_BRANCH = 4; - uint8 private constant FLAG_SUBDIGEST = 5; - uint8 private constant FLAG_NESTED = 6; - - function setUp() public { - lib = new SequenceBaseSigImp(); - } - - function test_subdigest(bytes32 _digest, uint256 _chainId) external { - _chainId = bound(_chainId, 0, type(uint64).max); - - bytes32 expected = keccak256(abi.encodePacked("\x19\x01", _chainId, address(lib), _digest)); - - vm.chainId(_chainId); - bytes32 actual = lib.subdigest(_digest); - assertEq(actual, expected); - } - - function test_subdigest_Fuzz_ChainId(bytes32 _digest, uint256 _chainId1, uint256 _chainId2) external { - _chainId1 = bound(_chainId1, 0, type(uint64).max); - _chainId2 = bound(_chainId2, 0, type(uint64).max); - - vm.chainId(_chainId1); - bytes32 subdigest1 = lib.subdigest(_digest); - - vm.chainId(_chainId2); - bytes32 subdigest2 = lib.subdigest(_digest); - - assertTrue(subdigest1 != subdigest2 || _chainId1 == _chainId2); - } - - function test_subdigest_Fuzz_Digest(bytes32 _digest1, bytes32 _digest2) external { - bytes32 subdigest1 = lib.subdigest(_digest1); - bytes32 subdigest2 = lib.subdigest(_digest2); - - assertTrue(subdigest1 != subdigest2 || _digest1 == _digest2); - } - - function test_subdigest_Fuzz_Address(bytes32 _digest, address _addr1, address _addr2) external { - boundNoSys(_addr1); - boundNoSys(_addr2); - - vm.etch(_addr1, address(lib).code); - vm.etch(_addr2, address(lib).code); - - bytes32 subdigest1 = SequenceBaseSigImp(_addr1).subdigest(_digest); - bytes32 subdigest2 = SequenceBaseSigImp(_addr2).subdigest(_digest); - - assertTrue(subdigest1 != subdigest2 || _addr1 == _addr2); - } - - function test_leafForAddressAndWeight(address _addr, uint96 _weight) external { - bytes32 expected = abi.decode(abi.encodePacked(_weight, _addr), (bytes32)); - bytes32 actual = lib.leafForAddressAndWeight(_addr, _weight); - assertEq(expected, actual); - } - - function test_leafForAddressAndWeight_fuzz(address _addr1, uint96 _weight1, address _addr2, uint96 _weight2) - external - { - bytes32 encoded1 = lib.leafForAddressAndWeight(_addr1, _weight1); - bytes32 encoded2 = lib.leafForAddressAndWeight(_addr2, _weight2); - assertEq(encoded1 == encoded2, _addr1 == _addr2 && _weight1 == _weight2); - } - - function test_leafForHardcodedSubdigest_fuzz(bytes32 _subdigest1, bytes32 _subdigest2) external { - bytes32 encoded1 = SequenceBaseSig._leafForHardcodedSubdigest(_subdigest1); - bytes32 encoded2 = SequenceBaseSig._leafForHardcodedSubdigest(_subdigest2); - assertEq(encoded1 == encoded2, _subdigest1 == _subdigest2); - } - - function test_leafForHardcodedSubdigest_fuzz_addr(address _addr, uint96 _weight, bytes32 _subdigest) external { - bytes32 encoded1 = SequenceBaseSig._leafForHardcodedSubdigest(_subdigest); - bytes32 encoded2 = SequenceBaseSig._leafForAddressAndWeight(_addr, _weight); - assertTrue(encoded1 != encoded2); - } - - function test_leafForNested_fuzz( - bytes32 _node1, - uint256 _threshold1, - uint256 _weight1, - bytes32 _node2, - uint256 _threshold2, - uint256 _weight2 - ) external { - bytes32 encoded1 = SequenceBaseSig._leafForNested(_node1, _threshold1, _weight1); - bytes32 encoded2 = SequenceBaseSig._leafForNested(_node2, _threshold2, _weight2); - assertEq(encoded1 == encoded2, _node1 == _node2 && _threshold1 == _threshold2 && _weight1 == _weight2); - } - - function test_leafForNested_fuzz_addr( - address _addr, - uint96 _weight, - bytes32 _node, - uint256 _threshold, - uint256 _nodeWeight - ) external { - bytes32 encoded1 = SequenceBaseSig._leafForNested(_node, _threshold, _nodeWeight); - bytes32 encoded2 = SequenceBaseSig._leafForAddressAndWeight(_addr, _weight); - assertTrue(encoded1 != encoded2); - } - - function test_leafForNested_fuzz_subdigest(bytes32 _subdigest, bytes32 _node, uint256 _threshold, uint256 _weight) - external - { - bytes32 encoded1 = SequenceBaseSig._leafForNested(_node, _threshold, _weight); - bytes32 encoded2 = SequenceBaseSig._leafForHardcodedSubdigest(_subdigest); - assertTrue(encoded1 != encoded2); - } - - function test_recoverBranch_Addresses(bytes32 _subdigest, bytes32 _seed, address[] calldata _addresses) external { - bytes memory signature; - bytes32 root; - - uint256 size = mayBoundArr(_addresses.length); - for (uint256 i = 0; i < size; i++) { - uint8 randomWeight = - uint8(bound(uint256(keccak256(abi.encode(_addresses[i], i, _seed))), 0, type(uint8).max)); - - signature = abi.encodePacked(signature, FLAG_ADDRESS, randomWeight, _addresses[i]); - bytes32 node = lib.leafForAddressAndWeight(_addresses[i], randomWeight); - root = root != bytes32(0) ? keccak256(abi.encodePacked(root, node)) : node; - } - - (uint256 recoveredWeight, bytes32 recoveredRoot) = lib.recoverBranch(_subdigest, signature); - assertEq(recoveredRoot, root); - assertEq(recoveredWeight, 0); - } - - function test_recoverBranch_Nodes(bytes32 _subdigest, bytes32[] calldata _nodes) external { - bytes memory signature; - bytes32 root; - - uint256 size = mayBoundArr(_nodes.length); - for (uint256 i = 0; i < size; i++) { - signature = abi.encodePacked(signature, FLAG_NODE, _nodes[i]); - root = root != bytes32(0) ? keccak256(abi.encodePacked(root, _nodes[i])) : _nodes[i]; - } - - (uint256 recoveredWeight, bytes32 recoveredRoot) = lib.recoverBranch(_subdigest, signature); - assertEq(recoveredRoot, root); - assertEq(recoveredWeight, 0); - } - - function test_recoverBranch_Signatures(bytes32 _subdigest, bytes32 _seed, uint256[] memory _pks) external { - bytes memory signature; - bytes32 root; - uint256 total; - - uint256 size = mayBoundArr(_pks.length); - for (uint256 i = 0; i < size; i++) { - _pks[i] = boundPk(_pks[i]); - - uint8 randomWeight = uint8(bound(uint256(keccak256(abi.encode(_pks[i], i, _seed))), 0, type(uint8).max)); - address addr = vm.addr(_pks[i]); - - // Determine if the pk will sign, dynamic sign or just sit as addr - uint256 op = bound(uint256(keccak256(abi.encode(_pks[i], i, _seed, 2))), 0, 2); - - if (op == 0) { - signature = abi.encodePacked(signature, FLAG_ADDRESS, randomWeight, addr); - } else { - bytes memory sigpart = signAndPack(_pks[i], _subdigest, 1); - - total += randomWeight; - - if (op == 1) { - signature = abi.encodePacked(signature, FLAG_SIGNATURE, randomWeight, sigpart); - } else { - signature = abi.encodePacked( - signature, FLAG_DYNAMIC_SIGNATURE, randomWeight, addr, uint24(sigpart.length), sigpart - ); - } - } - - bytes32 node = lib.leafForAddressAndWeight(addr, randomWeight); - root = root != bytes32(0) ? keccak256(abi.encodePacked(root, node)) : node; - } - - (uint256 recoveredWeight, bytes32 recoveredRoot) = lib.recoverBranch(_subdigest, signature); - assertEq(recoveredRoot, root); - assertEq(recoveredWeight, total); - } - - function test_recoverBranch_Branches(bytes32 _subdigest, bytes32 _seed, uint256[] memory _pks) external { - bytes memory signature; - bytes32 root; - uint256 total; - - // NOTICE: too much branching will lead to stack overflow - uint256 size = bound(_pks.length, 0, 32); - - for (uint256 i = 0; i < size; i++) { - if (i != 0) { - signature = abi.encodePacked(FLAG_BRANCH, uint24(signature.length), signature); - } - - _pks[i] = boundPk(_pks[i]); - - uint8 randomWeight = uint8(bound(uint256(keccak256(abi.encode(_pks[i], i, _seed))), 0, type(uint8).max)); - address addr = vm.addr(_pks[i]); - - // Determine if the pk will sign, dynamic sign or just sit as addr - uint256 op = bound(uint256(keccak256(abi.encode(_pks[i], i, _seed, 2))), 0, 2); - - if (op == 0) { - signature = abi.encodePacked(FLAG_ADDRESS, randomWeight, addr, signature); - } else { - bytes memory sigpart = signAndPack(_pks[i], _subdigest, 1); - - total += randomWeight; - - if (op == 1) { - signature = abi.encodePacked(FLAG_SIGNATURE, randomWeight, sigpart, signature); - } else { - signature = abi.encodePacked( - FLAG_DYNAMIC_SIGNATURE, randomWeight, addr, uint24(sigpart.length), sigpart, signature - ); - } - } - - bytes32 node = lib.leafForAddressAndWeight(addr, randomWeight); - // Hash in reverse order requires branching, root/node -> node/root - root = root != bytes32(0) ? keccak256(abi.encodePacked(node, root)) : node; - } - - (uint256 recoveredWeight, bytes32 recoveredRoot) = lib.recoverBranch(_subdigest, signature); - assertEq(recoveredRoot, root); - assertEq(recoveredWeight, total); - } - - function test_recoverBranch_Empty(bytes32 _hash) external { - (uint256 weight1, bytes32 root1) = lib.recoverBranch(_hash, abi.encodePacked(FLAG_NODE, bytes32(0))); - (uint256 weight2, bytes32 root2) = lib.recoverBranch(_hash, bytes("")); - - assertEq(weight2, 0); - assertEq(root2, bytes32(0)); - assertEq(weight1, weight2); - assertEq(root1, root2); - } - - function test_recoverBranch_Fail_InvalidFlag(uint8 _flag, bytes23 _hash, bytes calldata _sufix) external { - uint8( - boundDiff( - _flag, - FLAG_SIGNATURE, - FLAG_ADDRESS, - FLAG_DYNAMIC_SIGNATURE, - FLAG_NODE, - FLAG_BRANCH, - FLAG_SUBDIGEST, - FLAG_NESTED - ) - ); - - vm.expectRevert(abi.encodeWithSignature("InvalidSignatureFlag(uint256)", _flag)); - lib.recoverBranch(_hash, abi.encodePacked(_flag, _sufix)); - } - - function test_recover(bytes32 _subdigest, uint256 _pk, uint32 _checkpoint, uint16 _threshold, uint8 _weight) - external - { - _pk = boundPk(_pk); - - bytes memory signature = signAndPack(_pk, _subdigest, 1); - address addr = vm.addr(_pk); - - bytes32 expectImageHash = abi.decode(abi.encodePacked(uint96(_weight), addr), (bytes32)); - expectImageHash = keccak256(abi.encodePacked(expectImageHash, uint256(_threshold))); - expectImageHash = keccak256(abi.encodePacked(expectImageHash, uint256(_checkpoint))); - - bytes memory encoded = abi.encodePacked(_threshold, _checkpoint, FLAG_SIGNATURE, _weight, signature); - (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint) = lib.recover(_subdigest, encoded); - - assertEq(weight, _weight); - assertEq(threshold, _threshold); - assertEq(imageHash, expectImageHash); - assertEq(checkpoint, _checkpoint); - } - - function test_recover_Fail_EmptySignature(bytes32 _subdigest) external { - vm.expectRevert(); - lib.recover(_subdigest, bytes("")); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceChainedSig.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceChainedSig.t.sol deleted file mode 100644 index 85ef23f14a..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceChainedSig.t.sol +++ /dev/null @@ -1,276 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/submodules/auth/SequenceChainedSig.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract SequenceChainedSigImp is SequenceChainedSig { - function pchainedRecover(bytes32 _digest, bytes calldata _signature) - external - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 checkpoint) - { - return chainedRecover(_digest, _signature); - } - - struct MockedSignature { - bool exists; - uint256 threshold; - uint256 weight; - bytes32 imageHash; - bytes32 subdigest; - uint256 checkpoint; - } - - mapping(bytes32 => mapping(bytes => MockedSignature)) public mockedSignatures; - - function isMocked(bytes32 _digest, bytes calldata _signature) external view returns (bool) { - return mockedSignatures[_digest][_signature].exists; - } - - function mockSignature( - bytes32 _digest, - bytes calldata _signature, - uint256 _threshold, - uint256 _weight, - bytes32 _imageHash, - bytes32 _subdigest, - uint256 _checkpoint - ) external { - MockedSignature memory sig; - - sig.exists = true; - sig.threshold = _threshold; - sig.weight = _weight; - sig.imageHash = _imageHash; - sig.subdigest = _subdigest; - sig.checkpoint = _checkpoint; - - mockedSignatures[_digest][_signature] = sig; - } - - function signatureRecovery(bytes32 _digest, bytes calldata _signature) - public - view - override - returns (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 checkpoint) - { - if (mockedSignatures[_digest][_signature].exists) { - return ( - mockedSignatures[_digest][_signature].threshold, - mockedSignatures[_digest][_signature].weight, - mockedSignatures[_digest][_signature].imageHash, - mockedSignatures[_digest][_signature].subdigest, - mockedSignatures[_digest][_signature].checkpoint - ); - } else { - revert("invalid mocked signature"); - } - } - - function hashSetImageHashStruct(bytes32 _imageHash) external pure returns (bytes32) { - return _hashSetImageHashStruct(_imageHash); - } - - function _signatureValidation(bytes32, bytes calldata) internal pure override returns (bool, bytes32) { - revert("not implemented"); - } - - function _isValidImage(bytes32) internal pure override returns (bool) { - revert("not implemented"); - } - - function updateImageHash(bytes32) external pure override { - revert("not implemented"); - } - - function _updateImageHash(bytes32) internal pure override { - revert("not implemented"); - } -} - -contract SequenceChainedSigTest is AdvTest { - SequenceChainedSigImp private lib; - - function setUp() public { - lib = new SequenceChainedSigImp(); - } - - struct HashAndSignature { - bytes32 imageHash; - uint256 threshold; - uint256 weight; - uint56 checkpointDelta; - bytes signature; - } - - function test_chainedRecover(uint8 _prefix, bytes32 _digest, HashAndSignature[] memory _steps) external { - vm.assume(_steps.length > 0); - - bytes memory signature = abi.encodePacked(_prefix); - - uint256 size = boundDiff(mayBoundArr(_steps.length), 0); - - bytes32 nextDigest = _digest; - uint32 checkpoint = type(uint32).max; - - for (uint256 i = 0; i < size; i++) { - _steps[i].weight = bound(_steps[i].weight, _steps[i].threshold, type(uint256).max); - - if (i != 0) { - checkpoint -= uint32(bound(_steps[i].checkpointDelta, 1, type(uint24).max)); - } - - if (lib.isMocked(nextDigest, _steps[i].signature)) { - _steps[i].signature = abi.encodePacked(_steps[i].signature, _steps[i].imageHash); - } - - lib.mockSignature( - nextDigest, - _steps[i].signature, - _steps[i].threshold, - _steps[i].weight, - _steps[i].imageHash, - i == 0 ? _digest : nextDigest, - checkpoint - ); - - nextDigest = lib.hashSetImageHashStruct(_steps[i].imageHash); - signature = abi.encodePacked(signature, uint24(_steps[i].signature.length), _steps[i].signature); - } - - (uint256 threshold, uint256 weight, bytes32 imageHash, bytes32 subdigest, uint256 rcheckpoint) = - lib.pchainedRecover(_digest, signature); - - assertEq(imageHash, _steps[size - 1].imageHash); - assertEq(threshold, _steps[size - 1].threshold); - assertEq(weight, _steps[size - 1].weight); - assertEq(subdigest, _digest); - assertEq(rcheckpoint, checkpoint); - } - - function test_chainedRecover_Fail_LowWeight( - uint8 _prefix, - uint256 _badi, - bytes32 _digest, - HashAndSignature[] memory _steps - ) external { - vm.assume(_steps.length > 0); - - bytes memory signature = abi.encodePacked(_prefix); - - uint256 size = boundDiff(mayBoundArr(_steps.length), 0); - _badi = bound(_badi, 0, size - 1); - - bytes32 nextDigest = _digest; - uint64 checkpoint = type(uint64).max; - - for (uint256 i = 0; i < size; i++) { - if (i == _badi) { - _steps[i].threshold = bound(_steps[i].threshold, 1, type(uint256).max); - _steps[i].weight = bound(_steps[i].weight, 0, _steps[i].threshold - 1); - } else { - _steps[i].weight = bound(_steps[i].weight, _steps[i].threshold, type(uint256).max); - } - - if (i != 0) { - checkpoint -= uint64(bound(_steps[i].checkpointDelta, 1, type(uint56).max)); - } - - if (lib.isMocked(nextDigest, _steps[i].signature)) { - _steps[i].signature = abi.encodePacked(_steps[i].signature, _steps[i].imageHash); - } - - lib.mockSignature( - nextDigest, - _steps[i].signature, - _steps[i].threshold, - _steps[i].weight, - _steps[i].imageHash, - i == 0 ? _digest : nextDigest, - checkpoint - ); - - nextDigest = lib.hashSetImageHashStruct(_steps[i].imageHash); - signature = abi.encodePacked(signature, uint24(_steps[i].signature.length), _steps[i].signature); - } - - vm.expectRevert( - abi.encodeWithSignature( - "LowWeightChainedSignature(bytes,uint256,uint256)", - _steps[_badi].signature, - _steps[_badi].threshold, - _steps[_badi].weight - ) - ); - lib.pchainedRecover(_digest, signature); - } - - function test_chainedRecover_Fail_Checkpoint( - uint8 _prefix, - uint256 _badi, - bytes32 _digest, - HashAndSignature[] memory _steps - ) external { - vm.assume(_steps.length >= 1); - - bytes memory signature = abi.encodePacked(_prefix); - - uint256 size = boundDiff(mayBoundArr(_steps.length), 0); - _badi = bound(_badi, 0, size - 1); - - bytes32 nextDigest = _digest; - uint64 checkpoint = type(uint64).max; - - uint64 badCheckpoint; - uint64 prevToBadCheckpoint; - - for (uint256 i = 0; i < size; i++) { - _steps[i].weight = bound(_steps[i].weight, _steps[i].threshold, type(uint256).max); - - if (i != 0) { - if (_badi == i) { - prevToBadCheckpoint = checkpoint; - checkpoint = - uint64(bound(uint256(checkpoint) + _steps[i].checkpointDelta, checkpoint, type(uint64).max)); - badCheckpoint = checkpoint; - } else { - checkpoint -= uint64(bound(_steps[i].checkpointDelta, 1, type(uint56).max)); - } - } - - if (lib.isMocked(nextDigest, _steps[i].signature)) { - _steps[i].signature = abi.encodePacked(_steps[i].signature, _steps[i].imageHash); - } - - lib.mockSignature( - nextDigest, - _steps[i].signature, - _steps[i].threshold, - _steps[i].weight, - _steps[i].imageHash, - i == 0 ? _digest : nextDigest, - checkpoint - ); - - nextDigest = lib.hashSetImageHashStruct(_steps[i].imageHash); - signature = abi.encodePacked(signature, uint24(_steps[i].signature.length), _steps[i].signature); - } - - if (_badi != 0) { - vm.expectRevert( - abi.encodeWithSignature( - "WrongChainedCheckpointOrder(uint256,uint256)", badCheckpoint, prevToBadCheckpoint - ) - ); - } - - lib.pchainedRecover(_digest, signature); - } - - function test_chainedRecover_Fail_EmptySignature(bytes32 _digest) external { - vm.expectRevert(); - lib.pchainedRecover(_digest, bytes("")); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceDynamicSig.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceDynamicSig.t.sol deleted file mode 100644 index 9651f4eb6f..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceDynamicSig.t.sol +++ /dev/null @@ -1,57 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/submodules/auth/SequenceBaseSig.sol"; -import "contracts/modules/commons/submodules/auth/SequenceDynamicSig.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract SequenceDynamicSigImp { - function recover(bytes32 _subdigest, bytes calldata _signature) - external - view - returns (uint256, uint256, bytes32, uint256) - { - return SequenceDynamicSig.recover(_subdigest, _signature); - } - - function recoverBase(bytes32 _subdigest, bytes calldata _signature) - external - view - returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256) - { - return SequenceBaseSig.recover(_subdigest, _signature); - } -} - -contract SequenceDynamicSigTest is AdvTest { - SequenceDynamicSigImp private lib; - - function setUp() public { - lib = new SequenceDynamicSigImp(); - } - - function test_recover_ignoreFirstByte( - uint8 _first, - bytes32 _subdigest, - uint256 _pk, - uint16 _threshold, - uint32 _checkpoint, - uint8 _weight - ) external { - _pk = boundPk(_pk); - - bytes memory encoded = - abi.encodePacked(_threshold, _checkpoint, uint8(0), _weight, signAndPack(_pk, _subdigest, 1)); - - (uint256 threshold1, uint256 weight1, bytes32 imageHash1, uint256 checkpoint1) = - lib.recover(_subdigest, abi.encodePacked(_first, encoded)); - (uint256 threshold2, uint256 weight2, bytes32 imageHash2, uint256 checkpoint2) = - lib.recoverBase(_subdigest, encoded); - - assertEq(threshold1, threshold2); - assertEq(weight1, weight2); - assertEq(imageHash1, imageHash2); - assertEq(checkpoint1, checkpoint2); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceNoChainIdSig.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceNoChainIdSig.t.sol deleted file mode 100644 index 34534385af..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/submodules/auth/SequenceNoChainIdSig.t.sol +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/submodules/auth/SequenceNoChainIdSig.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract SequenceNoChainIdSigImp { - function subdigest(bytes32 _digest) external view returns (bytes32) { - return SequenceNoChainIdSig.subdigest(_digest); - } -} - -contract SequenceNoChainIdSigTest is AdvTest { - SequenceNoChainIdSigImp private lib; - - function setUp() public { - lib = new SequenceNoChainIdSigImp(); - } - - function test_subdigest_DiffDigest(bytes32 _digest1, bytes32 _digest2) external { - bytes32 res1 = lib.subdigest(_digest1); - bytes32 res2 = lib.subdigest(_digest2); - assertTrue(res1 != res2 || _digest1 == _digest2); - } - - function test_subdigest_DiffAddress(bytes32 _digest, address _addr1, address _addr2) external { - boundNoContract(boundNoSys(_addr1)); - boundNoContract(boundNoSys(_addr2)); - - vm.etch(_addr1, address(lib).code); - vm.etch(_addr2, address(lib).code); - - bytes32 res1 = SequenceNoChainIdSigImp(_addr1).subdigest(_digest); - bytes32 res2 = SequenceNoChainIdSigImp(_addr2).subdigest(_digest); - - assertTrue(res1 != res2 || _addr1 == _addr2); - } - - function test_subdigest_DiffChainId(bytes32 _digest, uint256 _chainId1, uint256 _chainId2) external { - _chainId1 = bound(_chainId1, 0, type(uint64).max); - _chainId2 = bound(_chainId2, 0, type(uint64).max); - - vm.chainId(_chainId1); - bytes32 res1 = lib.subdigest(_digest); - vm.chainId(_chainId2); - bytes32 res2 = lib.subdigest(_digest); - - assertTrue(res1 == res2); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/commons/submodules/nonce/SubModuleNonce.t.sol b/packages/wallet-contracts/foundry_test/modules/commons/submodules/nonce/SubModuleNonce.t.sol deleted file mode 100644 index 4bc6a900f1..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/commons/submodules/nonce/SubModuleNonce.t.sol +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/modules/commons/submodules/nonce/SubModuleNonce.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract SubModuleNonceTest is AdvTest { - function test_decodeNonce(uint160 _space, uint96 _nonce) external { - uint256 encoded = abi.decode(abi.encodePacked(_space, _nonce), (uint256)); - (uint256 space2, uint256 nonce2) = SubModuleNonce.decodeNonce(encoded); - - assertEq(space2, _space); - assertEq(nonce2, _nonce); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorEncoder.sol b/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorEncoder.sol deleted file mode 100644 index bc94e84b65..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorEncoder.sol +++ /dev/null @@ -1,393 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -function requiredBytesFor(bytes32 value) pure returns (uint8) { - return requiredBytesFor(uint256(value)); -} - -function requiredBytesFor(uint256 value) pure returns (uint8) { - if (value <= type(uint8).max) { - return 1; - } else if (value <= type(uint16).max) { - return 2; - } else if (value <= type(uint24).max) { - return 3; - } else if (value <= type(uint32).max) { - return 4; - } else if (value <= type(uint40).max) { - return 5; - } else if (value <= type(uint48).max) { - return 6; - } else if (value <= type(uint56).max) { - return 7; - } else if (value <= type(uint64).max) { - return 8; - } else if (value <= type(uint72).max) { - return 9; - } else if (value <= type(uint80).max) { - return 10; - } else if (value <= type(uint88).max) { - return 11; - } else if (value <= type(uint96).max) { - return 12; - } else if (value <= type(uint104).max) { - return 13; - } else if (value <= type(uint112).max) { - return 14; - } else if (value <= type(uint120).max) { - return 15; - } else if (value <= type(uint128).max) { - return 16; - } else if (value <= type(uint136).max) { - return 17; - } else if (value <= type(uint144).max) { - return 18; - } else if (value <= type(uint152).max) { - return 19; - } else if (value <= type(uint160).max) { - return 20; - } else if (value <= type(uint168).max) { - return 21; - } else if (value <= type(uint176).max) { - return 22; - } else if (value <= type(uint184).max) { - return 23; - } else if (value <= type(uint192).max) { - return 24; - } else if (value <= type(uint200).max) { - return 25; - } else if (value <= type(uint208).max) { - return 26; - } else if (value <= type(uint216).max) { - return 27; - } else if (value <= type(uint224).max) { - return 28; - } else if (value <= type(uint232).max) { - return 29; - } else if (value <= type(uint240).max) { - return 30; - } else if (value <= type(uint248).max) { - return 31; - } - - return 32; -} - -function packToBytes(bytes32 value, uint256 b) pure returns (bytes memory) { - return packToBytes(uint256(value), b); -} - -function packToBytes(uint256 value, uint256 b) pure returns (bytes memory) { - if (b == 1) { - return abi.encodePacked(uint8(value)); - } else if (b == 2) { - return abi.encodePacked(uint16(value)); - } else if (b == 3) { - return abi.encodePacked(uint24(value)); - } else if (b == 4) { - return abi.encodePacked(uint32(value)); - } else if (b == 5) { - return abi.encodePacked(uint40(value)); - } else if (b == 6) { - return abi.encodePacked(uint48(value)); - } else if (b == 7) { - return abi.encodePacked(uint56(value)); - } else if (b == 8) { - return abi.encodePacked(uint64(value)); - } else if (b == 9) { - return abi.encodePacked(uint72(value)); - } else if (b == 10) { - return abi.encodePacked(uint80(value)); - } else if (b == 11) { - return abi.encodePacked(uint88(value)); - } else if (b == 12) { - return abi.encodePacked(uint96(value)); - } else if (b == 13) { - return abi.encodePacked(uint104(value)); - } else if (b == 14) { - return abi.encodePacked(uint112(value)); - } else if (b == 15) { - return abi.encodePacked(uint120(value)); - } else if (b == 16) { - return abi.encodePacked(uint128(value)); - } else if (b == 17) { - return abi.encodePacked(uint136(value)); - } else if (b == 18) { - return abi.encodePacked(uint144(value)); - } else if (b == 19) { - return abi.encodePacked(uint152(value)); - } else if (b == 20) { - return abi.encodePacked(uint160(value)); - } else if (b == 21) { - return abi.encodePacked(uint168(value)); - } else if (b == 22) { - return abi.encodePacked(uint176(value)); - } else if (b == 23) { - return abi.encodePacked(uint184(value)); - } else if (b == 24) { - return abi.encodePacked(uint192(value)); - } else if (b == 25) { - return abi.encodePacked(uint200(value)); - } else if (b == 26) { - return abi.encodePacked(uint208(value)); - } else if (b == 27) { - return abi.encodePacked(uint216(value)); - } else if (b == 28) { - return abi.encodePacked(uint224(value)); - } else if (b == 29) { - return abi.encodePacked(uint232(value)); - } else if (b == 30) { - return abi.encodePacked(uint240(value)); - } else if (b == 31) { - return abi.encodePacked(uint248(value)); - } else if (b == 32) { - return abi.encodePacked(uint256(value)); - } else { - revert("Invalid number of bytes"); - } -} - -function encodeWord(bytes32 _value) pure returns (bytes memory) { - return encodeWord(uint256(_value)); -} - -function encodeWord(uint256 _value) pure returns (bytes memory) { - uint256 highestFlag = 0x4f; - - if (_value < type(uint8).max - highestFlag) { - return abi.encodePacked(uint8(_value + highestFlag + 1)); - } - - uint8 b = requiredBytesFor(_value); - return abi.encodePacked(b, packToBytes(_value, b)); -} - -function build_flag(bool _delegateCall, bool _revertOnError, bool _hasGasLimit, bool _hasValue, bool _hasData) - pure - returns (uint8) -{ - uint8 res = 0; - - if (_delegateCall) { - res |= 128; - } - - if (_revertOnError) { - res |= 64; - } - - if (_hasGasLimit) { - res |= 32; - } - - if (_hasValue) { - res |= 16; - } - - // Hasdata uses first bit - if (_hasData) { - res |= 1; - } - - return res; -} - -function encode_raw_address(address _addr) pure returns (bytes memory) { - return encodeWord(uint256(uint160(_addr))); -} - -function encode_bytes_n(bytes memory _data) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x2b), encodeWord(_data.length), _data); -} - -function encode_abi_call(bytes4 _selector) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x2d), uint8(0x00), _selector); -} - -function encode_abi_call(bytes4 _selector, bytes32 _v1) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x2e), uint8(0x00), _selector, encodeWord(_v1)); -} - -function encode_abi_call(bytes4 _selector, bytes32 _v1, bytes32 _v2) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x2f), uint8(0x00), _selector, encodeWord(_v1), encodeWord(_v2)); -} - -function encode_abi_call(bytes4 _selector, bytes32 _v1, bytes32 _v2, bytes32 _v3) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x30), uint8(0x00), _selector, encodeWord(_v1), encodeWord(_v2), encodeWord(_v3)); -} - -function encode_abi_call(bytes4 _selector, bytes32 _v1, bytes32 _v2, bytes32 _v3, bytes32 _v4) - pure - returns (bytes memory) -{ - return abi.encodePacked( - uint8(0x31), uint8(0x00), _selector, encodeWord(_v1), encodeWord(_v2), encodeWord(_v3), encodeWord(_v4) - ); -} - -function encode_abi_call(bytes4 _selector, bytes32 _v1, bytes32 _v2, bytes32 _v3, bytes32 _v4, bytes32 _v5) - pure - returns (bytes memory) -{ - return abi.encodePacked( - uint8(0x32), - uint8(0x00), - _selector, - encodeWord(_v1), - encodeWord(_v2), - encodeWord(_v3), - encodeWord(_v4), - encodeWord(_v5) - ); -} - -function encode_abi_call( - bytes4 _selector, - bytes32 _v1, - bytes32 _v2, - bytes32 _v3, - bytes32 _v4, - bytes32 _v5, - bytes32 _v6 -) pure returns (bytes memory) { - return abi.encodePacked( - uint8(0x33), - uint8(0x00), - _selector, - encodeWord(_v1), - encodeWord(_v2), - encodeWord(_v3), - encodeWord(_v4), - encodeWord(_v5), - encodeWord(_v6) - ); -} - -function encode_nested(bytes memory _a, bytes memory _b) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x34), uint8(2), _a, _b); -} - -function encode_nested(bytes memory _a, bytes memory _b, bytes memory _c) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x34), uint8(3), _a, _b, _c); -} - -function encode_nested(bytes[] memory _bs) pure returns (bytes memory) { - bytes memory res = abi.encodePacked(uint8(0x35), uint16(_bs.length)); - for (uint256 i = 0; i < _bs.length; i++) { - res = abi.encodePacked(res, _bs[i]); - } - return res; -} - -function encode_eoa_signature(uint8 _weight, bytes memory _sig) pure returns (bytes memory) { - if (_sig.length != 66) { - revert("Invalid signature length"); - } - - if (_weight != 0 && _weight <= 4) { - return abi.encodePacked(uint8(0x36 + _weight), _sig); - } - - return abi.encodePacked(uint8(0x36), uint8(_weight), _sig); -} - -function encode_address(uint8 _weight, address _addr) pure returns (bytes memory) { - if (_weight != 0 && _weight <= 4) { - return abi.encodePacked(uint8(0x3b + _weight), encodeWord(uint256(uint160(_addr)))); - } - - return abi.encodePacked(uint8(0x3b), uint8(_weight), encodeWord(uint256(uint160(_addr)))); -} - -function encode_node(bytes32 _node) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x40), encodeWord(_node)); -} - -function encode_branch(bytes memory _nested) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x41), encode_bytes_n(_nested)); -} - -function encode_subdigest(bytes32 _subdigest) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x42), encodeWord(_subdigest)); -} - -function encode_nested(uint8 _weight, uint8 _threshold, bytes memory _nested) pure returns (bytes memory) { - return abi.encodePacked(uint8(0x43), uint8(_weight), uint8(_threshold), encode_bytes_n(_nested)); -} - -function encode_dynamic_signature(uint8 _weight, address _signer, bytes memory _signature) pure returns (bytes memory) { - return - abi.encodePacked(uint8(0x44), uint8(_weight), encodeWord(uint256(uint160(_signer))), encode_bytes_n(_signature)); -} - -function encode_sequence_signature(bool _noChainId, uint256 _threshold, uint32 _checkpoint, bytes memory _tree) - pure - returns (bytes memory) -{ - uint8 flag; - - bytes memory t; - - if (_noChainId) { - if (_threshold <= type(uint8).max) { - flag = 0x45; - t = abi.encodePacked(uint8(_threshold)); - } else { - flag = 0x47; - t = abi.encodePacked(uint16(_threshold)); - } - } else { - if (_threshold <= type(uint8).max) { - flag = 0x46; - t = abi.encodePacked(uint8(_threshold)); - } else { - flag = 0x48; - t = abi.encodePacked(uint16(_threshold)); - } - } - - return abi.encodePacked(flag, t, encodeWord(_checkpoint), encode_bytes_n(_tree)); -} - -function encode_sequence_chained_signatures(bytes[] memory _payloads) pure returns (bytes memory) { - bytes memory encoded; - - if (_payloads.length > type(uint8).max) { - encoded = abi.encodePacked(uint8(0x4a), uint16(_payloads.length)); - } else { - encoded = abi.encodePacked(uint8(0x49), uint8(_payloads.length)); - } - - for (uint256 i = 0; i < _payloads.length; i++) { - encoded = abi.encodePacked(encoded, encode_bytes_n(_payloads[i])); - } - - return encoded; -} - -function encode_abi_dynamic(bytes4 _selector, bool[] memory _isDynamic, bytes[] memory _values) - pure - returns (bytes memory) -{ - bytes memory encoded = abi.encodePacked(uint8(0x4b), uint8(0x00), _selector, uint8(_isDynamic.length)); - uint8 isDynamicBitmap = 0; - - // The first 8 values can be dynamic, this is marked using a bitmap - for (uint256 i = 0; i < 8 && i < _isDynamic.length; i++) { - if (_isDynamic[i]) { - isDynamicBitmap |= uint8(1 << i); - } - } - - encoded = abi.encodePacked(encoded, isDynamicBitmap); - - for (uint256 i = 0; i < _values.length; i++) { - if (_isDynamic[i]) { - encoded = abi.encodePacked(encoded, encode_bytes_n(_values[i])); - } else { - encoded = abi.encodePacked(encoded, encodeWord(abi.decode(_values[i], (uint256)))); - } - } - - return encoded; -} diff --git a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuff.t.sol b/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuff.t.sol deleted file mode 100644 index 0aef14817b..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuff.t.sol +++ /dev/null @@ -1,284 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "foundry_test/base/AdvTest.sol"; - -import "forge-std/console.sol"; -import "forge-std/console2.sol"; - -import {HuffConfig} from "foundry-huff/HuffConfig.sol"; -import {HuffDeployer} from "foundry-huff/HuffDeployer.sol"; - -import "contracts/modules/commons/interfaces/IModuleCalls.sol"; - -import "./L2CompressorEncoder.sol"; - -contract L2CompressorHuffTest is AdvTest { - address public imp; - - function setUp() public { - imp = address(HuffDeployer.config().with_evm_version("paris").deploy("L2Compressor")); - } - - function test_execute( - IModuleCalls.Transaction[] calldata _txs, - uint160 _space, - uint96 _nonce, - bytes calldata _signature - ) external { - vm.assume(_txs.length != 0 && _txs.length <= type(uint8).max); - - bytes32 packedNonce = abi.decode(abi.encodePacked(_space, _nonce), (bytes32)); - - bytes memory encoded = abi.encodePacked(hex"00", encodeWord(_space), encodeWord(_nonce), uint8(_txs.length)); - - for (uint256 i = 0; i < _txs.length; i++) { - IModuleCalls.Transaction memory t = _txs[i]; - - encoded = abi.encodePacked( - encoded, - build_flag(t.delegateCall, t.revertOnError, t.gasLimit != 0, t.value != 0, t.data.length != 0), - t.gasLimit != 0 ? encodeWord(t.gasLimit) : bytes(""), - encode_raw_address(t.target), - t.value != 0 ? encodeWord(t.value) : bytes(""), - t.data.length != 0 ? encode_bytes_n(t.data) : bytes("") - ); - } - - encoded = abi.encodePacked( - encoded, - encode_bytes_n(_signature), - encodeWord(uint256(uint160(address(0xEbD3186Ab4524330A866BE6866bE7bB55A173a23)))) - ); - - vm.expectCall( - address(0xEbD3186Ab4524330A866BE6866bE7bB55A173a23), - 0, - abi.encodeWithSelector(IModuleCalls.execute.selector, _txs, packedNonce, _signature) - ); - - (bool s, bytes memory r) = imp.call(encoded); - assertTrue(s); - assertEq(r, bytes("")); - } - - struct BatchMember { - IModuleCalls.Transaction[] txs; - uint160 space; - uint96 nonce; - bytes signature; - } - - function test_execute_many_2(BatchMember memory _batch1, BatchMember memory _batch2) external { - BatchMember[] memory batch = new BatchMember[](2); - batch[0] = _batch1; - batch[1] = _batch2; - test_execute_many(batch); - } - - function test_execute_many(BatchMember[] memory _batch) internal { - vm.assume(_batch.length != 0 && _batch.length <= type(uint8).max); - - uint256 size = mayBoundArr(_batch.length); - size = size == 0 ? 1 : size; - - bytes memory encoded = abi.encodePacked(hex"01", uint8(size)); - - for (uint256 i = 0; i < size; i++) { - vm.assume(_batch[i].txs.length <= type(uint8).max); - - if (_batch[i].txs.length == 0) { - _batch[i].txs = new IModuleCalls.Transaction[](1); - } - - bytes32 packedNonce = abi.decode(abi.encodePacked(_batch[i].space, _batch[i].nonce), (bytes32)); - - encoded = abi.encodePacked( - encoded, encodeWord(_batch[i].space), encodeWord(_batch[i].nonce), uint8(_batch[i].txs.length) - ); - - for (uint256 x = 0; x < _batch[i].txs.length; x++) { - IModuleCalls.Transaction memory t = _batch[i].txs[x]; - - encoded = abi.encodePacked( - encoded, - build_flag(t.delegateCall, t.revertOnError, t.gasLimit != 0, t.value != 0, t.data.length != 0), - t.gasLimit != 0 ? encodeWord(t.gasLimit) : bytes(""), - encode_raw_address(t.target), - t.value != 0 ? encodeWord(t.value) : bytes(""), - t.data.length != 0 ? encode_bytes_n(t.data) : bytes("") - ); - } - - // Derive a random address from i - address addr = address(uint160(uint256(keccak256(abi.encode(i))))); - - encoded = abi.encodePacked(encoded, encode_bytes_n(_batch[i].signature), encodeWord(uint256(uint160(addr)))); - - vm.expectCall( - addr, - 0, - abi.encodeWithSelector(IModuleCalls.execute.selector, _batch[i].txs, packedNonce, _batch[i].signature) - ); - } - - (bool s,) = imp.call{gas: type(uint64).max}(encoded); - assertTrue(s); - } - - function test_read_addresses() external { - vm.store(imp, bytes32(uint256(1)), bytes32(uint256(1000))); - vm.store(imp, bytes32(uint256(2)), bytes32(uint256(2000))); - - (bool s, bytes memory r) = imp.call(abi.encodePacked(hex"02", uint256(0))); - assertTrue(s); - - assertEq(r, abi.encode(bytes32(uint256(1000)))); - - (s, r) = imp.call(abi.encodePacked(hex"02", uint256(1))); - assertTrue(s); - - assertEq(r, abi.encode(bytes32(uint256(2000)))); - } - - function test_read_bytes32() external { - vm.store(imp, bytes32(uint256(0)) << 128, bytes32(uint256(1000))); - vm.store(imp, bytes32(uint256(1)) << 128, bytes32(uint256(2000))); - - (bool s, bytes memory r) = imp.call(abi.encodePacked(hex"03", uint256(0))); - assertTrue(s); - - assertEq(r, abi.encode(bytes32(uint256(1000)))); - - (s, r) = imp.call(abi.encodePacked(hex"03", uint256(1))); - assertTrue(s); - - assertEq(r, abi.encode(bytes32(uint256(2000)))); - } - - function test_read_storage_slots() external { - vm.store(imp, bytes32(uint256(0)) << 128, bytes32(uint256(1000))); - vm.store(imp, bytes32(uint256(1)) << 128, bytes32(uint256(2000))); - vm.store(imp, bytes32(uint256(1)), bytes32(uint256(4000))); - vm.store(imp, bytes32(uint256(2)), bytes32(uint256(5000))); - - (bool s, bytes memory r) = - imp.call(abi.encodePacked(hex"05", uint256(0) << 128, uint256(1), uint256(1) << 128, uint256(2))); - - assertTrue(s); - - assertEq(r, abi.encode(uint256(1000), uint256(4000), uint256(2000), uint256(5000))); - } - - function test_read_size() external { - bytes32 word = keccak256(abi.encode(uint256(0))); - vm.store(imp, bytes32(0), word); - - (bool s, bytes memory r) = imp.call(abi.encodePacked(hex"04")); - - assertTrue(s); - assertEq(r, abi.encode(word)); - } - - function test_decode_execute( - IModuleCalls.Transaction[] calldata _txs, - uint160 _space, - uint96 _nonce, - bytes calldata _signature - ) external { - vm.assume(_txs.length != 0 && _txs.length <= type(uint8).max); - - bytes32 packedNonce = abi.decode(abi.encodePacked(_space, _nonce), (bytes32)); - - bytes memory encoded = abi.encodePacked(hex"06", encodeWord(_space), encodeWord(_nonce), uint8(_txs.length)); - - for (uint256 i = 0; i < _txs.length; i++) { - IModuleCalls.Transaction memory t = _txs[i]; - - encoded = abi.encodePacked( - encoded, - build_flag(t.delegateCall, t.revertOnError, t.gasLimit != 0, t.value != 0, t.data.length != 0), - t.gasLimit != 0 ? encodeWord(t.gasLimit) : bytes(""), - encode_raw_address(t.target), - t.value != 0 ? encodeWord(t.value) : bytes(""), - t.data.length != 0 ? encode_bytes_n(t.data) : bytes("") - ); - } - - encoded = abi.encodePacked( - encoded, - encode_bytes_n(_signature), - encodeWord(uint256(uint160(address(0xEbD3186Ab4524330A866BE6866bE7bB55A173a23)))) - ); - - (bool s, bytes memory r) = imp.call(encoded); - assertTrue(s); - assertEq( - r, - abi.encodePacked( - abi.encodeWithSelector(IModuleCalls.execute.selector, _txs, packedNonce, _signature), - uint256(uint160(address(0xEbD3186Ab4524330A866BE6866bE7bB55A173a23))) - ) - ); - } - - function test_decode_execute_many_2(BatchMember memory _batch1, BatchMember memory _batch2) external { - BatchMember[] memory batch = new BatchMember[](2); - batch[0] = _batch1; - batch[1] = _batch2; - test_decode_execute_many(batch); - } - - function test_decode_execute_many(BatchMember[] memory _batch) internal { - vm.assume(_batch.length != 0 && _batch.length <= type(uint8).max); - - uint256 size = mayBoundArr(_batch.length); - size = size == 0 ? 1 : size; - - bytes memory encoded = abi.encodePacked(hex"07", uint8(size)); - - bytes memory expected; - - for (uint256 i = 0; i < size; i++) { - vm.assume(_batch[i].txs.length <= type(uint8).max); - - if (_batch[i].txs.length == 0) { - _batch[i].txs = new IModuleCalls.Transaction[](1); - } - - bytes32 packedNonce = abi.decode(abi.encodePacked(_batch[i].space, _batch[i].nonce), (bytes32)); - - encoded = abi.encodePacked( - encoded, encodeWord(_batch[i].space), encodeWord(_batch[i].nonce), uint8(_batch[i].txs.length) - ); - - for (uint256 x = 0; x < _batch[i].txs.length; x++) { - IModuleCalls.Transaction memory t = _batch[i].txs[x]; - - encoded = abi.encodePacked( - encoded, - build_flag(t.delegateCall, t.revertOnError, t.gasLimit != 0, t.value != 0, t.data.length != 0), - t.gasLimit != 0 ? encodeWord(t.gasLimit) : bytes(""), - encode_raw_address(t.target), - t.value != 0 ? encodeWord(t.value) : bytes(""), - t.data.length != 0 ? encode_bytes_n(t.data) : bytes("") - ); - } - - // Derive a random address from i - address addr = address(uint160(uint256(keccak256(abi.encode(i))))); - - encoded = abi.encodePacked(encoded, encode_bytes_n(_batch[i].signature), encodeWord(uint256(uint160(addr)))); - - expected = abi.encodePacked( - expected, - abi.encodeWithSelector(IModuleCalls.execute.selector, _batch[i].txs, packedNonce, _batch[i].signature), - uint256(uint160(addr)) - ); - } - - (bool s, bytes memory r) = imp.call{gas: type(uint64).max}(encoded); - assertTrue(s); - assertEq(r, expected); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadExecute.sol b/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadExecute.sol deleted file mode 100644 index d7c1f71d81..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadExecute.sol +++ /dev/null @@ -1,143 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "foundry_test/base/AdvTest.sol"; - -import "forge-std/console.sol"; -import "forge-std/console2.sol"; - -import {HuffConfig} from "foundry-huff/HuffConfig.sol"; -import {HuffDeployer} from "foundry-huff/HuffDeployer.sol"; - -import "contracts/modules/commons/interfaces/IModuleCalls.sol"; - -import "./L2CompressorEncoder.sol"; - -uint256 constant FMS = 0xa0; - -contract L2CompressorHuffReadExecuteTest is AdvTest { - address public imp; - - function setUp() public { - imp = address(HuffDeployer.config().with_evm_version("paris").deploy("imps/L2CompressorReadExecute")); - } - - function test_read_simple_execute( - IModuleCalls.Transaction[] calldata _txs, - uint160 _space, - uint96 _nonce, - bytes calldata _signature - ) external { - vm.assume(_txs.length != 0 && _txs.length <= type(uint8).max); - - bytes32 packedNonce = abi.decode(abi.encodePacked(_space, _nonce), (bytes32)); - - bytes memory encoded = abi.encodePacked(encodeWord(_space), encodeWord(_nonce), uint8(_txs.length)); - - for (uint256 i = 0; i < _txs.length; i++) { - IModuleCalls.Transaction memory t = _txs[i]; - - encoded = abi.encodePacked( - encoded, - build_flag(t.delegateCall, t.revertOnError, t.gasLimit != 0, t.value != 0, t.data.length != 0), - t.gasLimit != 0 ? encodeWord(t.gasLimit) : bytes(""), - encode_raw_address(t.target), - t.value != 0 ? encodeWord(t.value) : bytes(""), - t.data.length != 0 ? encode_bytes_n(t.data) : bytes("") - ); - } - - encoded = abi.encodePacked(encoded, encode_bytes_n(_signature)); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - // Encode using solidity - bytes memory solidityEncoded = - abi.encodeWithSelector(IModuleCalls.execute.selector, _txs, packedNonce, _signature); - assertEq(solidityEncoded, res); - } - - function test_read_nested_execute( - address _wallet, - IModuleCalls.Transaction[] calldata _txs, - uint160 _space, - uint96 _nonce, - bytes calldata _signature - ) external { - vm.assume(_txs.length != 0 && _txs.length <= type(uint8).max); - bytes32 packedNonce = abi.decode(abi.encodePacked(_space, _nonce), (bytes32)); - - IModuleCalls.Transaction[] memory outerTx = new IModuleCalls.Transaction[](1); - outerTx[0] = IModuleCalls.Transaction({ - delegateCall: false, - revertOnError: false, - gasLimit: 0, - target: _wallet, - value: 0, - data: abi.encodeWithSelector(IModuleCalls.execute.selector, _txs, packedNonce, _signature) - }); - - bytes memory outerSignature = hex"112233"; - bytes32 outerNonce = bytes32(0); - - bytes memory encoded = abi.encodePacked( - encodeWord(bytes32(0)), - encodeWord(bytes32(0)), - uint8(1), // One transaction - build_flag( - outerTx[0].delegateCall, - outerTx[0].revertOnError, - outerTx[0].gasLimit != 0, - outerTx[0].value != 0, - outerTx[0].data.length != 0 - ), - bytes(""), - encode_raw_address(outerTx[0].target), - bytes("") - ); - - // Encode the inner transaction - encoded = abi.encodePacked( - encoded, - uint8(0x26), // Read EXECUTE flag - encodeWord(_space), - encodeWord(_nonce), - uint8(_txs.length) - ); - - for (uint256 i = 0; i < _txs.length; i++) { - IModuleCalls.Transaction memory t = _txs[i]; - - encoded = abi.encodePacked( - encoded, - build_flag(t.delegateCall, t.revertOnError, t.gasLimit != 0, t.value != 0, t.data.length != 0), - t.gasLimit != 0 ? encodeWord(t.gasLimit) : bytes(""), - encode_raw_address(t.target), - t.value != 0 ? encodeWord(t.value) : bytes(""), - t.data.length != 0 ? encode_bytes_n(t.data) : bytes("") - ); - } - - encoded = abi.encodePacked(encoded, encode_bytes_n(_signature)); - - // Encode the outer signature - encoded = abi.encodePacked(encoded, encode_bytes_n(outerSignature)); - - (bool s, bytes memory r) = imp.staticcall(encoded); - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - // Encode using solidity - bytes memory solidityEncoded = - abi.encodeWithSelector(IModuleCalls.execute.selector, outerTx, outerNonce, outerSignature); - assertEq(solidityEncoded, res); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadFlag.t.sol b/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadFlag.t.sol deleted file mode 100644 index 49e59668b7..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadFlag.t.sol +++ /dev/null @@ -1,1018 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "foundry_test/base/AdvTest.sol"; - -import "forge-std/console.sol"; -import "forge-std/console2.sol"; - -import {HuffConfig} from "foundry-huff/HuffConfig.sol"; -import {HuffDeployer} from "foundry-huff/HuffDeployer.sol"; - -import "contracts/modules/commons/interfaces/IModuleCalls.sol"; - -import "./L2CompressorEncoder.sol"; - -uint256 constant FMS = 0xa0; - -contract L2CompressorHuffReadFlagTests is AdvTest { - address public imp; - - function setUp() public { - imp = address(HuffDeployer.config().with_evm_version("paris").deploy("imps/L2CompressorReadFlag")); - } - - function test_read_flag_bytes32_one(uint8 _val) external { - (bool s, bytes memory r) = imp.staticcall(abi.encodePacked(hex"01", _val)); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 2); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(uint256(_val)), res); - } - - function test_read_flag_bytes32_two(uint16 _val) external { - (bool s, bytes memory r) = imp.staticcall(abi.encodePacked(hex"02", _val)); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 3); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(uint256(_val)), res); - } - - function test_read_flag_bytes32_x(uint256 _size, bytes memory _content) public { - _size = bound(_size, 1, 32); - - (bool s, bytes memory r) = imp.staticcall(abi.encodePacked(uint8(_size), _content)); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 1 + _size); - assertEq(windex, FMS + 32); - - _content = abi.encodePacked(_content, bytes32(0)); - uint256 expected; - assembly { - expected := mload(add(_content, 0x20)) - expected := shr(sub(256, mul(_size, 8)), expected) - } - - assertEq(abi.encode(uint256(expected)), res); - } - - function test_read_flag_save_and_read_address(address _addr2) external { - address _addr = address(this); - (bool s, bytes memory r) = imp.call(abi.encodePacked(hex"21", _addr)); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, 1 + 20); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_addr), res); - - // Read the address at index 1 - (s, r) = imp.staticcall(abi.encodePacked(hex"23", uint16(1))); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 3); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_addr), res); - - // Save a second address - (s, r) = imp.call(abi.encodePacked(hex"21", _addr2)); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, 1 + 20); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_addr2), res); - - // Read second address using 3 bytes, 4 bytes and 5 bytes - (s, r) = imp.staticcall(abi.encodePacked(hex"24", uint24(2))); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 4); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_addr2), res); - - (s, r) = imp.staticcall(abi.encodePacked(hex"25", uint32(2))); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 5); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_addr2), res); - - (s, r) = imp.staticcall(abi.encodePacked(hex"25", uint32(2))); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 5); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_addr2), res); - } - - function test_read_flag_save_and_read_bytes32(bytes32 _b1, bytes32 _b2) external { - (bool s, bytes memory r) = imp.call(abi.encodePacked(hex"22", _b1)); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, 1 + 32); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_b1), res); - - // Read the address at index 1 - (s, r) = imp.staticcall(abi.encodePacked(hex"27", uint16(1))); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 3); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_b1), res); - - // Save a second address - (s, r) = imp.call(abi.encodePacked(hex"22", _b2)); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, 1 + 32); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_b2), res); - - // Read second address using 3 bytes, 4 bytes and 5 bytes - (s, r) = imp.staticcall(abi.encodePacked(hex"28", uint24(2))); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 4); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_b2), res); - - (s, r) = imp.staticcall(abi.encodePacked(hex"29", uint32(2))); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 5); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_b2), res); - - (s, r) = imp.staticcall(abi.encodePacked(hex"29", uint32(2))); - - assertTrue(s); - (rindex, windex, res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 5); - assertEq(windex, FMS + 32); - - assertEq(abi.encode(_b2), res); - } - - function test_read_flag_bytes_n(bytes calldata _data, bytes calldata _extra) external { - (bool s, bytes memory r) = - imp.staticcall(abi.encodePacked(hex"2b", hex"04", uint32(_data.length), _data, _extra)); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, _data.length + 1 + 1 + 4); - assertEq(windex, FMS + _data.length); - assertEq(res, _data); - } - - function test_read_flag_abi_encode_0(bytes4 _selector) external { - bytes memory encoded = encode_abi_call(_selector); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(_selector), res); - } - - function test_read_flag_abi_encode_1(bytes4 _selector, bytes32 _v1) external { - bytes memory encoded = encode_abi_call(_selector, _v1); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(_selector, _v1), res); - } - - function test_read_flag_abi_encode_2(bytes4 _selector, bytes32 _v1, bytes32 _v2) external { - bytes memory encoded = encode_abi_call(_selector, _v1, _v2); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(_selector, _v1, _v2), res); - } - - function test_read_flag_abi_encode_3(bytes4 _selector, bytes32 _v1, bytes32 _v2, bytes32 _v3) external { - bytes memory encoded = encode_abi_call(_selector, _v1, _v2, _v3); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(_selector, _v1, _v2, _v3), res); - } - - function test_read_flag_abi_encode_4(bytes4 _selector, bytes32 _v1, bytes32 _v2, bytes32 _v3, bytes32 _v4) - external - { - bytes memory encoded = encode_abi_call(_selector, _v1, _v2, _v3, _v4); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(_selector, _v1, _v2, _v3, _v4), res); - } - - function test_read_flag_abi_encode_5( - bytes4 _selector, - bytes32 _v1, - bytes32 _v2, - bytes32 _v3, - bytes32 _v4, - bytes32 _v5 - ) external { - bytes memory encoded = encode_abi_call(_selector, _v1, _v2, _v3, _v4, _v5); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(_selector, _v1, _v2, _v3, _v4, _v5), res); - } - - function test_read_flag_abi_encode_5( - bytes4 _selector, - bytes32 _v1, - bytes32 _v2, - bytes32 _v3, - bytes32 _v4, - bytes32 _v5, - bytes32 _v6 - ) external { - bytes memory encoded = encode_abi_call(_selector, _v1, _v2, _v3, _v4, _v5, _v6); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(_selector, _v1, _v2, _v3, _v4, _v5, _v6), res); - } - - function test_read_nested(bytes memory _dynamic, uint256 _val1, uint256 _val2) external { - bytes memory encoded = - encode_nested(encode_bytes_n(_dynamic), encode_nested(encodeWord(_val1), encodeWord(_val2))); - - (bool s, bytes memory r) = imp.staticcall(encoded); - assertEq(s, true); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(_dynamic, _val1, _val2), res); - } - - function test_read_encode_nested_long() external { - bytes[] memory vals = new bytes[](2000); - - for (uint256 i = 0; i < vals.length; i++) { - vals[i] = encodeWord(i * 2); - } - - bytes memory encoded = encode_nested(vals); - - (bool s, bytes memory r) = imp.staticcall(encoded); - assertEq(s, true); - - bytes memory expected; - for (uint256 i = 0; i < vals.length; i++) { - expected = abi.encodePacked(expected, uint256(i * 2)); - } - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(expected, res); - } - - function test_read_signature(uint8 _weight, bytes1[66] memory _sig) external { - bytes memory _sig2 = new bytes(66); - - for (uint256 i = 0; i < _sig.length; i++) { - _sig2[i] = _sig[i]; - } - - bytes memory encoded = encode_eoa_signature(_weight, _sig2); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - - assertEq(res, abi.encodePacked(uint8(0), _weight, _sig2)); - } - - function test_read_address(uint8 _weight, address _addr) external { - bytes memory encoded = encode_address(_weight, _addr); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - - assertEq(res, abi.encodePacked(uint8(1), _weight, _addr)); - } - - function test_read_node(bytes32 _node) external { - bytes memory encoded = encode_node(_node); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - - assertEq(res, abi.encodePacked(uint8(3), _node)); - } - - function test_read_subdigest(bytes32 _subdigest) external { - bytes memory encoded = encode_subdigest(_subdigest); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - - assertEq(res, abi.encodePacked(uint8(5), _subdigest)); - } - - function test_read_branch(bytes memory _data) external { - vm.assume(_data.length <= type(uint24).max); - - bytes memory encoded = encode_branch(_data); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - - assertEq(res, abi.encodePacked(uint8(4), uint24(_data.length), _data)); - } - - function test_read_nested(uint8 _weight, uint8 _threshold, bytes memory _data) external { - vm.assume(_data.length <= type(uint24).max); - - bytes memory encoded = encode_nested(_weight, _threshold, _data); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - - assertEq(res, abi.encodePacked(uint8(6), uint8(_weight), uint16(_threshold), uint24(_data.length), _data)); - } - - function test_read_dynamic_signature(uint8 _weight, address _signer, bytes memory _signature) external { - vm.assume(_signature.length <= type(uint24).max - 1); - - bytes memory encoded = encode_dynamic_signature(_weight, _signer, _signature); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - - assertEq( - res, - abi.encodePacked(uint8(2), uint8(_weight), _signer, uint24(_signature.length + 1), _signature, uint8(3)) - ); - } - - function test_read_sequence_signature(bool _noChainId, uint16 _threshold, uint32 _checkpoint, bytes memory _tree) - external - { - bytes memory encoded = encode_sequence_signature(_noChainId, _threshold, _checkpoint, _tree); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - - assertEq(res, abi.encodePacked(uint8(_noChainId ? 0x02 : 0x01), uint16(_threshold), uint32(_checkpoint), _tree)); - } - - function test_read_sequence_chained_signatures(bytes[] memory _signatures) external { - vm.assume(_signatures.length != 0); - for (uint256 i = 0; i < _signatures.length; i++) { - vm.assume(_signatures[i].length <= type(uint24).max); - } - - bytes memory encoded = encode_sequence_chained_signatures(_signatures); - - (bool s, bytes memory r) = imp.staticcall(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - - bytes memory expected = abi.encodePacked(uint8(0x03)); - - for (uint256 i = 0; i < _signatures.length; i++) { - expected = abi.encodePacked(expected, uint24(_signatures[i].length), _signatures[i]); - } - - assertEq(res, expected); - } - - function test_read_abi_dynamic_no_dynamic(bytes4 _selector, bytes32[] calldata _values) external { - vm.assume(_values.length <= type(uint8).max && _values.length != 0); - bool[] memory isDynamic = new bool[](_values.length); - bytes[] memory values = new bytes[](_values.length); - for (uint256 i = 0; i < _values.length; i++) { - values[i] = abi.encodePacked(_values[i]); - } - - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, values); - - (bool s, bytes memory r) = imp.staticcall(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - - assertEq(res, abi.encodePacked(_selector, _values)); - } - - function test_read_abi_dynamic_only_1(bytes4 _selector, bytes memory _data1) external { - bool[] memory isDynamic = new bool[](1); - bytes[] memory _values = new bytes[](1); - - isDynamic[0] = true; - - _values[0] = _data1; - - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, _values); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - - assertEq(res, abi.encodeWithSelector(_selector, _values[0])); - } - - function test_read_abi_dynamic_only_2(bytes4 _selector, bytes memory _data1, bytes memory _data2) external { - bool[] memory isDynamic = new bool[](2); - bytes[] memory _values = new bytes[](2); - - isDynamic[0] = true; - isDynamic[1] = true; - - _values[0] = _data1; - _values[1] = _data2; - - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, _values); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - - assertEq(res, abi.encodeWithSelector(_selector, _values[0], _values[1])); - } - - function test_read_abi_dynamic_only_3( - bytes4 _selector, - bytes memory _data1, - bytes memory _data2, - bytes memory _data3 - ) external { - bool[] memory isDynamic = new bool[](3); - bytes[] memory _values = new bytes[](3); - - isDynamic[0] = true; - isDynamic[1] = true; - isDynamic[2] = true; - - _values[0] = _data1; - _values[1] = _data2; - _values[2] = _data3; - - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, _values); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - - assertEq(res, abi.encodeWithSelector(_selector, _values[0], _values[1], _values[2])); - } - - function test_read_abi_dynamic_only_8( - bytes4 _selector, - bytes memory _data1, - bytes memory _data2, - bytes memory _data3, - bytes memory _data4, - bytes memory _data5, - bytes memory _data6, - bytes memory _data7, - bytes memory _data8 - ) external { - bytes memory r; - uint256 el; - - { - bool[] memory isDynamic = new bool[](8); - bytes[] memory _values = new bytes[](8); - - isDynamic[0] = true; - isDynamic[1] = true; - isDynamic[2] = true; - isDynamic[3] = true; - isDynamic[4] = true; - isDynamic[5] = true; - isDynamic[6] = true; - isDynamic[7] = true; - - _values[0] = _data1; - _values[1] = _data2; - _values[2] = _data3; - _values[3] = _data4; - _values[4] = _data5; - _values[5] = _data6; - _values[6] = _data7; - _values[7] = _data8; - - bool s; - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, _values); - - (s, r) = imp.staticcall(encoded); - el = encoded.length; - assertTrue(s); - } - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, el); - - assertEq(res, abi.encodeWithSelector(_selector, _data1, _data2, _data3, _data4, _data5, _data6, _data7, _data8)); - } - - function test_read_mixed_2(bytes4 _selector, bytes32 _data1, bytes memory _data2) external { - bool[] memory isDynamic = new bool[](2); - bytes[] memory _values = new bytes[](2); - - isDynamic[0] = false; - isDynamic[1] = true; - - _values[0] = abi.encodePacked(_data1); - _values[1] = _data2; - - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, _values); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - bytes memory expected = abi.encodeWithSelector(_selector, _data1, _data2); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - - assertEq(res, expected); - } - - function test_read_mixed_2b(bytes4 _selector, bytes memory _data1, bytes32 _data2) external { - bool[] memory isDynamic = new bool[](2); - bytes[] memory _values = new bytes[](2); - - isDynamic[0] = true; - isDynamic[1] = false; - - _values[0] = _data1; - _values[1] = abi.encodePacked(_data2); - - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, _values); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - bytes memory expected = abi.encodeWithSelector(_selector, _data1, _data2); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - - assertEq(res, expected); - } - - function test_read_abi_mixed_8b( - bytes4 _selector, - bytes32 _data1, - bytes memory _data2, - bytes32 _data3, - bytes memory _data4, - bytes memory _data5, - bytes memory _data6, - bytes32 _data7, - bytes32 _data8 - ) external { - bytes memory r; - uint256 el; - - { - bool[] memory isDynamic = new bool[](8); - bytes[] memory _values = new bytes[](8); - - isDynamic[0] = false; - isDynamic[1] = true; - isDynamic[2] = false; - isDynamic[3] = true; - isDynamic[4] = true; - isDynamic[5] = true; - isDynamic[6] = false; - isDynamic[7] = false; - - _values[0] = abi.encodePacked(_data1); - _values[1] = _data2; - _values[2] = abi.encodePacked(_data3); - _values[3] = _data4; - _values[4] = _data5; - _values[5] = _data6; - _values[6] = abi.encodePacked(_data7); - _values[7] = abi.encodePacked(_data8); - - bool s; - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, _values); - - (s, r) = imp.staticcall(encoded); - el = encoded.length; - assertTrue(s); - } - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, el); - - assertEq(res, abi.encodeWithSelector(_selector, _data1, _data2, _data3, _data4, _data5, _data6, _data7, _data8)); - } - - function test_read_abi_mixed_8b( - bytes4 _selector, - bytes memory _data1, - bytes32 _data2, - bytes32 _data3, - bytes memory _data4, - bytes memory _data5, - bytes32 _data6, - bytes memory _data7, - bytes memory _data8 - ) external { - bytes memory r; - uint256 el; - - { - bool[] memory isDynamic = new bool[](8); - bytes[] memory _values = new bytes[](8); - - isDynamic[0] = true; - isDynamic[1] = false; - isDynamic[2] = false; - isDynamic[3] = true; - isDynamic[4] = true; - isDynamic[5] = false; - isDynamic[6] = true; - isDynamic[7] = true; - - _values[0] = _data1; - _values[1] = abi.encodePacked(_data2); - _values[2] = abi.encodePacked(_data3); - _values[3] = _data4; - _values[4] = _data5; - _values[5] = abi.encodePacked(_data6); - _values[6] = _data7; - _values[7] = _data8; - - bool s; - bytes memory encoded = encode_abi_dynamic(_selector, isDynamic, _values); - - (s, r) = imp.staticcall(encoded); - el = encoded.length; - assertTrue(s); - } - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, el); - - assertEq(res, abi.encodeWithSelector(_selector, _data1, _data2, _data3, _data4, _data5, _data6, _data7, _data8)); - } - - function test_read_no_op() external { - bytes memory encoded = abi.encodePacked(uint8(0x4c)); - - (bool s, bytes memory r) = imp.staticcall(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, 1); - assertEq(windex, FMS + res.length); - assertEq(res.length, 0); - } - - function test_mirror_flag() external { - bytes memory encoded = abi.encodePacked( - encode_nested(encodeWord(type(uint256).max - 1), abi.encodePacked(uint8(0x4d), uint16(0x02))) - ); - - (bool s, bytes memory r) = imp.staticcall(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - assertEq(res, abi.encodePacked(type(uint256).max - 1, type(uint256).max - 1)); - } - - function test_copy_calldata() external { - bytes memory encoded = abi.encodePacked( - encode_nested(encodeWord(type(uint256).max - 1), abi.encodePacked(uint8(0x4e), uint16(0x03), uint8(0x21))) - ); - - (bool s, bytes memory r) = imp.staticcall(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - assertEq(res, abi.encodePacked(type(uint256).max - 1, type(uint256).max - 1, uint8(0x4e))); - } - - function test_read_storage_flag_addr(address _addr) external { - _addr = address(this); - bytes memory encoded = abi.encodePacked( - encode_nested(abi.encodePacked(uint8(0x21), _addr), abi.encodePacked(uint8(0x4f), uint16(0x02))) - ); - - (bool s, bytes memory r) = imp.call(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - assertEq(res, abi.encode(_addr, _addr)); - } - - function test_read_literal(uint256 _val) external { - bytes memory encoded = encodeWord(_val); - - (bool s, bytes memory r) = imp.call(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - assertEq(res, abi.encode(_val)); - } - - function test_read_pow_10(uint256 _exp) external { - _exp = bound(_exp, 0, 77); - - // First bit means we aren't going to multiply it after - bytes memory encoded = abi.encodePacked(uint8(0x00), uint8(_exp) | uint8(0x80)); - - (bool s, bytes memory r) = imp.call(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - assertEq(res, abi.encode(uint256(10 ** _exp))); - } - - function test_read_pow_10_and_mul(uint256 _exp, uint8 _mantissa) external { - _exp = bound(_exp, 1, 77); - - // First bit means we aren't going to multiply it after - bytes memory encoded = abi.encodePacked(uint8(0x00), uint8(_exp), uint8(_mantissa)); - - (bool s, bytes memory r) = imp.call(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - unchecked { - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - assertEq(res, abi.encode(uint256(10 ** _exp) * uint256(_mantissa))); - } - } - - function test_read_pow_10_and_mul_l(uint256 _exp, uint256 _mantissa) external { - _exp = bound(_exp, 0, 63); - _mantissa = bound(_mantissa, 0, 0x3ffff); - - // Encode the 3 byte word, the first 3 bits are the exponent, the rest is the mantissa - bytes3 word = bytes3(uint24(_exp) << 18 | uint24(_mantissa)); - - // First bit means we aren't going to multiply it after - bytes memory encoded = abi.encodePacked(uint8(0x2a), word); - - (bool s, bytes memory r) = imp.call(encoded); - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - uint256 expected; - unchecked { - expected = uint256(10 ** _exp) * uint256(_mantissa); - } - - unchecked { - assertEq(windex, FMS + res.length); - assertEq(rindex, encoded.length); - assertEq(res, abi.encode(expected)); - } - } - - function test_read_self_execute() external { - // vm.assume(_txs.length != 0 && _txs.length <= type(uint8).max); - - IModuleCalls.Transaction[] memory _txs = new IModuleCalls.Transaction[](1); - - bytes memory encoded = abi.encodePacked(uint8(0x00), uint8(0x00), uint8(_txs.length)); - - for (uint256 i = 0; i < _txs.length; i++) { - IModuleCalls.Transaction memory t = _txs[i]; - - encoded = abi.encodePacked( - encoded, - build_flag(t.delegateCall, t.revertOnError, t.gasLimit != 0, t.value != 0, t.data.length != 0), - t.gasLimit != 0 ? encodeWord(t.gasLimit) : bytes(""), - encode_raw_address(t.target), - t.value != 0 ? encodeWord(t.value) : bytes(""), - t.data.length != 0 ? encode_bytes_n(t.data) : bytes("") - ); - } - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - bytes memory solidityEncoded = abi.encodeWithSelector(IModuleCalls.selfExecute.selector, _txs); - assertEq(solidityEncoded, res); - } - - function test_read_flag_abi_encode_by_index() external { - bytes memory encoded = abi.encodePacked(uint8(0x2d), uint8(0x01)); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(hex"a9059cbb", res); - } - - function test_read_flag_abi_encode_by_index_2() external { - bytes memory encoded = abi.encodePacked(uint8(0x2d), uint8(0x02)); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(hex"095ea7b3", res); - } - - function test_read_flag_abi_encode_by_index_2_args(bytes32 _arg) external { - bytes memory encoded = abi.encodePacked(uint8(0x2e), uint8(0x01), encodeWord(_arg)); - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, FMS + res.length); - assertEq(abi.encodePacked(hex"a9059cbb", _arg), res); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadNonce.sol b/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadNonce.sol deleted file mode 100644 index ad10456850..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadNonce.sol +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "foundry_test/base/AdvTest.sol"; - -import "forge-std/console.sol"; -import "forge-std/console2.sol"; - -import {HuffConfig} from "foundry-huff/HuffConfig.sol"; -import {HuffDeployer} from "foundry-huff/HuffDeployer.sol"; - -import "contracts/modules/commons/interfaces/IModuleCalls.sol"; - -uint256 constant FMS = 0xa0; - -import "./L2CompressorEncoder.sol"; - -contract L2CompressorHuffReadNonceTest is AdvTest { - address public imp; - - function setUp() public { - imp = address(HuffDeployer.config().with_evm_version("paris").deploy("imps/L2CompressorReadNonce")); - } - - function test_read_simple_nonce() external { - uint256 space = 76518466025766696338879503773554426820412884125; - uint256 nonce = 29095922913147819529123945996; - - bytes32 compact = 0x0d6734e95e00251b768924d47d52db3270fcc49d5e039555a5312d84eb305e0c; - - bytes memory encoded = abi.encodePacked(encodeWord(space), encodeWord(nonce)); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - assertEq(compact, abi.decode(res, (bytes32))); - } - - function test_read_nonce(uint160 _space, uint96 _nonce) external { - bytes memory encoded = abi.encodePacked(encodeWord(_space), encodeWord(_nonce)); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - assertEq(abi.encodePacked(_space, _nonce), res); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadTx.t.sol b/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadTx.t.sol deleted file mode 100644 index a8682f1daf..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadTx.t.sol +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "foundry_test/base/AdvTest.sol"; - -import "forge-std/console.sol"; -import "forge-std/console2.sol"; - -import {HuffConfig} from "foundry-huff/HuffConfig.sol"; -import {HuffDeployer} from "foundry-huff/HuffDeployer.sol"; - -import "contracts/modules/commons/interfaces/IModuleCalls.sol"; - -import "./L2CompressorEncoder.sol"; - -uint256 constant FMS = 0xa0; - -contract L2CompressorHuffReadTxTests is AdvTest { - address public imp; - - function setUp() public { - imp = address(HuffDeployer.config().with_evm_version("paris").deploy("imps/L2CompressorReadTx")); - } - - function test_read_simple_transaction(address _addr) external { - bytes memory encoded = abi.encodePacked(build_flag(true, true, false, false, false), encode_raw_address(_addr)); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - IModuleCalls.Transaction memory t; - t.delegateCall = true; - t.revertOnError = true; - t.target = _addr; - - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - // Abi encode prefixes with the point on which the data starts - // we don't do it on the compressor, so we need to append 32 - assertEq(abi.encodePacked(abi.encode(32), res), abi.encode(t)); - } - - function test_read_simple_transaction_with_data(address _addr, bytes memory _data) external { - bytes memory encoded = abi.encodePacked( - build_flag(true, true, false, false, true), encode_raw_address(_addr), encode_bytes_n(_data) - ); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - IModuleCalls.Transaction memory t; - t.delegateCall = true; - t.revertOnError = true; - t.target = _addr; - t.data = _data; - - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - // Abi encode prefixes with the point on which the data starts - // we don't do it on the compressor, so we need to append 32 - assertEq(abi.encodePacked(abi.encode(32), res), abi.encode(t)); - } - - function test_read_transaction(IModuleCalls.Transaction memory _tx) external { - bytes memory encoded = abi.encodePacked( - build_flag(_tx.delegateCall, _tx.revertOnError, _tx.gasLimit != 0, _tx.value != 0, _tx.data.length != 0), - _tx.gasLimit != 0 ? encodeWord(_tx.gasLimit) : bytes(""), - encode_raw_address(_tx.target), - _tx.value != 0 ? encodeWord(_tx.value) : bytes(""), - _tx.data.length != 0 ? encode_bytes_n(_tx.data) : bytes("") - ); - - console.logBytes(encoded); - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - // Abi encode prefixes with the point on which the data starts - // we don't do it on the compressor, so we need to append 32 - assertEq(abi.encodePacked(abi.encode(32), res), abi.encode(_tx)); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadTxs.t.sol b/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadTxs.t.sol deleted file mode 100644 index 499a2c26f6..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/utils/L2CompressorHuffReadTxs.t.sol +++ /dev/null @@ -1,123 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "foundry_test/base/AdvTest.sol"; - -import "forge-std/console.sol"; -import "forge-std/console2.sol"; - -import {HuffConfig} from "foundry-huff/HuffConfig.sol"; -import {HuffDeployer} from "foundry-huff/HuffDeployer.sol"; - -import "contracts/modules/commons/interfaces/IModuleCalls.sol"; - -uint256 constant FMS = 0xa0; - -import "./L2CompressorEncoder.sol"; - -contract L2CompressorHuffReadTxTests is AdvTest { - address public imp; - - function setUp() public { - imp = address(HuffDeployer.config().with_evm_version("paris").deploy("imps/L2CompressorReadTxs")); - } - - function test_read_simple_2_transactions() external { - address _addr = address(0x1234567890123456789012345678901234567890); - address _addr2 = address(this); - bytes memory encoded = abi.encodePacked( - uint8(0x02), - build_flag(false, true, false, false, false), - encode_raw_address(_addr), - build_flag(true, true, false, false, false), - encode_raw_address(_addr2) - ); - - (bool s, bytes memory r) = imp.staticcall{gas: 10000}(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - IModuleCalls.Transaction[] memory t = new IModuleCalls.Transaction[](2); - t[0].delegateCall = false; - t[0].revertOnError = true; - t[0].target = _addr; - t[1].delegateCall = true; - t[1].revertOnError = true; - t[1].target = _addr2; - - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - // Abi encode prefixes with the point on which the data starts - // we don't do it on the compressor, so we need to append 32 - assertEq(abi.encodePacked(abi.encode(32), res), abi.encode(t)); - } - - function test_read_simple_2_transactions_asymetric() external { - address _addr = address(0x1234567890123456789012345678901234567890); - address _addr2 = address(this); - bytes memory _data = hex"123456789012345678901234567890123456789012345678901234567890123456789011222211"; - - bytes memory encoded = abi.encodePacked( - uint8(0x02), - build_flag(false, true, false, false, true), - encode_raw_address(_addr), - encode_bytes_n(_data), - build_flag(true, true, false, false, false), - encode_raw_address(_addr2) - ); - - (bool s, bytes memory r) = imp.staticcall{gas: 10000}(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - IModuleCalls.Transaction[] memory t = new IModuleCalls.Transaction[](2); - t[0].delegateCall = false; - t[0].revertOnError = true; - t[0].target = _addr; - t[0].data = _data; - t[1].delegateCall = true; - t[1].revertOnError = true; - t[1].target = _addr2; - - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - // Abi encode prefixes with the point on which the data starts - // we don't do it on the compressor, so we need to append 32 - assertEq(abi.encodePacked(abi.encode(32), res), abi.encode(t)); - } - - function test_read_transactions(IModuleCalls.Transaction[] memory _txs) external { - vm.assume(_txs.length != 0 && _txs.length <= type(uint8).max); - - bytes memory encoded = abi.encodePacked(uint8(_txs.length)); - - for (uint256 i = 0; i < _txs.length; i++) { - IModuleCalls.Transaction memory t = _txs[i]; - - encoded = abi.encodePacked( - encoded, - build_flag(t.delegateCall, t.revertOnError, t.gasLimit != 0, t.value != 0, t.data.length != 0), - t.gasLimit != 0 ? encodeWord(t.gasLimit) : bytes(""), - encode_raw_address(t.target), - t.value != 0 ? encodeWord(t.value) : bytes(""), - t.data.length != 0 ? encode_bytes_n(t.data) : bytes("") - ); - } - - (bool s, bytes memory r) = imp.staticcall(encoded); - - assertTrue(s); - (uint256 rindex, uint256 windex, bytes memory res) = abi.decode(r, (uint256, uint256, bytes)); - - assertEq(rindex, encoded.length); - assertEq(windex, res.length + FMS); - - // Abi encode prefixes with the point on which the data starts - // we don't do it on the compressor, so we need to append 32 - assertEq(abi.encodePacked(abi.encode(32), res), abi.encode(_txs)); - } -} diff --git a/packages/wallet-contracts/foundry_test/modules/utils/RequireUtils.t.sol b/packages/wallet-contracts/foundry_test/modules/utils/RequireUtils.t.sol deleted file mode 100644 index 370c53726d..0000000000 --- a/packages/wallet-contracts/foundry_test/modules/utils/RequireUtils.t.sol +++ /dev/null @@ -1,158 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/Factory.sol"; -import "contracts/modules/commons/ModuleCalls.sol"; -import "contracts/modules/utils/RequireUtils.sol"; - -import "contracts/mocks/ERC20Mock.sol"; -import "contracts/mocks/ERC721Mock.sol"; -import "contracts/mocks/ERC1155Mock.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract ModuleCallsImp is ModuleCalls { - function writeNonce(uint256 _space, uint256 _nonce) external { - _writeNonce(_space, _nonce); - } - - // Module Auth imp - mapping(bytes32 => mapping(bytes => bytes32)) public sigToSubdigest; - mapping(bytes32 => mapping(bytes => bool)) public sigToIsValid; - - function _signatureValidation(bytes32 _digest, bytes calldata _signature) - internal - view - override - returns (bool, bytes32) - {} - - function signatureRecovery(bytes32, bytes calldata) - public - view - override - returns (uint256, uint256, bytes32, bytes32, uint256) - {} - - function _isValidImage(bytes32) internal view override returns (bool) {} - - function updateImageHash(bytes32) external override {} - - function _updateImageHash(bytes32) internal override {} -} - -contract RequireUtilsTest is AdvTest { - ModuleCallsImp private imp; - RequireUtils private requireUtils; - ERC20Mock private erc20; - ERC721Mock private erc721; - ERC1155Mock private erc1155; - - function setUp() external { - requireUtils = new RequireUtils(); - ModuleCallsImp template = new ModuleCallsImp(); - Factory factory = new Factory(); - imp = ModuleCallsImp(factory.deploy(address(template), bytes32(0))); - erc20 = new ERC20Mock(1000 * 10 ** 18); - erc721 = new ERC721Mock(); - erc1155 = new ERC1155Mock(); - } - - function test_requireNonExpired(uint256 _expiration) external { - if (block.timestamp >= _expiration) { - vm.expectRevert(bytes("RequireUtils#requireNonExpired: EXPIRED")); - } - requireUtils.requireNonExpired(_expiration); - } - - function test_requireMinNonce(uint160 _space, uint96 _nonce, uint96 _nonceToCheck) external { - imp.writeNonce(_space, _nonce); - uint256 encoded = abi.decode(abi.encodePacked(_space, _nonceToCheck), (uint256)); - if (_nonce < _nonceToCheck) { - vm.expectRevert(bytes("RequireUtils#requireMinNonce: NONCE_BELOW_REQUIRED")); - } - requireUtils.requireMinNonce(address(imp), encoded); - } - - function test_requireMinNonceWithExactNonce(uint160 _space, uint96 _nonce) external { - imp.writeNonce(_space, _nonce); - uint256 encoded = abi.decode(abi.encodePacked(_space, _nonce), (uint256)); - requireUtils.requireMinNonce(address(imp), encoded); - } - - function test_requireMinERC20Balance(uint256 _minBalance) external { - uint256 balance = erc20.balanceOf(address(this)); - - if (balance < _minBalance) { - vm.expectRevert(bytes("RequireUtils#requireMinERC20Balance: BALANCE_TOO_LOW")); - } - requireUtils.requireMinERC20Balance(address(erc20), address(this), _minBalance); - } - - function test_requireMinERC20Allowance(uint256 _minAllowance) external { - erc20.approve(address(imp), 100 * 10 ** 18); - - uint256 allowance = erc20.allowance(address(this), address(imp)); - - if (allowance < _minAllowance) { - vm.expectRevert(bytes("RequireUtils#requireMinERC20Allowance: ALLOWANCE_TOO_LOW")); - } - requireUtils.requireMinERC20Allowance(address(erc20), address(this), address(imp), _minAllowance); - } - - function test_requireERC721Ownership(uint256 _tokenId) external { - if (_tokenId % 2 == 0) { - erc721.mint(address(imp), _tokenId); - } else { - erc721.mint(address(this), _tokenId); - } - - if (erc721.ownerOf(_tokenId) != address(this)) { - vm.expectRevert(bytes("RequireUtils#requireERC721Ownership: NOT_OWNER")); - } - requireUtils.requireERC721Ownership(address(erc721), address(this), _tokenId); - } - - function test_requireERC721Approval(uint256 _tokenId) external { - erc721.mint(address(this), _tokenId); - - if (_tokenId % 2 == 0) { - erc721.approve(address(imp), _tokenId); - } - - if (_tokenId % 5 == 0) { - erc721.setApprovalForAll(address(imp), true); - } - - address approved = erc721.getApproved(_tokenId); - - if (approved != address(imp) && !erc721.isApprovedForAll(address(this), address(imp))) { - vm.expectRevert(bytes("RequireUtils#requireERC721Approval: NOT_APPROVED")); - } - requireUtils.requireERC721Approval(address(erc721), address(this), address(imp), _tokenId); - } - - function test_requireMinERC1155Balance(uint256 _tokenId, uint256 _minBalance) external { - if (_tokenId % 2 == 0) { - erc1155.mint(address(this), _tokenId, _minBalance); - } - - uint256 balance = erc1155.balanceOf(address(this), _tokenId); - - if (balance < _minBalance) { - vm.expectRevert(bytes("RequireUtils#requireMinERC1155Balance: BALANCE_TOO_LOW")); - } - requireUtils.requireMinERC1155Balance(address(erc1155), address(this), _tokenId, _minBalance); - } - - function test_requireERC1155Approval(uint256 _tokenId) external { - if (_tokenId % 2 == 0) { - erc1155.setApprovalForAll(address(imp), true); - } - - if (!erc1155.isApprovedForAll(address(this), address(imp))) { - vm.expectRevert(bytes("RequireUtils#requireERC1155Approval: NOT_APPROVED")); - } - requireUtils.requireERC1155Approval(address(erc1155), address(this), address(imp)); - } -} diff --git a/packages/wallet-contracts/foundry_test/trust/Trust.t.sol b/packages/wallet-contracts/foundry_test/trust/Trust.t.sol deleted file mode 100644 index 3563991e8a..0000000000 --- a/packages/wallet-contracts/foundry_test/trust/Trust.t.sol +++ /dev/null @@ -1,867 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/trust/Trust.sol"; -import "contracts/interfaces/IERC1271Wallet.sol"; - -import "foundry_test/base/AdvTest.sol"; - -function min(uint256 a, uint256 b) pure returns (uint256) { - return a < b ? a : b; -} - -contract MockFail { - bytes revertData; - - constructor(bytes memory _revertData) { - revertData = _revertData; - } - - fallback() external payable { - bytes memory rd = revertData; - assembly { - revert(add(rd, 0x20), mload(rd)) - } - } -} - -contract MockContractSigner { - mapping(bytes32 => mapping(bytes => bytes4)) public staticSignatures; - bytes public staticRevertErr; - bool public staticReverts; - - function isValidSignature(bytes32 _hash, bytes calldata _signature) external view returns (bytes4 magicValue) { - if (staticReverts) { - bytes memory rd = staticRevertErr; - assembly { - revert(add(rd, 0x20), mload(rd)) - } - } - - return staticSignatures[_hash][_signature]; - } - - function setSignature(bytes32 _hash, bytes calldata _signature, bytes4 _magicValue) external { - staticSignatures[_hash][_signature] = _magicValue; - } - - function setRevertErr(bool _reverts, bytes calldata _revertErr) external { - staticRevertErr = _revertErr; - staticReverts = _reverts; - } -} - -contract TrustTest is AdvTest { - Trust private trust; - - function test_define_initial_parameters(uint256 _ownerPk, uint256 _beneficiaryPk, uint256 _duration) external { - trust = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - assertEq(trust.owner(), vm.addr(boundPk(_ownerPk))); - assertEq(trust.beneficiary(), vm.addr(boundPk(_beneficiaryPk))); - assertEq(trust.duration(), _duration); - } - - function test_start_locked(uint256 _ownerPk, uint256 _beneficiaryPk, uint256 _duration) external { - trust = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - assertEq(trust.isLocked(), true); - } - - function test_fail_schedule_unlock_too_early( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _schedule - ) external { - vm.assume(_duration != 0); - - _schedule = bound(_schedule, 0, _duration - 1); - trust = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_ownerPk))); - vm.expectRevert( - abi.encodeWithSignature("UnlockTooEarly(uint256,uint256)", block.timestamp + _schedule, _schedule) - ); - trust.setUnlocksAt(block.timestamp + _schedule); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - vm.expectRevert( - abi.encodeWithSignature("UnlockTooEarly(uint256,uint256)", block.timestamp + _schedule, _schedule) - ); - trust.setUnlocksAt(block.timestamp + _schedule); - } - - function test_fail_schedule_in_the_past( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _schedule - ) external { - _schedule = bound(_schedule, 1, block.timestamp); - trust = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_ownerPk))); - vm.expectRevert( - abi.encodeWithSignature("UnlockInThePast(uint256,uint256)", block.timestamp - _schedule, _schedule) - ); - trust.setUnlocksAt(block.timestamp - _schedule); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - vm.expectRevert( - abi.encodeWithSignature("UnlockInThePast(uint256,uint256)", block.timestamp - _schedule, _schedule) - ); - trust.setUnlocksAt(block.timestamp - _schedule); - } - - function test_fail_schedule_non_allowed( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _badActorpk, - uint256 _duration, - uint256 _unlockAt - ) external { - _badActorpk = boundDiff(boundPk(_badActorpk), boundPk(_ownerPk), boundPk(_beneficiaryPk)); - - trust = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_badActorpk))); - vm.expectRevert(abi.encodeWithSignature("NotOwner(address)", vm.addr(boundPk(_badActorpk)))); - trust.setUnlocksAt(_unlockAt); - } - - event SetUnlocksAt(uint256 _unlocksAt); - - function test_schedule_unlock( - uint256 _ownerPk, - uint256 _beneficiaryPk, - bool _asOwner, - uint256 _duration, - uint256 _unlockAt - ) external { - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - - trust = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_asOwner ? _ownerPk : _beneficiaryPk))); - - vm.expectEmit(true, true, true, true, address(trust)); - emit SetUnlocksAt(_unlockAt); - - trust.setUnlocksAt(_unlockAt); - assertEq(trust.unlocksAt(), _unlockAt); - } - - function test_wait_for_unlock( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra - ) external { - vm.assume(block.timestamp != type(uint256).max); - - _duration = bound(_duration, 0, (type(uint256).max - 1) - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max - 1); - _extra = bound(_extra, 0, type(uint256).max - _unlockAt); - - trust = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - trust.setUnlocksAt(_unlockAt); - - if (_duration > 0) { - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - assertEq(trust.isLocked(), true); - } - - vm.warp(_unlockAt + _extra); - assertEq(trust.isLocked(), false); - } - - function gen_and_unlock( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra - ) internal returns (Trust) { - _duration = bound(_duration, 0, (type(uint256).max - 1) - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max - 1); - _extra = bound(_extra, 0, type(uint256).max - _unlockAt); - - trust = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - trust.setUnlocksAt(_unlockAt); - - vm.warp(_unlockAt + _extra); - - return trust; - } - - event SentTransaction(address _to, uint256 _value, bytes _data, bytes _result); - - function test_send_transaction_after_unlock( - uint256 _ownerPk, - uint256 _beneficiaryPk, - bool _ownerSender, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - uint256 _toPk, - uint256 _value, - bytes calldata _data - ) external { - Trust t = gen_and_unlock(_ownerPk, _beneficiaryPk, _duration, _unlockAt, _extra); - - vm.deal(address(this), _value); - payable(address((t))).transfer(_value); - - vm.prank(vm.addr(boundPk(_ownerSender ? _ownerPk : _beneficiaryPk))); - vm.expectCall(vm.addr(boundPk(_toPk)), _value, _data); - - vm.expectEmit(true, true, true, true, address(t)); - emit SentTransaction(vm.addr(boundPk(_toPk)), _value, _data, new bytes(0)); - - t.sendTransaction(payable(vm.addr(boundPk(_toPk))), _value, _data); - - assertEq(vm.addr(boundPk(_toPk)).balance, _value); - } - - function test_send_transaction_pre_unlock_as_owner( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _toPk, - uint256 _value, - bytes calldata _data - ) external { - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - - Trust t = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.deal(address(this), _value); - payable(address((t))).transfer(_value); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - t.setUnlocksAt(_unlockAt); - - vm.prank(vm.addr(boundPk(_ownerPk))); - vm.expectCall(vm.addr(boundPk(_toPk)), _value, _data); - t.sendTransaction(payable(vm.addr(boundPk(_toPk))), _value, _data); - } - - function test_fail_send_transaction_pre_unlock_as_beneficiary( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _toPk, - uint256 _value, - uint256 _elapsed, - bytes calldata _data - ) external { - _duration = bound(_duration, 1, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - _elapsed = bound(_elapsed, 0, (_unlockAt - block.timestamp) - 1); - - vm.assume(vm.addr(boundPk(_ownerPk)) != vm.addr(boundPk(_beneficiaryPk))); - - Trust t = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.deal(address(this), _value); - payable(address((t))).transfer(_value); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - t.setUnlocksAt(_unlockAt); - - vm.warp(block.timestamp + _elapsed); - - assertEq(t.isLocked(), true); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - vm.expectRevert(abi.encodeWithSignature("NotUnlocked(uint256)", _unlockAt)); - t.sendTransaction(payable(vm.addr(boundPk(_toPk))), _value, _data); - } - - function test_fail_send_transaction_non_allowed( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _badActorPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _elapsed, - uint256 _toPk, - uint256 _value, - bytes calldata _data - ) external { - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - _elapsed = bound(_elapsed, 0, type(uint256).max - block.timestamp); - - _badActorPk = boundDiff(boundPk(_badActorPk), boundPk(_ownerPk), boundPk(_beneficiaryPk)); - - Trust t = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.deal(address(this), _value); - payable(address((t))).transfer(_value); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - t.setUnlocksAt(_unlockAt); - - vm.warp(block.timestamp + _elapsed); - - vm.prank(vm.addr(boundPk(_badActorPk))); - vm.expectRevert(abi.encodeWithSignature("NotOwner(address)", vm.addr(boundPk(_badActorPk)))); - t.sendTransaction(payable(vm.addr(boundPk(_toPk))), _value, _data); - } - - function test_fail_bubble_up_fail( - uint256 _ownerPk, - uint256 _beneficiaryPk, - bool _ownerSender, - uint256 _duration, - uint256 _unlockAt, - uint256 _value, - uint256 _extra, - bytes calldata _data, - bytes calldata _revertData - ) external { - address sender = vm.addr(boundPk(_ownerSender ? _ownerPk : _beneficiaryPk)); - - Trust t = gen_and_unlock(_ownerPk, _beneficiaryPk, _duration, _unlockAt, _extra); - - vm.deal(address(this), _value); - payable(address((t))).transfer(_value); - - MockFail mf = new MockFail(_revertData); - - vm.prank(sender); - - vm.expectRevert( - abi.encodeWithSignature( - "FailedTransaction(address,uint256,bytes,bytes)", address(mf), _value, _data, _revertData - ) - ); - - t.sendTransaction(payable(address(mf)), _value, _data); - } - - function test_isValidSignature( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - bool _signedByOwner, - bytes calldata _message - ) external { - uint256 signerPk = boundPk(_signedByOwner ? _ownerPk : _beneficiaryPk); - - Trust t = gen_and_unlock(_ownerPk, _beneficiaryPk, _duration, _unlockAt, _extra); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(t), rawHash, block.chainid)); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(signerPk, finalHash); - - bytes memory sig = abi.encodePacked(r, s, v, uint8(1), _signedByOwner ? bytes1(0x00) : bytes1(0x01)); - - assertEq(t.isValidSignature(rawHash, sig), bytes4(0x1626ba7e)); - assertEq(t.isValidSignature(_message, sig), bytes4(0x20c13b0b)); - } - - function test_isValidSignature_anyNetwork( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - uint64 _useChainId, - bool _signedByOwner, - bytes calldata _message - ) external { - uint256 signerPk = boundPk(_signedByOwner ? _ownerPk : _beneficiaryPk); - - Trust t = gen_and_unlock(_ownerPk, _beneficiaryPk, _duration, _unlockAt, _extra); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(t), rawHash, 0)); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(signerPk, finalHash); - - bytes memory sig = abi.encodePacked(r, s, v, uint8(1), _signedByOwner ? bytes1(0x02) : bytes1(0x03)); - - vm.chainId(_useChainId); - assertEq(t.isValidSignature(rawHash, sig), bytes4(0x1626ba7e)); - assertEq(t.isValidSignature(_message, sig), bytes4(0x20c13b0b)); - } - - function test_fail_isValidSignature_anyNetwork_wrongEncode( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - uint64 _useChainId, - bool _signedByOwner, - bytes calldata _message - ) external { - vm.assume(_useChainId != 0); - - uint256 signerPk = boundPk(_signedByOwner ? _ownerPk : _beneficiaryPk); - - Trust t = gen_and_unlock(_ownerPk, _beneficiaryPk, _duration, _unlockAt, _extra); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(t), rawHash, 0)); - bytes32 realHash = keccak256(abi.encode(address(t), rawHash, _useChainId)); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(signerPk, finalHash); - - bytes memory sig = abi.encodePacked(r, s, v, uint8(1), _signedByOwner ? bytes1(0x00) : bytes1(0x01)); - - vm.chainId(_useChainId); - - bytes memory revertErr = abi.encodeWithSignature( - "InvalidSignature(bytes32,bytes32,address,bytes)", - rawHash, - realHash, - vm.addr(signerPk), - abi.encodePacked(r, s, v, uint8(1)) - ); - - vm.expectRevert(revertErr); - t.isValidSignature(rawHash, sig); - - vm.expectRevert(revertErr); - t.isValidSignature(_message, sig); - } - - function test_fail_isValidSignature_anyNetwork_onlyEncode( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - uint64 _useChainId, - bool _signedByOwner, - bytes calldata _message - ) external { - vm.assume(_useChainId != 0); - - uint256 signerPk = boundPk(_signedByOwner ? _ownerPk : _beneficiaryPk); - - Trust t = gen_and_unlock(_ownerPk, _beneficiaryPk, _duration, _unlockAt, _extra); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(t), rawHash, _useChainId)); - bytes32 realHash = keccak256(abi.encode(address(t), rawHash, 0)); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(signerPk, finalHash); - - bytes memory sig = abi.encodePacked(r, s, v, uint8(1), _signedByOwner ? bytes1(0x02) : bytes1(0x03)); - - vm.chainId(_useChainId); - - bytes memory revertErr = abi.encodeWithSignature( - "InvalidSignature(bytes32,bytes32,address,bytes)", - rawHash, - realHash, - vm.addr(signerPk), - abi.encodePacked(r, s, v, uint8(1)) - ); - - vm.expectRevert(revertErr); - t.isValidSignature(rawHash, sig); - - vm.expectRevert(revertErr); - t.isValidSignature(_message, sig); - } - - function test_isValidSignature_pre_unlock_as_owner( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - bytes calldata _message - ) external { - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - - Trust t = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - t.setUnlocksAt(_unlockAt); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(t), rawHash, block.chainid)); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(boundPk(_ownerPk), finalHash); - - bytes memory sig = abi.encodePacked(r, s, v, uint8(1), bytes1(0x00)); - - assertEq(t.isValidSignature(rawHash, sig), bytes4(0x1626ba7e)); - assertEq(t.isValidSignature(_message, sig), bytes4(0x20c13b0b)); - } - - function test_fail_isValidSignature_emptySignature( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - bytes calldata _message - ) external { - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - - Trust t = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - t.setUnlocksAt(_unlockAt); - - bytes memory sig = new bytes(0); - - vm.expectRevert(abi.encodeWithSignature("EmptySignature()")); - t.isValidSignature(_message, sig); - - vm.expectRevert(abi.encodeWithSignature("EmptySignature()")); - t.isValidSignature(keccak256(_message), sig); - } - - function test_fail_isValidSignature_wrongSignatureFlag( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - uint8 _signerFlag, - bytes calldata _signature, - bytes calldata _message - ) external { - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - _signerFlag = uint8(bound(_signerFlag, 4, type(uint8).max)); - - Trust t = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - t.setUnlocksAt(_unlockAt); - - bytes memory sig = abi.encodePacked(_signature, _signerFlag); - - vm.expectRevert(abi.encodeWithSignature("InvalidSignatureFlag(bytes,bytes1)", sig, bytes1(_signerFlag))); - t.isValidSignature(_message, sig); - - vm.expectRevert(abi.encodeWithSignature("InvalidSignatureFlag(bytes,bytes1)", sig, bytes1(_signerFlag))); - t.isValidSignature(keccak256(_message), sig); - } - - function test_fail_isValidSignature_pre_unlock_as_beneficiary( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _duration, - uint256 _unlockAt, - bytes calldata _message - ) external { - _duration = bound(_duration, 1, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - - vm.assume(boundPk(_ownerPk) != boundPk(_beneficiaryPk)); - Trust t = new Trust(vm.addr(boundPk(_ownerPk)), vm.addr(boundPk(_beneficiaryPk)), _duration); - - vm.prank(vm.addr(boundPk(_beneficiaryPk))); - t.setUnlocksAt(_unlockAt); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(t), rawHash, block.chainid)); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(boundPk(_beneficiaryPk), finalHash); - - bytes memory sig = abi.encodePacked(r, s, v, uint8(1), bytes1(0x01)); - - vm.expectRevert(abi.encodeWithSignature("NotUnlocked(uint256)", _unlockAt)); - t.isValidSignature(rawHash, sig); - - vm.expectRevert(abi.encodeWithSignature("NotUnlocked(uint256)", _unlockAt)); - t.isValidSignature(_message, sig); - } - - struct MemoryStruct1 { - bytes32 rawHash; - bytes32 finalHash; - uint8 v; - bytes32 r; - bytes32 s; - } - - function test_fail_isValidSignature_invalid_signature( - uint256 _ownerPk, - uint256 _beneficiaryPk, - uint256 _badSignerPk, - bool _signsOwner, - uint256 _duration, - uint256 _unlockAt, - bytes calldata _message - ) external { - _ownerPk = boundPk(_ownerPk); - _beneficiaryPk = boundPk(_beneficiaryPk); - _badSignerPk = boundPk(_badSignerPk); - - address expectedSigner = _signsOwner ? vm.addr(_ownerPk) : vm.addr(_beneficiaryPk); - - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - - trust = new Trust(vm.addr(_ownerPk), vm.addr(_beneficiaryPk), _duration); - - vm.prank(vm.addr(_beneficiaryPk)); - trust.setUnlocksAt(_unlockAt); - - if (_signsOwner) { - vm.assume(_ownerPk != _badSignerPk); - } else { - vm.assume(_beneficiaryPk != _badSignerPk); - // Advance clock to unlock - vm.warp(_unlockAt); - } - - MemoryStruct1 memory m; - { - // Stack too deep manual workaround - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(trust), rawHash, block.chainid)); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(_badSignerPk, finalHash); - m.rawHash = rawHash; - m.finalHash = finalHash; - m.v = v; - m.r = r; - m.s = s; - } - - bytes memory sig = abi.encodePacked(m.r, m.s, m.v, uint8(1), _signsOwner ? bytes1(0x00) : bytes1(0x01)); - - bytes memory revertErr = abi.encodeWithSignature( - "InvalidSignature(bytes32,bytes32,address,bytes)", - m.rawHash, - m.finalHash, - expectedSigner, - abi.encodePacked(m.r, m.s, m.v, uint8(1)) - ); - - vm.expectRevert(revertErr); - trust.isValidSignature(m.rawHash, sig); - - vm.expectRevert(revertErr); - trust.isValidSignature(_message, sig); - } - - function test_accept_contract_signature_for_owner( - address _beneficiaryAddress, - uint256 _duration, - uint256 _unlockAt, - uint256 _elapsed, - bytes calldata _signature, - bytes calldata _message - ) external { - MockContractSigner mcs = new MockContractSigner(); - - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - _elapsed = bound(_elapsed, 0, type(uint256).max - block.timestamp); - - trust = new Trust(address(mcs), _beneficiaryAddress, _duration); - - vm.prank(_beneficiaryAddress); - trust.setUnlocksAt(_unlockAt); - - vm.warp(block.timestamp + _elapsed); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(trust), rawHash, block.chainid)); - mcs.setSignature(finalHash, _signature, bytes4(0x1626ba7e)); - bytes memory sig = abi.encodePacked(_signature, uint8(3), bytes1(0x00)); - - assertEq(trust.isValidSignature(rawHash, sig), bytes4(0x1626ba7e)); - assertEq(trust.isValidSignature(_message, sig), bytes4(0x20c13b0b)); - } - - function test_fail_bad_contract_signature_for_owner( - address _beneficiaryAddress, - uint256 _duration, - uint256 _unlockAt, - uint256 _elapsed, - bytes4 _badReturnBytes, - bytes calldata _badSignature, - bytes calldata _message - ) external { - vm.assume(_badReturnBytes != bytes4(0x1626ba7e)); - - MockContractSigner mcs = new MockContractSigner(); - - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - _elapsed = bound(_elapsed, 0, type(uint256).max - block.timestamp); - - trust = new Trust(address(mcs), _beneficiaryAddress, _duration); - - vm.prank(_beneficiaryAddress); - trust.setUnlocksAt(_unlockAt); - - vm.warp(block.timestamp + _elapsed); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(trust), rawHash, block.chainid)); - mcs.setSignature(finalHash, _badSignature, _badReturnBytes); - bytes memory sig = abi.encodePacked(_badSignature, uint8(3), bytes1(0x00)); - - bytes memory revertErr = abi.encodeWithSignature( - "InvalidSignature(bytes32,bytes32,address,bytes)", - rawHash, - finalHash, - address(mcs), - abi.encodePacked(_badSignature, uint8(3)) - ); - - vm.expectRevert(revertErr); - trust.isValidSignature(rawHash, sig); - - vm.expectRevert(revertErr); - trust.isValidSignature(_message, sig); - } - - function test_accept_contract_signature_for_beneficiary( - address _ownerAddress, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - bytes calldata _signature, - bytes calldata _message - ) external { - MockContractSigner mcs = new MockContractSigner(); - - _duration = bound(_duration, 0, (type(uint256).max - 1) - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max - 1); - _extra = bound(_extra, 0, type(uint256).max - _unlockAt); - - trust = new Trust(_ownerAddress, address(mcs), _duration); - - vm.prank(address(mcs)); - trust.setUnlocksAt(_unlockAt); - - vm.warp(_unlockAt + _extra); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(trust), rawHash, block.chainid)); - mcs.setSignature(finalHash, _signature, bytes4(0x1626ba7e)); - bytes memory sig = abi.encodePacked(_signature, uint8(3), bytes1(0x01)); - - assertEq(trust.isValidSignature(rawHash, sig), bytes4(0x1626ba7e)); - assertEq(trust.isValidSignature(_message, sig), bytes4(0x20c13b0b)); - } - - function test_fail_bad_contract_signature_for_beneficiary( - address _ownerAddress, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - bytes4 _badReturnBytes, - bytes calldata _badSignature, - bytes calldata _message - ) external { - vm.assume(_badReturnBytes != bytes4(0x1626ba7e)); - - MockContractSigner mcs = new MockContractSigner(); - - _duration = bound(_duration, 0, (type(uint256).max - 1) - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max - 1); - _extra = bound(_extra, 0, type(uint256).max - _unlockAt); - - trust = new Trust(_ownerAddress, address(mcs), _duration); - - vm.prank(address(mcs)); - trust.setUnlocksAt(_unlockAt); - - vm.warp(_unlockAt + _extra); - - bytes32 rawHash = keccak256(_message); - bytes32 finalHash = keccak256(abi.encode(address(trust), rawHash, block.chainid)); - mcs.setSignature(finalHash, _badSignature, _badReturnBytes); - bytes memory sig = abi.encodePacked(_badSignature, uint8(3), bytes1(0x01)); - - bytes memory revertErr = abi.encodeWithSignature( - "InvalidSignature(bytes32,bytes32,address,bytes)", - rawHash, - finalHash, - address(mcs), - abi.encodePacked(_badSignature, uint8(3)) - ); - - vm.expectRevert(revertErr); - trust.isValidSignature(rawHash, sig); - - vm.expectRevert(revertErr); - trust.isValidSignature(_message, sig); - } - - function test_fail_revert_contract_signer_owner( - address _beneficiaryAddress, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - bytes calldata _revertErr, - bytes calldata _signature, - bytes calldata _message - ) external { - MockContractSigner mcs = new MockContractSigner(); - - _duration = bound(_duration, 0, type(uint256).max - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max); - _extra = bound(_extra, 0, type(uint256).max - _unlockAt); - - trust = new Trust(address(mcs), _beneficiaryAddress, _duration); - - vm.prank(_beneficiaryAddress); - trust.setUnlocksAt(_unlockAt); - - vm.warp(block.timestamp + _extra); - - bytes32 rawHash = keccak256(_message); - mcs.setRevertErr(true, _revertErr); - bytes memory sig = abi.encodePacked(_signature, uint8(3), bytes1(0x00)); - - vm.expectRevert(_revertErr); - trust.isValidSignature(rawHash, sig); - - vm.expectRevert(_revertErr); - trust.isValidSignature(_message, sig); - } - - function test_fail_revert_contract_signer_beneficiary( - address _ownerAddress, - uint256 _duration, - uint256 _unlockAt, - uint256 _extra, - bytes calldata _revertErr, - bytes calldata _signature, - bytes calldata _message - ) external { - MockContractSigner mcs = new MockContractSigner(); - - _duration = bound(_duration, 0, (type(uint256).max - 1) - block.timestamp); - _unlockAt = bound(_unlockAt, block.timestamp + _duration, type(uint256).max - 1); - _extra = bound(_extra, 0, type(uint256).max - _unlockAt); - - trust = new Trust(_ownerAddress, address(mcs), _duration); - - vm.prank(address(mcs)); - trust.setUnlocksAt(_unlockAt); - - vm.warp(_unlockAt + _extra); - - bytes32 rawHash = keccak256(_message); - mcs.setRevertErr(true, _revertErr); - bytes memory sig = abi.encodePacked(_signature, uint8(3), bytes1(0x01)); - - vm.expectRevert(_revertErr); - trust.isValidSignature(rawHash, sig); - - vm.expectRevert(_revertErr); - trust.isValidSignature(_message, sig); - } -} diff --git a/packages/wallet-contracts/foundry_test/trust/TrustFactory.t.sol b/packages/wallet-contracts/foundry_test/trust/TrustFactory.t.sol deleted file mode 100644 index 87e08cec25..0000000000 --- a/packages/wallet-contracts/foundry_test/trust/TrustFactory.t.sol +++ /dev/null @@ -1,53 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/trust/TrustFactory.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract TrustFactoryTest is AdvTest { - TrustFactory private factory; - - function setUp() external { - factory = new TrustFactory(); - } - - function test_create_trust(address _owner, address _beneficiary, uint256 _duration) external { - Trust trust = factory.deploy(_owner, _beneficiary, _duration); - address trustAddress = address(trust); - - assertEq(trust.owner(), _owner); - assertEq(trust.beneficiary(), _beneficiary); - assertEq(trust.duration(), _duration); - - uint256 codeSize; - assembly { codeSize := extcodesize(trustAddress) } - assertGt(codeSize, 0); - } - - function test_predict_address(address _owner, address _beneficiary, uint256 _duration) external { - address expected = factory.addressOf(_owner, _beneficiary, _duration); - address actual = address(factory.deploy(_owner, _beneficiary, _duration)); - assertEq(actual, expected); - } - - function test_fail_deploy_twice(address _owner, address _beneficiary, uint256 _duration) external { - factory.deploy(_owner, _beneficiary, _duration); - vm.expectRevert(); - factory.deploy(_owner, _beneficiary, _duration); - } - - function test_fail_deploy_low_gas(address _owner, address _beneficiary, uint256 _duration, uint256 _gas) external { - _gas = bound(_gas, 21000, block.gaslimit); - try factory.deploy{gas: _gas}(_owner, _beneficiary, _duration) returns (Trust trust) { - address trustAddress = address(trust); - // The address should have code, and never be the zero address - assertNotEq(trustAddress, address(0)); - uint256 codeSize; - assembly { codeSize := extcodesize(trustAddress) } - assertGt(codeSize, 0); - } catch { - // Ignore errors from low gas - } - } -} diff --git a/packages/wallet-contracts/foundry_test/utils/LibAddress.t.sol b/packages/wallet-contracts/foundry_test/utils/LibAddress.t.sol deleted file mode 100644 index 525d6166bc..0000000000 --- a/packages/wallet-contracts/foundry_test/utils/LibAddress.t.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/utils/LibAddress.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract LibAddressTest is AdvTest { - function test_isContract(address _addr, bytes calldata _code) external { - boundNoSys(_addr); - - vm.etch(_addr, _code); - assertEq(LibAddress.isContract(_addr), _code.length > 0); - } -} diff --git a/packages/wallet-contracts/foundry_test/utils/LibBytes.t.sol b/packages/wallet-contracts/foundry_test/utils/LibBytes.t.sol deleted file mode 100644 index bfb5debae7..0000000000 --- a/packages/wallet-contracts/foundry_test/utils/LibBytes.t.sol +++ /dev/null @@ -1,100 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/utils/LibBytes.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract LibBytesImp { - using LibBytes for bytes; - - function readBytes32(bytes calldata _data, uint256 _index) external pure returns (bytes32) { - return _data.readBytes32(_index); - } - - function readUint8(bytes calldata _data, uint256 _index) external pure returns (uint8) { - return _data.readUint8(_index); - } - - function readFirstUint16(bytes calldata _data) external pure returns (uint16) { - return _data.readFirstUint16(); - } - - function readUint32(bytes calldata _data, uint256 _index) external pure returns (uint32) { - return _data.readUint32(_index); - } -} - -contract LibBytesTest is AdvTest { - LibBytesImp private lib; - - function setUp() external { - lib = new LibBytesImp(); - } - - function test_readBytes32(bytes calldata _prefix, bytes32 _data, bytes calldata _sufix) external { - bytes memory combined = abi.encodePacked(_prefix, _data, _sufix); - bytes32 actual = lib.readBytes32(combined, _prefix.length); - assertEq(actual, _data); - } - - function test_readBytes32_OutOfBounds(bytes calldata _data, uint256 _index) external view { - lib.readBytes32(_data, _index); - } - - function test_readBytes32_Fuzz_AbiDecode(bytes calldata _data, uint256 _index) external { - _index = bound(_index, 0, _data.length > 32 ? _data.length - 32 : 0); - bytes32 expected = abi.decode(abi.encodePacked(_data[_index:], bytes32(0)), (bytes32)); - bytes32 actual = lib.readBytes32(_data, _index); - assertEq(expected, actual); - } - - function test_readUint8(bytes calldata _prefix, uint8 _data, bytes calldata _sufix) external { - bytes memory combined = abi.encodePacked(_prefix, _data, _sufix); - uint8 expected = lib.readUint8(combined, _prefix.length); - assertEq(expected, _data); - } - - function test_readUint8_OutOfBounds(bytes calldata _data, uint256 _index) external view { - lib.readUint8(_data, _index); - } - - function test_readUint8_Fuzz_ReadByte(bytes calldata _data, uint256 _index) external { - vm.assume(_data.length >= 1); - - _index = bound(_index, 0, _data.length - 1); - uint8 expected = uint8(uint256(bytes32(_data[_index])) >> 248); - uint8 actual = lib.readUint8(_data, _index); - - assertEq(expected, actual); - } - - function test_readFirstUint16(uint16 _data, bytes calldata _sufix) external { - bytes memory combined = abi.encodePacked(_data, _sufix); - uint16 expected = lib.readFirstUint16(combined); - assertEq(expected, _data); - } - - function test_readFirstUint16_OutOfBounds(uint8 _data) external { - bytes memory encoded = abi.encodePacked(_data); - - uint16 actual = lib.readFirstUint16(bytes("")); - assertEq(actual, uint16(0)); - - actual = lib.readFirstUint16(encoded); - assertEq(actual, uint256(_data) << 8); - } - - function test_readFirstUint16_Fuzz_AbiDecode(bytes calldata _data) external { - uint256 expected = abi.decode(abi.encodePacked(_data, bytes32(0)), (uint256)); - uint16 actual = lib.readFirstUint16(_data); - - assertEq(expected >> 240, actual); - } - - function test_readUint32(bytes calldata _prefix, uint32 _data, bytes calldata _sufix) external { - bytes memory combined = abi.encodePacked(_prefix, _data, _sufix); - uint32 expected = lib.readUint32(combined, _prefix.length); - assertEq(expected, _data); - } -} diff --git a/packages/wallet-contracts/foundry_test/utils/LibBytesPointer.t.sol b/packages/wallet-contracts/foundry_test/utils/LibBytesPointer.t.sol deleted file mode 100644 index c8459d1875..0000000000 --- a/packages/wallet-contracts/foundry_test/utils/LibBytesPointer.t.sol +++ /dev/null @@ -1,152 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/utils/LibBytes.sol"; -import "contracts/utils/LibBytesPointer.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract LibBytesPointerImp { - using LibBytesPointer for bytes; - - function readFirstUint16(bytes calldata _data) external pure returns (uint16, uint256) { - return _data.readFirstUint16(); - } - - function readUint8(bytes calldata _data, uint256 _index) external pure returns (uint8, uint256) { - return _data.readUint8(_index); - } - - function readUint8Address(bytes calldata _data, uint256 _index) external pure returns (uint8, address, uint256) { - return _data.readUint8Address(_index); - } - - function readUint16(bytes calldata _data, uint256 _index) external pure returns (uint16, uint256) { - return _data.readUint16(_index); - } - - function readUint24(bytes calldata _data, uint256 _index) external pure returns (uint24, uint256) { - return _data.readUint24(_index); - } - - function readUint64(bytes calldata _data, uint256 _index) external pure returns (uint64, uint256) { - return _data.readUint64(_index); - } - - function readBytes32(bytes calldata _data, uint256 _index) external pure returns (bytes32, uint256) { - return _data.readBytes32(_index); - } -} - -contract LibBytesPointerTest is AdvTest { - using LibBytes for bytes; - - LibBytesPointerImp private lib; - - function setUp() public { - lib = new LibBytesPointerImp(); - } - - function test_readFirstUint16_Fuzz_LibBytes(bytes calldata _data) external { - uint16 expected = _data.readFirstUint16(); - (uint16 actual, uint256 index) = lib.readFirstUint16(_data); - assertEq(actual, expected); - assertEq(index, 2); - } - - function test_readUint8_Fuzz_LibBytes(bytes calldata _data, uint256 _pointer) external { - uint8 expected = _data.readUint8(_pointer); - (uint8 actual, uint256 newPointer) = lib.readUint8(_data, _pointer); - assertEq(actual, expected); - unchecked { - assertEq(newPointer, _pointer + 1); - } - } - - function test_readUint8Address(bytes calldata _prefix, uint8 _data1, address _data2, bytes calldata _sufix) - external - { - bytes memory combined = abi.encodePacked(_prefix, _data1, _data2, _sufix); - (uint8 actual1, address actual2, uint256 newPointer) = lib.readUint8Address(combined, _prefix.length); - assertEq(actual1, _data1); - assertEq(actual2, _data2); - assertEq(newPointer, _prefix.length + 21); - } - - function test_readUint8Address_OutOfBounds(bytes calldata _data, uint256 _pointer) external { - (,, uint256 newPointer) = lib.readUint8Address(_data, _pointer); - unchecked { - assertEq(newPointer, _pointer + 21); - } - } - - function test_readUint16_Fuzz_ReadFirstUint16(bytes calldata _data, uint256 _pointer) external { - vm.assume(_data.length >= 16); - - _pointer = bound(_pointer, 0, _data.length - 16); - (uint16 expected,) = lib.readFirstUint16(_data[_pointer:]); - (uint16 actual, uint256 newPointer) = lib.readUint16(_data, _pointer); - assertEq(actual, expected); - unchecked { - assertEq(newPointer, _pointer + 2); - } - } - - function test_readUint16_OutOfBounds(bytes calldata _data, uint256 _pointer) external { - (, uint256 newPointer) = lib.readUint16(_data, _pointer); - unchecked { - assertEq(newPointer, _pointer + 2); - } - } - - function test_readUint24(bytes calldata _prefix, uint24 _data, bytes calldata _sufix) external { - bytes memory combined = abi.encodePacked(_prefix, _data, _sufix); - (uint256 actual, uint256 newPointer) = lib.readUint24(combined, _prefix.length); - assertEq(actual, _data); - assertEq(newPointer, _prefix.length + 3); - } - - function test_readUint24_OutOfBounds(bytes calldata _data, uint256 _pointer) external { - (, uint256 newPointer) = lib.readUint24(_data, _pointer); - unchecked { - assertEq(newPointer, _pointer + 3); - } - } - - function test_readUint64(bytes calldata _prefix, uint64 _data, bytes calldata _sufix) external { - bytes memory combined = abi.encodePacked(_prefix, _data, _sufix); - (uint64 actual, uint256 newPointer) = lib.readUint64(combined, _prefix.length); - assertEq(actual, _data); - assertEq(newPointer, _prefix.length + 8); - } - - function test_readUint64_OutOfBounds(bytes calldata _data, uint256 _pointer) external { - (, uint256 newPointer) = lib.readUint64(_data, _pointer); - unchecked { - assertEq(newPointer, _pointer + 8); - } - } - - function test_readBytes32(bytes calldata _prefix, bytes32 _data, bytes calldata _sufix) external { - bytes memory combined = abi.encodePacked(_prefix, _data, _sufix); - (bytes32 actual, uint256 newPointer) = lib.readBytes32(combined, _prefix.length); - assertEq(actual, _data); - assertEq(newPointer, _prefix.length + 32); - } - - function test_readBytes32_OutOfBounds(bytes calldata _data, uint256 _pointer) external { - (, uint256 newPointer) = lib.readBytes32(_data, _pointer); - unchecked { - assertEq(newPointer, _pointer + 32); - } - } - - function test_readBytes32_Fuzz_LibBytes(bytes calldata _data, uint256 _index) external { - bytes32 expected = _data.readBytes32(_index); - (bytes32 actual, uint256 index) = lib.readBytes32(_data, _index); - assertEq(actual, expected); - unchecked { - assertEq(index, _index + 32); - } - } -} diff --git a/packages/wallet-contracts/foundry_test/utils/LibOptim.t.sol b/packages/wallet-contracts/foundry_test/utils/LibOptim.t.sol deleted file mode 100644 index ef80dbf90d..0000000000 --- a/packages/wallet-contracts/foundry_test/utils/LibOptim.t.sol +++ /dev/null @@ -1,63 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/utils/LibOptim.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract WillReturn { - bytes private r; - - constructor(bytes memory _r) { - r = _r; - } - - fallback() external { - bytes memory res = r; - assembly { - return(add(res, 32), mload(res)) - } - } -} - -contract LibOptimTest is AdvTest { - function test_fkeccak256_Bytes32_Bytes32_Fuzz(bytes32 _a, bytes32 _b) external { - bytes32 expected = keccak256(abi.encodePacked(_a, _b)); - bytes32 actual = LibOptim.fkeccak256(_a, _b); - assertEq(expected, actual); - } - - function test_returnData_Fuzz(bytes memory _data) external { - WillReturn r = new WillReturn(_data); - - (bool suc, bytes memory res1) = address(r).call(bytes("")); - assertEq(suc, true); - assertEq(res1, _data); - - uint256 pointer1; - assembly { pointer1 := mload(0x40) } - assertTrue(pointer1 != 0); - - bytes memory optres = LibOptim.returnData(); - assertEq(res1, optres); - - uint256 pointer2; - assembly { pointer2 := mload(0x40) } - assertEq(pointer2 - pointer1, res1.length + 32); - - uint256 positionArr; - assembly { positionArr := optres } - assertEq(positionArr, pointer1); - } - - function test_call(address _to, uint256 _val, bytes calldata _data) external { - _to = boundNoSys(_to); - _to = boundDiff(_to, address(0x004e59b44847b379578588920ca78fbf26c0b4956c)); - - vm.expectCall(_to, _data); - vm.deal(_to, 0); - vm.deal(address(this), _val); - LibOptim.call(_to, _val, gasleft(), _data); - assertEq(_to.balance, _val); - } -} diff --git a/packages/wallet-contracts/foundry_test/utils/SignatureValidator.t.sol b/packages/wallet-contracts/foundry_test/utils/SignatureValidator.t.sol deleted file mode 100644 index 6ce92787e1..0000000000 --- a/packages/wallet-contracts/foundry_test/utils/SignatureValidator.t.sol +++ /dev/null @@ -1,199 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity 0.8.18; - -import "contracts/utils/SignatureValidator.sol"; - -import "foundry_test/base/AdvTest.sol"; - -contract SignatureValidatorImp { - function recoverSigner(bytes32 _hash, bytes calldata _signature) external pure returns (address) { - return SignatureValidator.recoverSigner(_hash, _signature); - } - - function isValidSignature(bytes32 _hash, address _signer, bytes calldata _signature) external view returns (bool) { - return SignatureValidator.isValidSignature(_hash, _signer, _signature); - } -} - -contract SignatureValidatorTest is AdvTest { - SignatureValidatorImp private lib; - - uint8 private constant SIG_TYPE_EIP712 = 1; - uint8 private constant SIG_TYPE_ETH_SIGN = 2; - uint8 private constant SIG_TYPE_WALLET_BYTES32 = 3; - - function setUp() public { - lib = new SignatureValidatorImp(); - } - - function test_recoverSigner_EIP712(uint256 _pk, bytes32 _hash) external { - _pk = boundPk(_pk); - - address signer = vm.addr(_pk); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(_pk, _hash); - - address recovered = lib.recoverSigner(_hash, abi.encodePacked(r, s, v, SIG_TYPE_EIP712)); - assertEq(signer, recovered); - } - - function test_recoverSigner_ETHSIGN(uint256 _pk, bytes32 _hash) external { - _pk = boundPk(_pk); - - address signer = vm.addr(_pk); - (uint8 v, bytes32 r, bytes32 s) = - vm.sign(_pk, keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash))); - - address recovered = lib.recoverSigner(_hash, abi.encodePacked(r, s, v, SIG_TYPE_ETH_SIGN)); - assertEq(signer, recovered); - } - - function test_recoverSigner_fail_InvalidSValue(bytes32 _hash, bytes32 _r, uint256 _s, uint8 _v, uint8 _type) - external - { - _s = bound(_s, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A1, type(uint256).max); - - bytes memory signature = abi.encodePacked(_r, _s, _v, _type); - vm.expectRevert(abi.encodeWithSignature("InvalidSValue(bytes,bytes32)", signature, _s)); - lib.recoverSigner(_hash, signature); - } - - function test_recoverSigner_fail_InvalidVValue(bytes32 _hash, bytes32 _r, uint256 _s, uint8 _v, uint8 _type) - external - { - _v = uint8(boundDiff(_v, 27, 28)); - - _s = bound(_s, 0, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0); - bytes memory signature = abi.encodePacked(_r, _s, _v, _type); - vm.expectRevert(abi.encodeWithSignature("InvalidVValue(bytes,uint256)", signature, _v)); - lib.recoverSigner(_hash, signature); - } - - function test_recoverSigner_fail_InvalidLength(bytes32 _hash, bytes calldata _signature) external { - vm.assume(_signature.length != 66); - - vm.expectRevert(abi.encodeWithSignature("InvalidSignatureLength(bytes)", _signature)); - lib.recoverSigner(_hash, _signature); - } - - function test_recoverSigner_fail_UnsupportedSignatureType( - bytes32 _hash, - bytes32 _r, - uint256 _s, - uint8 _v, - uint8 _type - ) external { - _type = uint8(boundDiff(_type, SIG_TYPE_EIP712, SIG_TYPE_ETH_SIGN)); - - _s = bound(_s, 0, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0); - _v = uint8(bound(_v, 27, 28)); - - bytes memory signature = abi.encodePacked(_r, _s, _v, _type); - vm.expectRevert(abi.encodeWithSignature("UnsupportedSignatureType(bytes,uint256,bool)", signature, _type, true)); - lib.recoverSigner(_hash, signature); - } - - function test_recoverSigner_fail_RecoverAddressZero(bytes32 _hash, bytes32 _r, uint256 _s, uint8 _v, uint8 _type) - external - { - _s = bound(_s, 0, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0); - _v = uint8(bound(_v, 27, 28)); - _type = uint8(bound(_type, SIG_TYPE_EIP712, SIG_TYPE_ETH_SIGN)); - - bytes memory signature = abi.encodePacked(_r, _s, _v, _type); - - try lib.recoverSigner(_hash, signature) returns (address res) { - assertTrue(res != address(0)); - } catch {} - } - - function test_isValidSignature_EIP712(uint256 _pk, bytes32 _hash) external { - _pk = boundPk(_pk); - - address signer = vm.addr(_pk); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(_pk, _hash); - - assertTrue(lib.isValidSignature(_hash, signer, abi.encodePacked(r, s, v, SIG_TYPE_EIP712))); - } - - function test_isValidSignature_ETHSIGN(uint256 _pk, bytes32 _hash) external { - _pk = boundPk(_pk); - - address signer = vm.addr(_pk); - (uint8 v, bytes32 r, bytes32 s) = - vm.sign(_pk, keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash))); - - assertTrue(lib.isValidSignature(_hash, signer, abi.encodePacked(r, s, v, SIG_TYPE_ETH_SIGN))); - } - - function test_isValidSignature_WALLET_BYTES32(address _wallet, bytes32 _hash, bytes calldata _signature) external { - _wallet = boundNoSys(_wallet); - - bytes memory encodedSignature = abi.encodePacked(_signature, SIG_TYPE_WALLET_BYTES32); - - bytes memory expectCall = abi.encodeWithSignature("isValidSignature(bytes32,bytes)", _hash, _signature); - bytes memory expectResult = abi.encode(bytes4(keccak256("isValidSignature(bytes32,bytes)"))); - - vm.mockCall(_wallet, 0, expectCall, expectResult); - assertTrue(lib.isValidSignature(_hash, _wallet, encodedSignature)); - } - - function test_isValidSignature_Fail_WALLET_BYTES32_BadBytes4( - address _wallet, - bytes32 _hash, - bytes calldata _signature, - bytes4 _return - ) external { - vm.assume(bytes4(keccak256("isValidSignature(bytes32,bytes)")) != _return); - - _wallet = boundNoSys(_wallet); - - bytes memory encodedSignature = abi.encodePacked(_signature, SIG_TYPE_WALLET_BYTES32); - bytes memory expectCall = abi.encodeWithSignature("isValidSignature(bytes32,bytes)", _hash, _signature); - - vm.mockCall(_wallet, 0, expectCall, abi.encode(_return)); - assertFalse(lib.isValidSignature(_hash, _wallet, encodedSignature)); - } - - function test_isValidSignature_Fail_WALLET_BYTES32_BadReturn( - address _wallet, - bytes32 _hash, - bytes calldata _signature, - bytes calldata _return - ) external { - bytes memory goodReturn = abi.encode(bytes4(keccak256("isValidSignature(bytes32,bytes)"))); - vm.assume(keccak256(goodReturn) != keccak256(_return)); - - bytes memory encodedSignature = abi.encodePacked(_signature, SIG_TYPE_WALLET_BYTES32); - bytes memory expectCall = abi.encodeWithSignature("isValidSignature(bytes32,bytes)", _hash, _signature); - - bool retunedNotValid; - vm.mockCall(_wallet, 0, expectCall, abi.encode(_return)); - try lib.isValidSignature(_hash, _wallet, encodedSignature) returns (bool isValid) { - retunedNotValid = !isValid; - } catch { - retunedNotValid = true; - } - - assertTrue(retunedNotValid); - } - - function test_isValidSignature_Fail_EmptySignature(bytes32 _hash, address _signer) external { - vm.expectRevert(abi.encodeWithSignature("EmptySignature()")); - lib.isValidSignature(_hash, _signer, bytes("")); - } - - function test_isValidSignature_Fail_UnsupportedSignatureType( - bytes32 _hash, - address _signer, - bytes calldata _signature, - uint8 _type - ) external { - _type = uint8(boundDiff(_type, SIG_TYPE_EIP712, SIG_TYPE_ETH_SIGN, SIG_TYPE_WALLET_BYTES32)); - - bytes memory encodedSignature = abi.encodePacked(_signature, _type); - vm.expectRevert( - abi.encodeWithSignature("UnsupportedSignatureType(bytes,uint256,bool)", encodedSignature, _type, false) - ); - lib.isValidSignature(_hash, _signer, encodedSignature); - } -} diff --git a/packages/wallet-contracts/funding.json b/packages/wallet-contracts/funding.json deleted file mode 100644 index 47313a81ae..0000000000 --- a/packages/wallet-contracts/funding.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "opRetro": { - "projectId": "0x62408999652f3bfa1be746d256bf5a4eb4719b993d40f07d2d60aaebee015018" - } -} diff --git a/packages/wallet-contracts/hardhat.config.ts b/packages/wallet-contracts/hardhat.config.ts deleted file mode 100644 index 15254e7723..0000000000 --- a/packages/wallet-contracts/hardhat.config.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { HardhatUserConfig, task } from 'hardhat/config' -import { networkConfig } from './utils/config-loader' - -import '@nomicfoundation/hardhat-ethers' -import '@nomicfoundation/hardhat-verify' -import '@nomiclabs/hardhat-truffle5' -import '@nomiclabs/hardhat-web3' -import '@tenderly/hardhat-tenderly' - -import 'hardhat-gas-reporter' -import 'solidity-coverage' - -import './utils/benchmarker' - -const ganacheNetwork = { - url: 'http://127.0.0.1:8545', - blockGasLimit: 6000000000 -} - -const config: HardhatUserConfig = { - solidity: { - version: '0.8.18', - settings: { - optimizer: { - enabled: true, - runs: 500000 - } - } - }, - networks: { - mainnet: networkConfig('mainnet'), - ropsten: networkConfig('ropsten'), - kovan: networkConfig('kovan'), - goerli: networkConfig('goerli'), - polygon: networkConfig('polygon'), - polygonZkevm: networkConfig('polygon-zkevm'), - mumbai: networkConfig('mumbai'), - arbitrum: networkConfig('arbitrum'), - arbitrumGoerli: networkConfig('arbitrum-goerli'), - arbitrumNova: networkConfig('arbitrum-nova'), - optimism: networkConfig('optimism'), - bnb: networkConfig('bnb'), - bnbTestnet: networkConfig('bnb-testnet'), - gnosis: networkConfig('gnosis'), - avalanche: networkConfig('avalanche'), - avalancheFuji: networkConfig('avalanche-fuji'), - ganache: ganacheNetwork, - hardhat: { - blockGasLimit: 60000000 - } - }, - etherscan: { - // Your API key for Etherscan - // Obtain one at https://etherscan.io/ - apiKey: networkConfig('mainnet').etherscan - }, - mocha: { - timeout: process.env.COVERAGE ? 15 * 60 * 1000 : 30 * 1000 - }, - gasReporter: { - enabled: !!process.env.REPORT_GAS === true, - currency: 'USD', - gasPrice: 21, - showTimeSpent: true - }, - tenderly: { - project: 'horizon/sequence-dev-1', - username: 'Agusx1211-horizon' - } -} - -export default config diff --git a/packages/wallet-contracts/lib/forge-std/.github/workflows/ci.yml b/packages/wallet-contracts/lib/forge-std/.github/workflows/ci.yml deleted file mode 100644 index 96b23365ec..0000000000 --- a/packages/wallet-contracts/lib/forge-std/.github/workflows/ci.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: CI - -on: - workflow_dispatch: - pull_request: - push: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install Foundry - uses: onbjerg/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - # Backwards compatibility checks. - - name: Check compatibility with 0.8.0 - if: always() - run: forge build --skip test --use solc:0.8.0 - - - name: Check compatibility with 0.7.6 - if: always() - run: forge build --skip test --use solc:0.7.6 - - - name: Check compatibility with 0.7.0 - if: always() - run: forge build --skip test --use solc:0.7.0 - - - name: Check compatibility with 0.6.12 - if: always() - run: forge build --skip test --use solc:0.6.12 - - - name: Check compatibility with 0.6.2 - if: always() - run: forge build --skip test --use solc:0.6.2 - - # via-ir compilation time checks. - - name: Measure compilation time of Test with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationTest.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of TestBase with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationTestBase.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of Script with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationScript.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of ScriptBase with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationScriptBase.sol --use solc:0.8.17 --via-ir - - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install Foundry - uses: onbjerg/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - - name: Run tests - run: forge test -vvv - - fmt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install Foundry - uses: onbjerg/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - - name: Check formatting - run: forge fmt --check diff --git a/packages/wallet-contracts/lib/forge-std/.github/workflows/sync.yml b/packages/wallet-contracts/lib/forge-std/.github/workflows/sync.yml deleted file mode 100644 index 5a9e9d5913..0000000000 --- a/packages/wallet-contracts/lib/forge-std/.github/workflows/sync.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Sync Release Branch - -on: - release: - types: - - created - -jobs: - sync-release-branch: - runs-on: ubuntu-latest - if: startsWith(github.event.release.tag_name, 'v1') - steps: - - name: Check out the repo - uses: actions/checkout@v3 - with: - fetch-depth: 0 - ref: v1 - - - name: Configure Git - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - - name: Sync Release Branch - run: | - git fetch --tags - git checkout v1 - git reset --hard ${GITHUB_REF} - git push --force diff --git a/packages/wallet-contracts/lib/forge-std/.gitmodules b/packages/wallet-contracts/lib/forge-std/.gitmodules deleted file mode 100644 index e12471968b..0000000000 --- a/packages/wallet-contracts/lib/forge-std/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "lib/ds-test"] - path = lib/ds-test - url = https://github.com/dapphub/ds-test diff --git a/packages/wallet-contracts/lib/forge-std/LICENSE-APACHE b/packages/wallet-contracts/lib/forge-std/LICENSE-APACHE deleted file mode 100644 index cf01a499fb..0000000000 --- a/packages/wallet-contracts/lib/forge-std/LICENSE-APACHE +++ /dev/null @@ -1,203 +0,0 @@ -Copyright Contributors to Forge Standard Library - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/packages/wallet-contracts/lib/forge-std/LICENSE-MIT b/packages/wallet-contracts/lib/forge-std/LICENSE-MIT deleted file mode 100644 index 28f98304ac..0000000000 --- a/packages/wallet-contracts/lib/forge-std/LICENSE-MIT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright Contributors to Forge Standard Library - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE O THE USE OR OTHER -DEALINGS IN THE SOFTWARE.R diff --git a/packages/wallet-contracts/lib/forge-std/README.md b/packages/wallet-contracts/lib/forge-std/README.md deleted file mode 100644 index 8494a7dd5e..0000000000 --- a/packages/wallet-contracts/lib/forge-std/README.md +++ /dev/null @@ -1,250 +0,0 @@ -# Forge Standard Library • [![CI status](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml/badge.svg)](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml) - -Forge Standard Library is a collection of helpful contracts and libraries for use with [Forge and Foundry](https://github.com/foundry-rs/foundry). It leverages Forge's cheatcodes to make writing tests easier and faster, while improving the UX of cheatcodes. - -**Learn how to use Forge-Std with the [📖 Foundry Book (Forge-Std Guide)](https://book.getfoundry.sh/forge/forge-std.html).** - -## Install - -```bash -forge install foundry-rs/forge-std -``` - -## Contracts -### stdError - -This is a helper contract for errors and reverts. In Forge, this contract is particularly helpful for the `expectRevert` cheatcode, as it provides all compiler builtin errors. - -See the contract itself for all error codes. - -#### Example usage - -```solidity - -import "forge-std/Test.sol"; - -contract TestContract is Test { - ErrorsTest test; - - function setUp() public { - test = new ErrorsTest(); - } - - function testExpectArithmetic() public { - vm.expectRevert(stdError.arithmeticError); - test.arithmeticError(10); - } -} - -contract ErrorsTest { - function arithmeticError(uint256 a) public { - uint256 a = a - 100; - } -} -``` - -### stdStorage - -This is a rather large contract due to all of the overloading to make the UX decent. Primarily, it is a wrapper around the `record` and `accesses` cheatcodes. It can *always* find and write the storage slot(s) associated with a particular variable without knowing the storage layout. The one _major_ caveat to this is while a slot can be found for packed storage variables, we can't write to that variable safely. If a user tries to write to a packed slot, the execution throws an error, unless it is uninitialized (`bytes32(0)`). - -This works by recording all `SLOAD`s and `SSTORE`s during a function call. If there is a single slot read or written to, it immediately returns the slot. Otherwise, behind the scenes, we iterate through and check each one (assuming the user passed in a `depth` parameter). If the variable is a struct, you can pass in a `depth` parameter which is basically the field depth. - -I.e.: -```solidity -struct T { - // depth 0 - uint256 a; - // depth 1 - uint256 b; -} -``` - -#### Example usage - -```solidity -import "forge-std/Test.sol"; - -contract TestContract is Test { - using stdStorage for StdStorage; - - Storage test; - - function setUp() public { - test = new Storage(); - } - - function testFindExists() public { - // Lets say we want to find the slot for the public - // variable `exists`. We just pass in the function selector - // to the `find` command - uint256 slot = stdstore.target(address(test)).sig("exists()").find(); - assertEq(slot, 0); - } - - function testWriteExists() public { - // Lets say we want to write to the slot for the public - // variable `exists`. We just pass in the function selector - // to the `checked_write` command - stdstore.target(address(test)).sig("exists()").checked_write(100); - assertEq(test.exists(), 100); - } - - // It supports arbitrary storage layouts, like assembly based storage locations - function testFindHidden() public { - // `hidden` is a random hash of a bytes, iteration through slots would - // not find it. Our mechanism does - // Also, you can use the selector instead of a string - uint256 slot = stdstore.target(address(test)).sig(test.hidden.selector).find(); - assertEq(slot, uint256(keccak256("my.random.var"))); - } - - // If targeting a mapping, you have to pass in the keys necessary to perform the find - // i.e.: - function testFindMapping() public { - uint256 slot = stdstore - .target(address(test)) - .sig(test.map_addr.selector) - .with_key(address(this)) - .find(); - // in the `Storage` constructor, we wrote that this address' value was 1 in the map - // so when we load the slot, we expect it to be 1 - assertEq(uint(vm.load(address(test), bytes32(slot))), 1); - } - - // If the target is a struct, you can specify the field depth: - function testFindStruct() public { - // NOTE: see the depth parameter - 0 means 0th field, 1 means 1st field, etc. - uint256 slot_for_a_field = stdstore - .target(address(test)) - .sig(test.basicStruct.selector) - .depth(0) - .find(); - - uint256 slot_for_b_field = stdstore - .target(address(test)) - .sig(test.basicStruct.selector) - .depth(1) - .find(); - - assertEq(uint(vm.load(address(test), bytes32(slot_for_a_field))), 1); - assertEq(uint(vm.load(address(test), bytes32(slot_for_b_field))), 2); - } -} - -// A complex storage contract -contract Storage { - struct UnpackedStruct { - uint256 a; - uint256 b; - } - - constructor() { - map_addr[msg.sender] = 1; - } - - uint256 public exists = 1; - mapping(address => uint256) public map_addr; - // mapping(address => Packed) public map_packed; - mapping(address => UnpackedStruct) public map_struct; - mapping(address => mapping(address => uint256)) public deep_map; - mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; - UnpackedStruct public basicStruct = UnpackedStruct({ - a: 1, - b: 2 - }); - - function hidden() public view returns (bytes32 t) { - // an extremely hidden storage slot - bytes32 slot = keccak256("my.random.var"); - assembly { - t := sload(slot) - } - } -} -``` - -### stdCheats - -This is a wrapper over miscellaneous cheatcodes that need wrappers to be more dev friendly. Currently there are only functions related to `prank`. In general, users may expect ETH to be put into an address on `prank`, but this is not the case for safety reasons. Explicitly this `hoax` function should only be used for address that have expected balances as it will get overwritten. If an address already has ETH, you should just use `prank`. If you want to change that balance explicitly, just use `deal`. If you want to do both, `hoax` is also right for you. - - -#### Example usage: -```solidity - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; - -// Inherit the stdCheats -contract StdCheatsTest is Test { - Bar test; - function setUp() public { - test = new Bar(); - } - - function testHoax() public { - // we call `hoax`, which gives the target address - // eth and then calls `prank` - hoax(address(1337)); - test.bar{value: 100}(address(1337)); - - // overloaded to allow you to specify how much eth to - // initialize the address with - hoax(address(1337), 1); - test.bar{value: 1}(address(1337)); - } - - function testStartHoax() public { - // we call `startHoax`, which gives the target address - // eth and then calls `startPrank` - // - // it is also overloaded so that you can specify an eth amount - startHoax(address(1337)); - test.bar{value: 100}(address(1337)); - test.bar{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } -} - -contract Bar { - function bar(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - } -} -``` - -### Std Assertions - -Expand upon the assertion functions from the `DSTest` library. - -### `console.log` - -Usage follows the same format as [Hardhat](https://hardhat.org/hardhat-network/reference/#console-log). -It's recommended to use `console2.sol` as shown below, as this will show the decoded logs in Forge traces. - -```solidity -// import it indirectly via Test.sol -import "forge-std/Test.sol"; -// or directly import it -import "forge-std/console2.sol"; -... -console2.log(someValue); -``` - -If you need compatibility with Hardhat, you must use the standard `console.sol` instead. -Due to a bug in `console.sol`, logs that use `uint256` or `int256` types will not be properly decoded in Forge traces. - -```solidity -// import it indirectly via Test.sol -import "forge-std/Test.sol"; -// or directly import it -import "forge-std/console.sol"; -... -console.log(someValue); -``` - -## License - -Forge Standard Library is offered under either [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) license. diff --git a/packages/wallet-contracts/lib/forge-std/foundry.toml b/packages/wallet-contracts/lib/forge-std/foundry.toml deleted file mode 100644 index f9679ee61a..0000000000 --- a/packages/wallet-contracts/lib/forge-std/foundry.toml +++ /dev/null @@ -1,21 +0,0 @@ -[profile.default] -fs_permissions = [{ access = "read-write", path = "./"}] - -[rpc_endpoints] -# The RPC URLs are modified versions of the default for testing initialization. -mainnet = "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3" # Different API key. -optimism_goerli = "https://goerli.optimism.io/" # Adds a trailing slash. -arbitrum_one_goerli = "https://goerli-rollup.arbitrum.io/rpc/" # Adds a trailing slash. -needs_undefined_env_var = "${UNDEFINED_RPC_URL_PLACEHOLDER}" - -[fmt] -# These are all the `forge fmt` defaults. -line_length = 120 -tab_width = 4 -bracket_spacing = false -int_types = 'long' -multiline_func_header = 'attributes_first' -quote_style = 'double' -number_underscore = 'preserve' -single_line_statement_blocks = 'preserve' -ignore = ["src/console.sol", "src/console2.sol"] \ No newline at end of file diff --git a/packages/wallet-contracts/lib/forge-std/lib/ds-test/.github/workflows/build.yml b/packages/wallet-contracts/lib/forge-std/lib/ds-test/.github/workflows/build.yml deleted file mode 100644 index d2ff97db70..0000000000 --- a/packages/wallet-contracts/lib/forge-std/lib/ds-test/.github/workflows/build.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: "Build" -on: - pull_request: - push: -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v20 - with: - nix_path: nixpkgs=channel:nixos-unstable - extra_nix_config: | - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - - name: setup dapp binary cache - uses: cachix/cachix-action@v12 - with: - name: dapp - - - name: install dapptools - run: nix profile install github:dapphub/dapptools#dapp --accept-flake-config - - - name: install foundry - uses: foundry-rs/foundry-toolchain@v1 - - - name: test with solc-0.5.17 - run: dapp --use solc-0.5.17 test -v - - - name: test with solc-0.6.11 - run: dapp --use solc-0.6.11 test -v - - - name: test with solc-0.7.6 - run: dapp --use solc-0.7.6 test -v - - - name: test with solc-0.8.18 - run: dapp --use solc-0.8.18 test -v - - - name: Run tests with foundry - run: forge test -vvv - diff --git a/packages/wallet-contracts/lib/forge-std/lib/ds-test/LICENSE b/packages/wallet-contracts/lib/forge-std/lib/ds-test/LICENSE deleted file mode 100644 index 94a9ed024d..0000000000 --- a/packages/wallet-contracts/lib/forge-std/lib/ds-test/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/packages/wallet-contracts/lib/forge-std/lib/ds-test/Makefile b/packages/wallet-contracts/lib/forge-std/lib/ds-test/Makefile deleted file mode 100644 index 661dac4868..0000000000 --- a/packages/wallet-contracts/lib/forge-std/lib/ds-test/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -all:; dapp build - -test: - -dapp --use solc:0.4.23 build - -dapp --use solc:0.4.26 build - -dapp --use solc:0.5.17 build - -dapp --use solc:0.6.12 build - -dapp --use solc:0.7.5 build - -demo: - DAPP_SRC=demo dapp --use solc:0.7.5 build - -hevm dapp-test --verbose 3 - -.PHONY: test demo diff --git a/packages/wallet-contracts/lib/forge-std/lib/ds-test/default.nix b/packages/wallet-contracts/lib/forge-std/lib/ds-test/default.nix deleted file mode 100644 index cf65419ab4..0000000000 --- a/packages/wallet-contracts/lib/forge-std/lib/ds-test/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ solidityPackage, dappsys }: solidityPackage { - name = "ds-test"; - src = ./src; -} diff --git a/packages/wallet-contracts/lib/forge-std/lib/ds-test/demo/demo.sol b/packages/wallet-contracts/lib/forge-std/lib/ds-test/demo/demo.sol deleted file mode 100644 index f3bb48e701..0000000000 --- a/packages/wallet-contracts/lib/forge-std/lib/ds-test/demo/demo.sol +++ /dev/null @@ -1,222 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity >=0.5.0; - -import "../src/test.sol"; - -contract DemoTest is DSTest { - function test_this() public pure { - require(true); - } - function test_logs() public { - emit log("-- log(string)"); - emit log("a string"); - - emit log("-- log_named_uint(string, uint)"); - emit log_named_uint("uint", 512); - - emit log("-- log_named_int(string, int)"); - emit log_named_int("int", -512); - - emit log("-- log_named_address(string, address)"); - emit log_named_address("address", address(this)); - - emit log("-- log_named_bytes32(string, bytes32)"); - emit log_named_bytes32("bytes32", "a string"); - - emit log("-- log_named_bytes(string, bytes)"); - emit log_named_bytes("bytes", hex"cafefe"); - - emit log("-- log_named_string(string, string)"); - emit log_named_string("string", "a string"); - - emit log("-- log_named_decimal_uint(string, uint, uint)"); - emit log_named_decimal_uint("decimal uint", 1.0e18, 18); - - emit log("-- log_named_decimal_int(string, int, uint)"); - emit log_named_decimal_int("decimal int", -1.0e18, 18); - } - event log_old_named_uint(bytes32,uint); - function test_old_logs() public { - emit log_old_named_uint("key", 500); - emit log_named_bytes32("bkey", "val"); - } - function test_trace() public view { - this.echo("string 1", "string 2"); - } - function test_multiline() public { - emit log("a multiline\\nstring"); - emit log("a multiline string"); - emit log_bytes("a string"); - emit log_bytes("a multiline\nstring"); - emit log_bytes("a multiline\\nstring"); - emit logs(hex"0000"); - emit log_named_bytes("0x0000", hex"0000"); - emit logs(hex"ff"); - } - function echo(string memory s1, string memory s2) public pure - returns (string memory, string memory) - { - return (s1, s2); - } - - function prove_this(uint x) public { - emit log_named_uint("sym x", x); - assertGt(x + 1, 0); - } - - function test_logn() public { - assembly { - log0(0x01, 0x02) - log1(0x01, 0x02, 0x03) - log2(0x01, 0x02, 0x03, 0x04) - log3(0x01, 0x02, 0x03, 0x04, 0x05) - } - } - - event MyEvent(uint, uint indexed, uint, uint indexed); - function test_events() public { - emit MyEvent(1, 2, 3, 4); - } - - function test_asserts() public { - string memory err = "this test has failed!"; - emit log("## assertTrue(bool)\n"); - assertTrue(false); - emit log("\n"); - assertTrue(false, err); - - emit log("\n## assertEq(address,address)\n"); - assertEq(address(this), msg.sender); - emit log("\n"); - assertEq(address(this), msg.sender, err); - - emit log("\n## assertEq32(bytes32,bytes32)\n"); - assertEq32("bytes 1", "bytes 2"); - emit log("\n"); - assertEq32("bytes 1", "bytes 2", err); - - emit log("\n## assertEq(bytes32,bytes32)\n"); - assertEq32("bytes 1", "bytes 2"); - emit log("\n"); - assertEq32("bytes 1", "bytes 2", err); - - emit log("\n## assertEq(uint,uint)\n"); - assertEq(uint(0), 1); - emit log("\n"); - assertEq(uint(0), 1, err); - - emit log("\n## assertEq(int,int)\n"); - assertEq(-1, -2); - emit log("\n"); - assertEq(-1, -2, err); - - emit log("\n## assertEqDecimal(int,int,uint)\n"); - assertEqDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertEqDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertEqDecimal(uint,uint,uint)\n"); - assertEqDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertEqDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertGt(uint,uint)\n"); - assertGt(uint(0), 0); - emit log("\n"); - assertGt(uint(0), 0, err); - - emit log("\n## assertGt(int,int)\n"); - assertGt(-1, -1); - emit log("\n"); - assertGt(-1, -1, err); - - emit log("\n## assertGtDecimal(int,int,uint)\n"); - assertGtDecimal(-2.0e18, -1.1e18, 18); - emit log("\n"); - assertGtDecimal(-2.0e18, -1.1e18, 18, err); - - emit log("\n## assertGtDecimal(uint,uint,uint)\n"); - assertGtDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertGtDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertGe(uint,uint)\n"); - assertGe(uint(0), 1); - emit log("\n"); - assertGe(uint(0), 1, err); - - emit log("\n## assertGe(int,int)\n"); - assertGe(-1, 0); - emit log("\n"); - assertGe(-1, 0, err); - - emit log("\n## assertGeDecimal(int,int,uint)\n"); - assertGeDecimal(-2.0e18, -1.1e18, 18); - emit log("\n"); - assertGeDecimal(-2.0e18, -1.1e18, 18, err); - - emit log("\n## assertGeDecimal(uint,uint,uint)\n"); - assertGeDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertGeDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertLt(uint,uint)\n"); - assertLt(uint(0), 0); - emit log("\n"); - assertLt(uint(0), 0, err); - - emit log("\n## assertLt(int,int)\n"); - assertLt(-1, -1); - emit log("\n"); - assertLt(-1, -1, err); - - emit log("\n## assertLtDecimal(int,int,uint)\n"); - assertLtDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertLtDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertLtDecimal(uint,uint,uint)\n"); - assertLtDecimal(uint(2.0e18), 1.1e18, 18); - emit log("\n"); - assertLtDecimal(uint(2.0e18), 1.1e18, 18, err); - - emit log("\n## assertLe(uint,uint)\n"); - assertLe(uint(1), 0); - emit log("\n"); - assertLe(uint(1), 0, err); - - emit log("\n## assertLe(int,int)\n"); - assertLe(0, -1); - emit log("\n"); - assertLe(0, -1, err); - - emit log("\n## assertLeDecimal(int,int,uint)\n"); - assertLeDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertLeDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertLeDecimal(uint,uint,uint)\n"); - assertLeDecimal(uint(2.0e18), 1.1e18, 18); - emit log("\n"); - assertLeDecimal(uint(2.0e18), 1.1e18, 18, err); - - emit log("\n## assertEq(string,string)\n"); - string memory s1 = "string 1"; - string memory s2 = "string 2"; - assertEq(s1, s2); - emit log("\n"); - assertEq(s1, s2, err); - - emit log("\n## assertEq0(bytes,bytes)\n"); - assertEq0(hex"abcdef01", hex"abcdef02"); - emit log("\n"); - assertEq0(hex"abcdef01", hex"abcdef02", err); - } -} - -contract DemoTestWithSetUp { - function setUp() public { - } - function test_pass() public pure { - } -} diff --git a/packages/wallet-contracts/lib/forge-std/lib/ds-test/package.json b/packages/wallet-contracts/lib/forge-std/lib/ds-test/package.json deleted file mode 100644 index 4802adaa32..0000000000 --- a/packages/wallet-contracts/lib/forge-std/lib/ds-test/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ds-test", - "version": "1.0.0", - "description": "Assertions, equality checks and other test helpers ", - "bugs": "https://github.com/dapphub/ds-test/issues", - "license": "GPL-3.0", - "author": "Contributors to ds-test", - "files": [ - "src/*" - ], - "repository": { - "type": "git", - "url": "https://github.com/dapphub/ds-test.git" - } -} diff --git a/packages/wallet-contracts/lib/forge-std/lib/ds-test/src/test.sol b/packages/wallet-contracts/lib/forge-std/lib/ds-test/src/test.sol deleted file mode 100644 index 2bf337567f..0000000000 --- a/packages/wallet-contracts/lib/forge-std/lib/ds-test/src/test.sol +++ /dev/null @@ -1,592 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -pragma solidity >=0.5.0; - -contract DSTest { - event log (string); - event logs (bytes); - - event log_address (address); - event log_bytes32 (bytes32); - event log_int (int); - event log_uint (uint); - event log_bytes (bytes); - event log_string (string); - - event log_named_address (string key, address val); - event log_named_bytes32 (string key, bytes32 val); - event log_named_decimal_int (string key, int val, uint decimals); - event log_named_decimal_uint (string key, uint val, uint decimals); - event log_named_int (string key, int val); - event log_named_uint (string key, uint val); - event log_named_bytes (string key, bytes val); - event log_named_string (string key, string val); - - bool public IS_TEST = true; - bool private _failed; - - address constant HEVM_ADDRESS = - address(bytes20(uint160(uint256(keccak256('hevm cheat code'))))); - - modifier mayRevert() { _; } - modifier testopts(string memory) { _; } - - function failed() public returns (bool) { - if (_failed) { - return _failed; - } else { - bool globalFailed = false; - if (hasHEVMContext()) { - (, bytes memory retdata) = HEVM_ADDRESS.call( - abi.encodePacked( - bytes4(keccak256("load(address,bytes32)")), - abi.encode(HEVM_ADDRESS, bytes32("failed")) - ) - ); - globalFailed = abi.decode(retdata, (bool)); - } - return globalFailed; - } - } - - function fail() internal virtual { - if (hasHEVMContext()) { - (bool status, ) = HEVM_ADDRESS.call( - abi.encodePacked( - bytes4(keccak256("store(address,bytes32,bytes32)")), - abi.encode(HEVM_ADDRESS, bytes32("failed"), bytes32(uint256(0x01))) - ) - ); - status; // Silence compiler warnings - } - _failed = true; - } - - function hasHEVMContext() internal view returns (bool) { - uint256 hevmCodeSize = 0; - assembly { - hevmCodeSize := extcodesize(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D) - } - return hevmCodeSize > 0; - } - - modifier logs_gas() { - uint startGas = gasleft(); - _; - uint endGas = gasleft(); - emit log_named_uint("gas", startGas - endGas); - } - - function assertTrue(bool condition) internal { - if (!condition) { - emit log("Error: Assertion Failed"); - fail(); - } - } - - function assertTrue(bool condition, string memory err) internal { - if (!condition) { - emit log_named_string("Error", err); - assertTrue(condition); - } - } - - function assertEq(address a, address b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [address]"); - emit log_named_address(" Left", a); - emit log_named_address(" Right", b); - fail(); - } - } - function assertEq(address a, address b, string memory err) internal { - if (a != b) { - emit log_named_string ("Error", err); - assertEq(a, b); - } - } - - function assertEq(bytes32 a, bytes32 b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [bytes32]"); - emit log_named_bytes32(" Left", a); - emit log_named_bytes32(" Right", b); - fail(); - } - } - function assertEq(bytes32 a, bytes32 b, string memory err) internal { - if (a != b) { - emit log_named_string ("Error", err); - assertEq(a, b); - } - } - function assertEq32(bytes32 a, bytes32 b) internal { - assertEq(a, b); - } - function assertEq32(bytes32 a, bytes32 b, string memory err) internal { - assertEq(a, b, err); - } - - function assertEq(int a, int b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [int]"); - emit log_named_int(" Left", a); - emit log_named_int(" Right", b); - fail(); - } - } - function assertEq(int a, int b, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - function assertEq(uint a, uint b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [uint]"); - emit log_named_uint(" Left", a); - emit log_named_uint(" Right", b); - fail(); - } - } - function assertEq(uint a, uint b, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - function assertEqDecimal(int a, int b, uint decimals) internal { - if (a != b) { - emit log("Error: a == b not satisfied [decimal int]"); - emit log_named_decimal_int(" Left", a, decimals); - emit log_named_decimal_int(" Right", b, decimals); - fail(); - } - } - function assertEqDecimal(int a, int b, uint decimals, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEqDecimal(a, b, decimals); - } - } - function assertEqDecimal(uint a, uint b, uint decimals) internal { - if (a != b) { - emit log("Error: a == b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Left", a, decimals); - emit log_named_decimal_uint(" Right", b, decimals); - fail(); - } - } - function assertEqDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEqDecimal(a, b, decimals); - } - } - - function assertNotEq(address a, address b) internal { - if (a == b) { - emit log("Error: a != b not satisfied [address]"); - emit log_named_address(" Left", a); - emit log_named_address(" Right", b); - fail(); - } - } - function assertNotEq(address a, address b, string memory err) internal { - if (a == b) { - emit log_named_string ("Error", err); - assertNotEq(a, b); - } - } - - function assertNotEq(bytes32 a, bytes32 b) internal { - if (a == b) { - emit log("Error: a != b not satisfied [bytes32]"); - emit log_named_bytes32(" Left", a); - emit log_named_bytes32(" Right", b); - fail(); - } - } - function assertNotEq(bytes32 a, bytes32 b, string memory err) internal { - if (a == b) { - emit log_named_string ("Error", err); - assertNotEq(a, b); - } - } - function assertNotEq32(bytes32 a, bytes32 b) internal { - assertNotEq(a, b); - } - function assertNotEq32(bytes32 a, bytes32 b, string memory err) internal { - assertNotEq(a, b, err); - } - - function assertNotEq(int a, int b) internal { - if (a == b) { - emit log("Error: a != b not satisfied [int]"); - emit log_named_int(" Left", a); - emit log_named_int(" Right", b); - fail(); - } - } - function assertNotEq(int a, int b, string memory err) internal { - if (a == b) { - emit log_named_string("Error", err); - assertNotEq(a, b); - } - } - function assertNotEq(uint a, uint b) internal { - if (a == b) { - emit log("Error: a != b not satisfied [uint]"); - emit log_named_uint(" Left", a); - emit log_named_uint(" Right", b); - fail(); - } - } - function assertNotEq(uint a, uint b, string memory err) internal { - if (a == b) { - emit log_named_string("Error", err); - assertNotEq(a, b); - } - } - function assertNotEqDecimal(int a, int b, uint decimals) internal { - if (a == b) { - emit log("Error: a != b not satisfied [decimal int]"); - emit log_named_decimal_int(" Left", a, decimals); - emit log_named_decimal_int(" Right", b, decimals); - fail(); - } - } - function assertNotEqDecimal(int a, int b, uint decimals, string memory err) internal { - if (a == b) { - emit log_named_string("Error", err); - assertNotEqDecimal(a, b, decimals); - } - } - function assertNotEqDecimal(uint a, uint b, uint decimals) internal { - if (a == b) { - emit log("Error: a != b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Left", a, decimals); - emit log_named_decimal_uint(" Right", b, decimals); - fail(); - } - } - function assertNotEqDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a == b) { - emit log_named_string("Error", err); - assertNotEqDecimal(a, b, decimals); - } - } - - function assertGt(uint a, uint b) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertGt(uint a, uint b, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGt(a, b); - } - } - function assertGt(int a, int b) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertGt(int a, int b, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGt(a, b); - } - } - function assertGtDecimal(int a, int b, uint decimals) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertGtDecimal(int a, int b, uint decimals, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGtDecimal(a, b, decimals); - } - } - function assertGtDecimal(uint a, uint b, uint decimals) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertGtDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGtDecimal(a, b, decimals); - } - } - - function assertGe(uint a, uint b) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertGe(uint a, uint b, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGe(a, b); - } - } - function assertGe(int a, int b) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertGe(int a, int b, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGe(a, b); - } - } - function assertGeDecimal(int a, int b, uint decimals) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertGeDecimal(int a, int b, uint decimals, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGeDecimal(a, b, decimals); - } - } - function assertGeDecimal(uint a, uint b, uint decimals) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertGeDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGeDecimal(a, b, decimals); - } - } - - function assertLt(uint a, uint b) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertLt(uint a, uint b, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLt(a, b); - } - } - function assertLt(int a, int b) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertLt(int a, int b, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLt(a, b); - } - } - function assertLtDecimal(int a, int b, uint decimals) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertLtDecimal(int a, int b, uint decimals, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLtDecimal(a, b, decimals); - } - } - function assertLtDecimal(uint a, uint b, uint decimals) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertLtDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLtDecimal(a, b, decimals); - } - } - - function assertLe(uint a, uint b) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertLe(uint a, uint b, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLe(a, b); - } - } - function assertLe(int a, int b) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertLe(int a, int b, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLe(a, b); - } - } - function assertLeDecimal(int a, int b, uint decimals) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertLeDecimal(int a, int b, uint decimals, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLeDecimal(a, b, decimals); - } - } - function assertLeDecimal(uint a, uint b, uint decimals) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertLeDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLeDecimal(a, b, decimals); - } - } - - function assertEq(string memory a, string memory b) internal { - if (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))) { - emit log("Error: a == b not satisfied [string]"); - emit log_named_string(" Left", a); - emit log_named_string(" Right", b); - fail(); - } - } - function assertEq(string memory a, string memory b, string memory err) internal { - if (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function assertNotEq(string memory a, string memory b) internal { - if (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))) { - emit log("Error: a != b not satisfied [string]"); - emit log_named_string(" Left", a); - emit log_named_string(" Right", b); - fail(); - } - } - function assertNotEq(string memory a, string memory b, string memory err) internal { - if (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))) { - emit log_named_string("Error", err); - assertNotEq(a, b); - } - } - - function checkEq0(bytes memory a, bytes memory b) internal pure returns (bool ok) { - ok = true; - if (a.length == b.length) { - for (uint i = 0; i < a.length; i++) { - if (a[i] != b[i]) { - ok = false; - } - } - } else { - ok = false; - } - } - function assertEq0(bytes memory a, bytes memory b) internal { - if (!checkEq0(a, b)) { - emit log("Error: a == b not satisfied [bytes]"); - emit log_named_bytes(" Left", a); - emit log_named_bytes(" Right", b); - fail(); - } - } - function assertEq0(bytes memory a, bytes memory b, string memory err) internal { - if (!checkEq0(a, b)) { - emit log_named_string("Error", err); - assertEq0(a, b); - } - } - - function assertNotEq0(bytes memory a, bytes memory b) internal { - if (checkEq0(a, b)) { - emit log("Error: a != b not satisfied [bytes]"); - emit log_named_bytes(" Left", a); - emit log_named_bytes(" Right", b); - fail(); - } - } - function assertNotEq0(bytes memory a, bytes memory b, string memory err) internal { - if (checkEq0(a, b)) { - emit log_named_string("Error", err); - assertNotEq0(a, b); - } - } -} diff --git a/packages/wallet-contracts/lib/forge-std/lib/ds-test/src/test.t.sol b/packages/wallet-contracts/lib/forge-std/lib/ds-test/src/test.t.sol deleted file mode 100644 index d277a30945..0000000000 --- a/packages/wallet-contracts/lib/forge-std/lib/ds-test/src/test.t.sol +++ /dev/null @@ -1,417 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity >=0.5.0; - -import {DSTest} from "./test.sol"; - -contract DemoTest is DSTest { - - // --- assertTrue --- - - function testAssertTrue() public { - assertTrue(true, "msg"); - assertTrue(true); - } - function testFailAssertTrue() public { - assertTrue(false); - } - function testFailAssertTrueWithMsg() public { - assertTrue(false, "msg"); - } - - // --- assertEq (Addr) --- - - function testAssertEqAddr() public { - assertEq(address(0x0), address(0x0), "msg"); - assertEq(address(0x0), address(0x0)); - } - function testFailAssertEqAddr() public { - assertEq(address(0x0), address(0x1)); - } - function testFailAssertEqAddrWithMsg() public { - assertEq(address(0x0), address(0x1), "msg"); - } - - // --- assertEq (Bytes32) --- - - function testAssertEqBytes32() public { - assertEq(bytes32("hi"), bytes32("hi"), "msg"); - assertEq(bytes32("hi"), bytes32("hi")); - } - function testFailAssertEqBytes32() public { - assertEq(bytes32("hi"), bytes32("ho")); - } - function testFailAssertEqBytes32WithMsg() public { - assertEq(bytes32("hi"), bytes32("ho"), "msg"); - } - - // --- assertEq (Int) --- - - function testAssertEqInt() public { - assertEq(-1, -1, "msg"); - assertEq(-1, -1); - } - function testFailAssertEqInt() public { - assertEq(-1, -2); - } - function testFailAssertEqIntWithMsg() public { - assertEq(-1, -2, "msg"); - } - - // --- assertEq (UInt) --- - - function testAssertEqUInt() public { - assertEq(uint(1), uint(1), "msg"); - assertEq(uint(1), uint(1)); - } - function testFailAssertEqUInt() public { - assertEq(uint(1), uint(2)); - } - function testFailAssertEqUIntWithMsg() public { - assertEq(uint(1), uint(2), "msg"); - } - - // --- assertEqDecimal (Int) --- - - function testAssertEqDecimalInt() public { - assertEqDecimal(-1, -1, 18, "msg"); - assertEqDecimal(-1, -1, 18); - } - function testFailAssertEqDecimalInt() public { - assertEqDecimal(-1, -2, 18); - } - function testFailAssertEqDecimalIntWithMsg() public { - assertEqDecimal(-1, -2, 18, "msg"); - } - - // --- assertEqDecimal (UInt) --- - - function testAssertEqDecimalUInt() public { - assertEqDecimal(uint(1), uint(1), 18, "msg"); - assertEqDecimal(uint(1), uint(1), 18); - } - function testFailAssertEqDecimalUInt() public { - assertEqDecimal(uint(1), uint(2), 18); - } - function testFailAssertEqDecimalUIntWithMsg() public { - assertEqDecimal(uint(1), uint(2), 18, "msg"); - } - - // --- assertNotEq (Addr) --- - - function testAssertNotEqAddr() public { - assertNotEq(address(0x0), address(0x1), "msg"); - assertNotEq(address(0x0), address(0x1)); - } - function testFailAssertNotEqAddr() public { - assertNotEq(address(0x0), address(0x0)); - } - function testFailAssertNotEqAddrWithMsg() public { - assertNotEq(address(0x0), address(0x0), "msg"); - } - - // --- assertNotEq (Bytes32) --- - - function testAssertNotEqBytes32() public { - assertNotEq(bytes32("hi"), bytes32("ho"), "msg"); - assertNotEq(bytes32("hi"), bytes32("ho")); - } - function testFailAssertNotEqBytes32() public { - assertNotEq(bytes32("hi"), bytes32("hi")); - } - function testFailAssertNotEqBytes32WithMsg() public { - assertNotEq(bytes32("hi"), bytes32("hi"), "msg"); - } - - // --- assertNotEq (Int) --- - - function testAssertNotEqInt() public { - assertNotEq(-1, -2, "msg"); - assertNotEq(-1, -2); - } - function testFailAssertNotEqInt() public { - assertNotEq(-1, -1); - } - function testFailAssertNotEqIntWithMsg() public { - assertNotEq(-1, -1, "msg"); - } - - // --- assertNotEq (UInt) --- - - function testAssertNotEqUInt() public { - assertNotEq(uint(1), uint(2), "msg"); - assertNotEq(uint(1), uint(2)); - } - function testFailAssertNotEqUInt() public { - assertNotEq(uint(1), uint(1)); - } - function testFailAssertNotEqUIntWithMsg() public { - assertNotEq(uint(1), uint(1), "msg"); - } - - // --- assertNotEqDecimal (Int) --- - - function testAssertNotEqDecimalInt() public { - assertNotEqDecimal(-1, -2, 18, "msg"); - assertNotEqDecimal(-1, -2, 18); - } - function testFailAssertNotEqDecimalInt() public { - assertNotEqDecimal(-1, -1, 18); - } - function testFailAssertNotEqDecimalIntWithMsg() public { - assertNotEqDecimal(-1, -1, 18, "msg"); - } - - // --- assertNotEqDecimal (UInt) --- - - function testAssertNotEqDecimalUInt() public { - assertNotEqDecimal(uint(1), uint(2), 18, "msg"); - assertNotEqDecimal(uint(1), uint(2), 18); - } - function testFailAssertNotEqDecimalUInt() public { - assertNotEqDecimal(uint(1), uint(1), 18); - } - function testFailAssertNotEqDecimalUIntWithMsg() public { - assertNotEqDecimal(uint(1), uint(1), 18, "msg"); - } - - // --- assertGt (UInt) --- - - function testAssertGtUInt() public { - assertGt(uint(2), uint(1), "msg"); - assertGt(uint(3), uint(2)); - } - function testFailAssertGtUInt() public { - assertGt(uint(1), uint(2)); - } - function testFailAssertGtUIntWithMsg() public { - assertGt(uint(1), uint(2), "msg"); - } - - // --- assertGt (Int) --- - - function testAssertGtInt() public { - assertGt(-1, -2, "msg"); - assertGt(-1, -3); - } - function testFailAssertGtInt() public { - assertGt(-2, -1); - } - function testFailAssertGtIntWithMsg() public { - assertGt(-2, -1, "msg"); - } - - // --- assertGtDecimal (UInt) --- - - function testAssertGtDecimalUInt() public { - assertGtDecimal(uint(2), uint(1), 18, "msg"); - assertGtDecimal(uint(3), uint(2), 18); - } - function testFailAssertGtDecimalUInt() public { - assertGtDecimal(uint(1), uint(2), 18); - } - function testFailAssertGtDecimalUIntWithMsg() public { - assertGtDecimal(uint(1), uint(2), 18, "msg"); - } - - // --- assertGtDecimal (Int) --- - - function testAssertGtDecimalInt() public { - assertGtDecimal(-1, -2, 18, "msg"); - assertGtDecimal(-1, -3, 18); - } - function testFailAssertGtDecimalInt() public { - assertGtDecimal(-2, -1, 18); - } - function testFailAssertGtDecimalIntWithMsg() public { - assertGtDecimal(-2, -1, 18, "msg"); - } - - // --- assertGe (UInt) --- - - function testAssertGeUInt() public { - assertGe(uint(2), uint(1), "msg"); - assertGe(uint(2), uint(2)); - } - function testFailAssertGeUInt() public { - assertGe(uint(1), uint(2)); - } - function testFailAssertGeUIntWithMsg() public { - assertGe(uint(1), uint(2), "msg"); - } - - // --- assertGe (Int) --- - - function testAssertGeInt() public { - assertGe(-1, -2, "msg"); - assertGe(-1, -1); - } - function testFailAssertGeInt() public { - assertGe(-2, -1); - } - function testFailAssertGeIntWithMsg() public { - assertGe(-2, -1, "msg"); - } - - // --- assertGeDecimal (UInt) --- - - function testAssertGeDecimalUInt() public { - assertGeDecimal(uint(2), uint(1), 18, "msg"); - assertGeDecimal(uint(2), uint(2), 18); - } - function testFailAssertGeDecimalUInt() public { - assertGeDecimal(uint(1), uint(2), 18); - } - function testFailAssertGeDecimalUIntWithMsg() public { - assertGeDecimal(uint(1), uint(2), 18, "msg"); - } - - // --- assertGeDecimal (Int) --- - - function testAssertGeDecimalInt() public { - assertGeDecimal(-1, -2, 18, "msg"); - assertGeDecimal(-1, -2, 18); - } - function testFailAssertGeDecimalInt() public { - assertGeDecimal(-2, -1, 18); - } - function testFailAssertGeDecimalIntWithMsg() public { - assertGeDecimal(-2, -1, 18, "msg"); - } - - // --- assertLt (UInt) --- - - function testAssertLtUInt() public { - assertLt(uint(1), uint(2), "msg"); - assertLt(uint(1), uint(3)); - } - function testFailAssertLtUInt() public { - assertLt(uint(2), uint(2)); - } - function testFailAssertLtUIntWithMsg() public { - assertLt(uint(3), uint(2), "msg"); - } - - // --- assertLt (Int) --- - - function testAssertLtInt() public { - assertLt(-2, -1, "msg"); - assertLt(-1, 0); - } - function testFailAssertLtInt() public { - assertLt(-1, -2); - } - function testFailAssertLtIntWithMsg() public { - assertLt(-1, -1, "msg"); - } - - // --- assertLtDecimal (UInt) --- - - function testAssertLtDecimalUInt() public { - assertLtDecimal(uint(1), uint(2), 18, "msg"); - assertLtDecimal(uint(2), uint(3), 18); - } - function testFailAssertLtDecimalUInt() public { - assertLtDecimal(uint(1), uint(1), 18); - } - function testFailAssertLtDecimalUIntWithMsg() public { - assertLtDecimal(uint(2), uint(1), 18, "msg"); - } - - // --- assertLtDecimal (Int) --- - - function testAssertLtDecimalInt() public { - assertLtDecimal(-2, -1, 18, "msg"); - assertLtDecimal(-2, -1, 18); - } - function testFailAssertLtDecimalInt() public { - assertLtDecimal(-2, -2, 18); - } - function testFailAssertLtDecimalIntWithMsg() public { - assertLtDecimal(-1, -2, 18, "msg"); - } - - // --- assertLe (UInt) --- - - function testAssertLeUInt() public { - assertLe(uint(1), uint(2), "msg"); - assertLe(uint(1), uint(1)); - } - function testFailAssertLeUInt() public { - assertLe(uint(4), uint(2)); - } - function testFailAssertLeUIntWithMsg() public { - assertLe(uint(3), uint(2), "msg"); - } - - // --- assertLe (Int) --- - - function testAssertLeInt() public { - assertLe(-2, -1, "msg"); - assertLe(-1, -1); - } - function testFailAssertLeInt() public { - assertLe(-1, -2); - } - function testFailAssertLeIntWithMsg() public { - assertLe(-1, -3, "msg"); - } - - // --- assertLeDecimal (UInt) --- - - function testAssertLeDecimalUInt() public { - assertLeDecimal(uint(1), uint(2), 18, "msg"); - assertLeDecimal(uint(2), uint(2), 18); - } - function testFailAssertLeDecimalUInt() public { - assertLeDecimal(uint(1), uint(0), 18); - } - function testFailAssertLeDecimalUIntWithMsg() public { - assertLeDecimal(uint(1), uint(0), 18, "msg"); - } - - // --- assertLeDecimal (Int) --- - - function testAssertLeDecimalInt() public { - assertLeDecimal(-2, -1, 18, "msg"); - assertLeDecimal(-2, -2, 18); - } - function testFailAssertLeDecimalInt() public { - assertLeDecimal(-2, -3, 18); - } - function testFailAssertLeDecimalIntWithMsg() public { - assertLeDecimal(-1, -2, 18, "msg"); - } - - // --- assertNotEq (String) --- - - function testAssertNotEqString() public { - assertNotEq(new string(1), new string(2), "msg"); - assertNotEq(new string(1), new string(2)); - } - function testFailAssertNotEqString() public { - assertNotEq(new string(1), new string(1)); - } - function testFailAssertNotEqStringWithMsg() public { - assertNotEq(new string(1), new string(1), "msg"); - } - - // --- assertNotEq0 (Bytes) --- - - function testAssertNotEq0Bytes() public { - assertNotEq0(bytes("hi"), bytes("ho"), "msg"); - assertNotEq0(bytes("hi"), bytes("ho")); - } - function testFailAssertNotEq0Bytes() public { - assertNotEq0(bytes("hi"), bytes("hi")); - } - function testFailAssertNotEq0BytesWithMsg() public { - assertNotEq0(bytes("hi"), bytes("hi"), "msg"); - } - - // --- fail override --- - - // ensure that fail can be overridden - function fail() internal override { - super.fail(); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/package.json b/packages/wallet-contracts/lib/forge-std/package.json deleted file mode 100644 index c98539d2dd..0000000000 --- a/packages/wallet-contracts/lib/forge-std/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "forge-std", - "version": "1.5.5", - "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.", - "homepage": "https://book.getfoundry.sh/forge/forge-std", - "bugs": "https://github.com/foundry-rs/forge-std/issues", - "license": "(Apache-2.0 OR MIT)", - "author": "Contributors to Forge Standard Library", - "files": [ - "src/**/*" - ], - "repository": { - "type": "git", - "url": "https://github.com/foundry-rs/forge-std.git" - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/Base.sol b/packages/wallet-contracts/lib/forge-std/src/Base.sol deleted file mode 100644 index 83c5c1cfcb..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/Base.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {StdStorage} from "./StdStorage.sol"; -import {Vm, VmSafe} from "./Vm.sol"; - -abstract contract CommonBase { - // Cheat code address, 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D. - address internal constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code")))); - // console.sol and console2.sol work by executing a staticcall to this address. - address internal constant CONSOLE = 0x000000000000000000636F6e736F6c652e6c6f67; - // Default address for tx.origin and msg.sender, 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38. - address internal constant DEFAULT_SENDER = address(uint160(uint256(keccak256("foundry default caller")))); - // Address of the test contract, deployed by the DEFAULT_SENDER. - address internal constant DEFAULT_TEST_CONTRACT = 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f; - // Deterministic deployment address of the Multicall3 contract. - address internal constant MULTICALL3_ADDRESS = 0xcA11bde05977b3631167028862bE2a173976CA11; - - uint256 internal constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - Vm internal constant vm = Vm(VM_ADDRESS); - StdStorage internal stdstore; -} - -abstract contract TestBase is CommonBase {} - -abstract contract ScriptBase is CommonBase { - // Used when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. - address internal constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - - VmSafe internal constant vmSafe = VmSafe(VM_ADDRESS); -} diff --git a/packages/wallet-contracts/lib/forge-std/src/Script.sol b/packages/wallet-contracts/lib/forge-std/src/Script.sol deleted file mode 100644 index bffccadbe4..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/Script.sol +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -// 💬 ABOUT -// Standard Library's default Script. - -// 🧩 MODULES -import {ScriptBase} from "./Base.sol"; -import {console} from "./console.sol"; -import {console2} from "./console2.sol"; -import {StdChains} from "./StdChains.sol"; -import {StdCheatsSafe} from "./StdCheats.sol"; -import {stdJson} from "./StdJson.sol"; -import {stdMath} from "./StdMath.sol"; -import {StdStorage, stdStorageSafe} from "./StdStorage.sol"; -import {StdUtils} from "./StdUtils.sol"; -import {VmSafe} from "./Vm.sol"; - -// 📦 BOILERPLATE -import {ScriptBase} from "./Base.sol"; - -// ⭐️ SCRIPT -abstract contract Script is StdChains, StdCheatsSafe, StdUtils, ScriptBase { - // Note: IS_SCRIPT() must return true. - bool public IS_SCRIPT = true; -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdAssertions.sol b/packages/wallet-contracts/lib/forge-std/src/StdAssertions.sol deleted file mode 100644 index 2778b3a0e8..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdAssertions.sol +++ /dev/null @@ -1,376 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {DSTest} from "ds-test/test.sol"; -import {stdMath} from "./StdMath.sol"; - -abstract contract StdAssertions is DSTest { - event log_array(uint256[] val); - event log_array(int256[] val); - event log_array(address[] val); - event log_named_array(string key, uint256[] val); - event log_named_array(string key, int256[] val); - event log_named_array(string key, address[] val); - - function fail(string memory err) internal virtual { - emit log_named_string("Error", err); - fail(); - } - - function assertFalse(bool data) internal virtual { - assertTrue(!data); - } - - function assertFalse(bool data, string memory err) internal virtual { - assertTrue(!data, err); - } - - function assertEq(bool a, bool b) internal virtual { - if (a != b) { - emit log("Error: a == b not satisfied [bool]"); - emit log_named_string(" Left", a ? "true" : "false"); - emit log_named_string(" Right", b ? "true" : "false"); - fail(); - } - } - - function assertEq(bool a, bool b, string memory err) internal virtual { - if (a != b) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function assertEq(bytes memory a, bytes memory b) internal virtual { - assertEq0(a, b); - } - - function assertEq(bytes memory a, bytes memory b, string memory err) internal virtual { - assertEq0(a, b, err); - } - - function assertEq(uint256[] memory a, uint256[] memory b) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log("Error: a == b not satisfied [uint[]]"); - emit log_named_array(" Left", a); - emit log_named_array(" Right", b); - fail(); - } - } - - function assertEq(int256[] memory a, int256[] memory b) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log("Error: a == b not satisfied [int[]]"); - emit log_named_array(" Left", a); - emit log_named_array(" Right", b); - fail(); - } - } - - function assertEq(address[] memory a, address[] memory b) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log("Error: a == b not satisfied [address[]]"); - emit log_named_array(" Left", a); - emit log_named_array(" Right", b); - fail(); - } - } - - function assertEq(uint256[] memory a, uint256[] memory b, string memory err) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function assertEq(int256[] memory a, int256[] memory b, string memory err) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function assertEq(address[] memory a, address[] memory b, string memory err) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - // Legacy helper - function assertEqUint(uint256 a, uint256 b) internal virtual { - assertEq(uint256(a), uint256(b)); - } - - function assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log("Error: a ~= b not satisfied [uint]"); - emit log_named_uint(" Left", a); - emit log_named_uint(" Right", b); - emit log_named_uint(" Max Delta", maxDelta); - emit log_named_uint(" Delta", delta); - fail(); - } - } - - function assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, string memory err) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log_named_string("Error", err); - assertApproxEqAbs(a, b, maxDelta); - } - } - - function assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log("Error: a ~= b not satisfied [uint]"); - emit log_named_decimal_uint(" Left", a, decimals); - emit log_named_decimal_uint(" Right", b, decimals); - emit log_named_decimal_uint(" Max Delta", maxDelta, decimals); - emit log_named_decimal_uint(" Delta", delta, decimals); - fail(); - } - } - - function assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals, string memory err) - internal - virtual - { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log_named_string("Error", err); - assertApproxEqAbsDecimal(a, b, maxDelta, decimals); - } - } - - function assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log("Error: a ~= b not satisfied [int]"); - emit log_named_int(" Left", a); - emit log_named_int(" Right", b); - emit log_named_uint(" Max Delta", maxDelta); - emit log_named_uint(" Delta", delta); - fail(); - } - } - - function assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, string memory err) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log_named_string("Error", err); - assertApproxEqAbs(a, b, maxDelta); - } - } - - function assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log("Error: a ~= b not satisfied [int]"); - emit log_named_decimal_int(" Left", a, decimals); - emit log_named_decimal_int(" Right", b, decimals); - emit log_named_decimal_uint(" Max Delta", maxDelta, decimals); - emit log_named_decimal_uint(" Delta", delta, decimals); - fail(); - } - } - - function assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals, string memory err) - internal - virtual - { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log_named_string("Error", err); - assertApproxEqAbsDecimal(a, b, maxDelta, decimals); - } - } - - function assertApproxEqRel( - uint256 a, - uint256 b, - uint256 maxPercentDelta // An 18 decimal fixed point number, where 1e18 == 100% - ) internal virtual { - if (b == 0) return assertEq(a, b); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log("Error: a ~= b not satisfied [uint]"); - emit log_named_uint(" Left", a); - emit log_named_uint(" Right", b); - emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18); - emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18); - fail(); - } - } - - function assertApproxEqRel( - uint256 a, - uint256 b, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - string memory err - ) internal virtual { - if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log_named_string("Error", err); - assertApproxEqRel(a, b, maxPercentDelta); - } - } - - function assertApproxEqRelDecimal( - uint256 a, - uint256 b, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals - ) internal virtual { - if (b == 0) return assertEq(a, b); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log("Error: a ~= b not satisfied [uint]"); - emit log_named_decimal_uint(" Left", a, decimals); - emit log_named_decimal_uint(" Right", b, decimals); - emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18); - emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18); - fail(); - } - } - - function assertApproxEqRelDecimal( - uint256 a, - uint256 b, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals, - string memory err - ) internal virtual { - if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log_named_string("Error", err); - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals); - } - } - - function assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta) internal virtual { - if (b == 0) return assertEq(a, b); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log("Error: a ~= b not satisfied [int]"); - emit log_named_int(" Left", a); - emit log_named_int(" Right", b); - emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18); - emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18); - fail(); - } - } - - function assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, string memory err) internal virtual { - if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log_named_string("Error", err); - assertApproxEqRel(a, b, maxPercentDelta); - } - } - - function assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals) internal virtual { - if (b == 0) return assertEq(a, b); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log("Error: a ~= b not satisfied [int]"); - emit log_named_decimal_int(" Left", a, decimals); - emit log_named_decimal_int(" Right", b, decimals); - emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18); - emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18); - fail(); - } - } - - function assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals, string memory err) - internal - virtual - { - if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log_named_string("Error", err); - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals); - } - } - - function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB) internal virtual { - assertEqCall(target, callDataA, target, callDataB, true); - } - - function assertEqCall(address targetA, bytes memory callDataA, address targetB, bytes memory callDataB) - internal - virtual - { - assertEqCall(targetA, callDataA, targetB, callDataB, true); - } - - function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB, bool strictRevertData) - internal - virtual - { - assertEqCall(target, callDataA, target, callDataB, strictRevertData); - } - - function assertEqCall( - address targetA, - bytes memory callDataA, - address targetB, - bytes memory callDataB, - bool strictRevertData - ) internal virtual { - (bool successA, bytes memory returnDataA) = address(targetA).call(callDataA); - (bool successB, bytes memory returnDataB) = address(targetB).call(callDataB); - - if (successA && successB) { - assertEq(returnDataA, returnDataB, "Call return data does not match"); - } - - if (!successA && !successB && strictRevertData) { - assertEq(returnDataA, returnDataB, "Call revert data does not match"); - } - - if (!successA && successB) { - emit log("Error: Calls were not equal"); - emit log_named_bytes(" Left call revert data", returnDataA); - emit log_named_bytes(" Right call return data", returnDataB); - fail(); - } - - if (successA && !successB) { - emit log("Error: Calls were not equal"); - emit log_named_bytes(" Left call return data", returnDataA); - emit log_named_bytes(" Right call revert data", returnDataB); - fail(); - } - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdChains.sol b/packages/wallet-contracts/lib/forge-std/src/StdChains.sol deleted file mode 100644 index f97637fc45..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdChains.sol +++ /dev/null @@ -1,231 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {VmSafe} from "./Vm.sol"; - -/** - * StdChains provides information about EVM compatible chains that can be used in scripts/tests. - * For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are - * identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of - * the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the - * alias used in this contract, which can be found as the first argument to the - * `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. - * - * There are two main ways to use this contract: - * 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or - * `setChain(string memory chainAlias, Chain memory chain)` - * 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. - * - * The first time either of those are used, chains are initialized with the default set of RPC URLs. - * This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in - * `defaultRpcUrls`. - * - * The `setChain` function is straightforward, and it simply saves off the given chain data. - * - * The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say - * we want to retrieve the RPC URL for `mainnet`: - * - If you have specified data with `setChain`, it will return that. - * - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it - * is valid (e.g. a URL is specified, or an environment variable is given and exists). - * - If neither of the above conditions is met, the default data is returned. - * - * Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults. - */ -abstract contract StdChains { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - bool private stdChainsInitialized; - - struct ChainData { - string name; - uint256 chainId; - string rpcUrl; - } - - struct Chain { - // The chain name. - string name; - // The chain's Chain ID. - uint256 chainId; - // The chain's alias. (i.e. what gets specified in `foundry.toml`). - string chainAlias; - // A default RPC endpoint for this chain. - // NOTE: This default RPC URL is included for convenience to facilitate quick tests and - // experimentation. Do not use this RPC URL for production test suites, CI, or other heavy - // usage as you will be throttled and this is a disservice to others who need this endpoint. - string rpcUrl; - } - - // Maps from the chain's alias (matching the alias in the `foundry.toml` file) to chain data. - mapping(string => Chain) private chains; - // Maps from the chain's alias to it's default RPC URL. - mapping(string => string) private defaultRpcUrls; - // Maps from a chain ID to it's alias. - mapping(uint256 => string) private idToAlias; - - bool private fallbackToDefaultRpcUrls = true; - - // The RPC URL will be fetched from config or defaultRpcUrls if possible. - function getChain(string memory chainAlias) internal virtual returns (Chain memory chain) { - require(bytes(chainAlias).length != 0, "StdChains getChain(string): Chain alias cannot be the empty string."); - - initializeStdChains(); - chain = chains[chainAlias]; - require( - chain.chainId != 0, - string(abi.encodePacked("StdChains getChain(string): Chain with alias \"", chainAlias, "\" not found.")) - ); - - chain = getChainWithUpdatedRpcUrl(chainAlias, chain); - } - - function getChain(uint256 chainId) internal virtual returns (Chain memory chain) { - require(chainId != 0, "StdChains getChain(uint256): Chain ID cannot be 0."); - initializeStdChains(); - string memory chainAlias = idToAlias[chainId]; - - chain = chains[chainAlias]; - - require( - chain.chainId != 0, - string(abi.encodePacked("StdChains getChain(uint256): Chain with ID ", vm.toString(chainId), " not found.")) - ); - - chain = getChainWithUpdatedRpcUrl(chainAlias, chain); - } - - // set chain info, with priority to argument's rpcUrl field. - function setChain(string memory chainAlias, ChainData memory chain) internal virtual { - require( - bytes(chainAlias).length != 0, - "StdChains setChain(string,ChainData): Chain alias cannot be the empty string." - ); - - require(chain.chainId != 0, "StdChains setChain(string,ChainData): Chain ID cannot be 0."); - - initializeStdChains(); - string memory foundAlias = idToAlias[chain.chainId]; - - require( - bytes(foundAlias).length == 0 || keccak256(bytes(foundAlias)) == keccak256(bytes(chainAlias)), - string( - abi.encodePacked( - "StdChains setChain(string,ChainData): Chain ID ", - vm.toString(chain.chainId), - " already used by \"", - foundAlias, - "\"." - ) - ) - ); - - uint256 oldChainId = chains[chainAlias].chainId; - delete idToAlias[oldChainId]; - - chains[chainAlias] = - Chain({name: chain.name, chainId: chain.chainId, chainAlias: chainAlias, rpcUrl: chain.rpcUrl}); - idToAlias[chain.chainId] = chainAlias; - } - - // set chain info, with priority to argument's rpcUrl field. - function setChain(string memory chainAlias, Chain memory chain) internal virtual { - setChain(chainAlias, ChainData({name: chain.name, chainId: chain.chainId, rpcUrl: chain.rpcUrl})); - } - - function _toUpper(string memory str) private pure returns (string memory) { - bytes memory strb = bytes(str); - bytes memory copy = new bytes(strb.length); - for (uint256 i = 0; i < strb.length; i++) { - bytes1 b = strb[i]; - if (b >= 0x61 && b <= 0x7A) { - copy[i] = bytes1(uint8(b) - 32); - } else { - copy[i] = b; - } - } - return string(copy); - } - - // lookup rpcUrl, in descending order of priority: - // current -> config (foundry.toml) -> environment variable -> default - function getChainWithUpdatedRpcUrl(string memory chainAlias, Chain memory chain) private returns (Chain memory) { - if (bytes(chain.rpcUrl).length == 0) { - try vm.rpcUrl(chainAlias) returns (string memory configRpcUrl) { - chain.rpcUrl = configRpcUrl; - } catch (bytes memory err) { - string memory envName = string(abi.encodePacked(_toUpper(chainAlias), "_RPC_URL")); - if (fallbackToDefaultRpcUrls) { - chain.rpcUrl = vm.envOr(envName, defaultRpcUrls[chainAlias]); - } else { - chain.rpcUrl = vm.envString(envName); - } - // distinguish 'not found' from 'cannot read' - bytes memory notFoundError = - abi.encodeWithSignature("CheatCodeError", string(abi.encodePacked("invalid rpc url ", chainAlias))); - if (keccak256(notFoundError) != keccak256(err) || bytes(chain.rpcUrl).length == 0) { - /// @solidity memory-safe-assembly - assembly { - revert(add(32, err), mload(err)) - } - } - } - } - return chain; - } - - function setFallbackToDefaultRpcUrls(bool useDefault) internal { - fallbackToDefaultRpcUrls = useDefault; - } - - function initializeStdChains() private { - if (stdChainsInitialized) return; - - stdChainsInitialized = true; - - // If adding an RPC here, make sure to test the default RPC URL in `testRpcs` - setChainWithDefaultRpcUrl("anvil", ChainData("Anvil", 31337, "http://127.0.0.1:8545")); - setChainWithDefaultRpcUrl( - "mainnet", ChainData("Mainnet", 1, "https://mainnet.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") - ); - setChainWithDefaultRpcUrl( - "goerli", ChainData("Goerli", 5, "https://goerli.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") - ); - setChainWithDefaultRpcUrl( - "sepolia", ChainData("Sepolia", 11155111, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") - ); - setChainWithDefaultRpcUrl("optimism", ChainData("Optimism", 10, "https://mainnet.optimism.io")); - setChainWithDefaultRpcUrl("optimism_goerli", ChainData("Optimism Goerli", 420, "https://goerli.optimism.io")); - setChainWithDefaultRpcUrl("arbitrum_one", ChainData("Arbitrum One", 42161, "https://arb1.arbitrum.io/rpc")); - setChainWithDefaultRpcUrl( - "arbitrum_one_goerli", ChainData("Arbitrum One Goerli", 421613, "https://goerli-rollup.arbitrum.io/rpc") - ); - setChainWithDefaultRpcUrl("arbitrum_nova", ChainData("Arbitrum Nova", 42170, "https://nova.arbitrum.io/rpc")); - setChainWithDefaultRpcUrl("polygon", ChainData("Polygon", 137, "https://polygon-rpc.com")); - setChainWithDefaultRpcUrl( - "polygon_mumbai", ChainData("Polygon Mumbai", 80001, "https://rpc-mumbai.maticvigil.com") - ); - setChainWithDefaultRpcUrl("avalanche", ChainData("Avalanche", 43114, "https://api.avax.network/ext/bc/C/rpc")); - setChainWithDefaultRpcUrl( - "avalanche_fuji", ChainData("Avalanche Fuji", 43113, "https://api.avax-test.network/ext/bc/C/rpc") - ); - setChainWithDefaultRpcUrl( - "bnb_smart_chain", ChainData("BNB Smart Chain", 56, "https://bsc-dataseed1.binance.org") - ); - setChainWithDefaultRpcUrl( - "bnb_smart_chain_testnet", - ChainData("BNB Smart Chain Testnet", 97, "https://rpc.ankr.com/bsc_testnet_chapel") - ); - setChainWithDefaultRpcUrl("gnosis_chain", ChainData("Gnosis Chain", 100, "https://rpc.gnosischain.com")); - } - - // set chain info, with priority to chainAlias' rpc url in foundry.toml - function setChainWithDefaultRpcUrl(string memory chainAlias, ChainData memory chain) private { - string memory rpcUrl = chain.rpcUrl; - defaultRpcUrls[chainAlias] = rpcUrl; - chain.rpcUrl = ""; - setChain(chainAlias, chain); - chain.rpcUrl = rpcUrl; // restore argument - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdCheats.sol b/packages/wallet-contracts/lib/forge-std/src/StdCheats.sol deleted file mode 100644 index d4d56701f8..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdCheats.sol +++ /dev/null @@ -1,639 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {StdStorage, stdStorage} from "./StdStorage.sol"; -import {Vm} from "./Vm.sol"; - -abstract contract StdCheatsSafe { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - bool private gasMeteringOff; - - // Data structures to parse Transaction objects from the broadcast artifact - // that conform to EIP1559. The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct RawTx1559 { - string[] arguments; - address contractAddress; - string contractName; - // json value name = function - string functionSig; - bytes32 hash; - // json value name = tx - RawTx1559Detail txDetail; - // json value name = type - string opcode; - } - - struct RawTx1559Detail { - AccessList[] accessList; - bytes data; - address from; - bytes gas; - bytes nonce; - address to; - bytes txType; - bytes value; - } - - struct Tx1559 { - string[] arguments; - address contractAddress; - string contractName; - string functionSig; - bytes32 hash; - Tx1559Detail txDetail; - string opcode; - } - - struct Tx1559Detail { - AccessList[] accessList; - bytes data; - address from; - uint256 gas; - uint256 nonce; - address to; - uint256 txType; - uint256 value; - } - - // Data structures to parse Transaction objects from the broadcast artifact - // that DO NOT conform to EIP1559. The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct TxLegacy { - string[] arguments; - address contractAddress; - string contractName; - string functionSig; - string hash; - string opcode; - TxDetailLegacy transaction; - } - - struct TxDetailLegacy { - AccessList[] accessList; - uint256 chainId; - bytes data; - address from; - uint256 gas; - uint256 gasPrice; - bytes32 hash; - uint256 nonce; - bytes1 opcode; - bytes32 r; - bytes32 s; - uint256 txType; - address to; - uint8 v; - uint256 value; - } - - struct AccessList { - address accessAddress; - bytes32[] storageKeys; - } - - // Data structures to parse Receipt objects from the broadcast artifact. - // The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct RawReceipt { - bytes32 blockHash; - bytes blockNumber; - address contractAddress; - bytes cumulativeGasUsed; - bytes effectiveGasPrice; - address from; - bytes gasUsed; - RawReceiptLog[] logs; - bytes logsBloom; - bytes status; - address to; - bytes32 transactionHash; - bytes transactionIndex; - } - - struct Receipt { - bytes32 blockHash; - uint256 blockNumber; - address contractAddress; - uint256 cumulativeGasUsed; - uint256 effectiveGasPrice; - address from; - uint256 gasUsed; - ReceiptLog[] logs; - bytes logsBloom; - uint256 status; - address to; - bytes32 transactionHash; - uint256 transactionIndex; - } - - // Data structures to parse the entire broadcast artifact, assuming the - // transactions conform to EIP1559. - - struct EIP1559ScriptArtifact { - string[] libraries; - string path; - string[] pending; - Receipt[] receipts; - uint256 timestamp; - Tx1559[] transactions; - TxReturn[] txReturns; - } - - struct RawEIP1559ScriptArtifact { - string[] libraries; - string path; - string[] pending; - RawReceipt[] receipts; - TxReturn[] txReturns; - uint256 timestamp; - RawTx1559[] transactions; - } - - struct RawReceiptLog { - // json value = address - address logAddress; - bytes32 blockHash; - bytes blockNumber; - bytes data; - bytes logIndex; - bool removed; - bytes32[] topics; - bytes32 transactionHash; - bytes transactionIndex; - bytes transactionLogIndex; - } - - struct ReceiptLog { - // json value = address - address logAddress; - bytes32 blockHash; - uint256 blockNumber; - bytes data; - uint256 logIndex; - bytes32[] topics; - uint256 transactionIndex; - uint256 transactionLogIndex; - bool removed; - } - - struct TxReturn { - string internalType; - string value; - } - - struct Account { - address addr; - uint256 key; - } - - function assumeNoPrecompiles(address addr) internal virtual { - // Assembly required since `block.chainid` was introduced in 0.8.0. - uint256 chainId; - assembly { - chainId := chainid() - } - assumeNoPrecompiles(addr, chainId); - } - - function assumeNoPrecompiles(address addr, uint256 chainId) internal pure virtual { - // Note: For some chains like Optimism these are technically predeploys (i.e. bytecode placed at a specific - // address), but the same rationale for excluding them applies so we include those too. - - // These should be present on all EVM-compatible chains. - vm.assume(addr < address(0x1) || addr > address(0x9)); - - // forgefmt: disable-start - if (chainId == 10 || chainId == 420) { - // https://github.com/ethereum-optimism/optimism/blob/eaa371a0184b56b7ca6d9eb9cb0a2b78b2ccd864/op-bindings/predeploys/addresses.go#L6-L21 - vm.assume(addr < address(0x4200000000000000000000000000000000000000) || addr > address(0x4200000000000000000000000000000000000800)); - } else if (chainId == 42161 || chainId == 421613) { - // https://developer.arbitrum.io/useful-addresses#arbitrum-precompiles-l2-same-on-all-arb-chains - vm.assume(addr < address(0x0000000000000000000000000000000000000064) || addr > address(0x0000000000000000000000000000000000000068)); - } else if (chainId == 43114 || chainId == 43113) { - // https://github.com/ava-labs/subnet-evm/blob/47c03fd007ecaa6de2c52ea081596e0a88401f58/precompile/params.go#L18-L59 - vm.assume(addr < address(0x0100000000000000000000000000000000000000) || addr > address(0x01000000000000000000000000000000000000ff)); - vm.assume(addr < address(0x0200000000000000000000000000000000000000) || addr > address(0x02000000000000000000000000000000000000FF)); - vm.assume(addr < address(0x0300000000000000000000000000000000000000) || addr > address(0x03000000000000000000000000000000000000Ff)); - } - // forgefmt: disable-end - } - - function readEIP1559ScriptArtifact(string memory path) - internal - view - virtual - returns (EIP1559ScriptArtifact memory) - { - string memory data = vm.readFile(path); - bytes memory parsedData = vm.parseJson(data); - RawEIP1559ScriptArtifact memory rawArtifact = abi.decode(parsedData, (RawEIP1559ScriptArtifact)); - EIP1559ScriptArtifact memory artifact; - artifact.libraries = rawArtifact.libraries; - artifact.path = rawArtifact.path; - artifact.timestamp = rawArtifact.timestamp; - artifact.pending = rawArtifact.pending; - artifact.txReturns = rawArtifact.txReturns; - artifact.receipts = rawToConvertedReceipts(rawArtifact.receipts); - artifact.transactions = rawToConvertedEIPTx1559s(rawArtifact.transactions); - return artifact; - } - - function rawToConvertedEIPTx1559s(RawTx1559[] memory rawTxs) internal pure virtual returns (Tx1559[] memory) { - Tx1559[] memory txs = new Tx1559[](rawTxs.length); - for (uint256 i; i < rawTxs.length; i++) { - txs[i] = rawToConvertedEIPTx1559(rawTxs[i]); - } - return txs; - } - - function rawToConvertedEIPTx1559(RawTx1559 memory rawTx) internal pure virtual returns (Tx1559 memory) { - Tx1559 memory transaction; - transaction.arguments = rawTx.arguments; - transaction.contractName = rawTx.contractName; - transaction.functionSig = rawTx.functionSig; - transaction.hash = rawTx.hash; - transaction.txDetail = rawToConvertedEIP1559Detail(rawTx.txDetail); - transaction.opcode = rawTx.opcode; - return transaction; - } - - function rawToConvertedEIP1559Detail(RawTx1559Detail memory rawDetail) - internal - pure - virtual - returns (Tx1559Detail memory) - { - Tx1559Detail memory txDetail; - txDetail.data = rawDetail.data; - txDetail.from = rawDetail.from; - txDetail.to = rawDetail.to; - txDetail.nonce = _bytesToUint(rawDetail.nonce); - txDetail.txType = _bytesToUint(rawDetail.txType); - txDetail.value = _bytesToUint(rawDetail.value); - txDetail.gas = _bytesToUint(rawDetail.gas); - txDetail.accessList = rawDetail.accessList; - return txDetail; - } - - function readTx1559s(string memory path) internal view virtual returns (Tx1559[] memory) { - string memory deployData = vm.readFile(path); - bytes memory parsedDeployData = vm.parseJson(deployData, ".transactions"); - RawTx1559[] memory rawTxs = abi.decode(parsedDeployData, (RawTx1559[])); - return rawToConvertedEIPTx1559s(rawTxs); - } - - function readTx1559(string memory path, uint256 index) internal view virtual returns (Tx1559 memory) { - string memory deployData = vm.readFile(path); - string memory key = string(abi.encodePacked(".transactions[", vm.toString(index), "]")); - bytes memory parsedDeployData = vm.parseJson(deployData, key); - RawTx1559 memory rawTx = abi.decode(parsedDeployData, (RawTx1559)); - return rawToConvertedEIPTx1559(rawTx); - } - - // Analogous to readTransactions, but for receipts. - function readReceipts(string memory path) internal view virtual returns (Receipt[] memory) { - string memory deployData = vm.readFile(path); - bytes memory parsedDeployData = vm.parseJson(deployData, ".receipts"); - RawReceipt[] memory rawReceipts = abi.decode(parsedDeployData, (RawReceipt[])); - return rawToConvertedReceipts(rawReceipts); - } - - function readReceipt(string memory path, uint256 index) internal view virtual returns (Receipt memory) { - string memory deployData = vm.readFile(path); - string memory key = string(abi.encodePacked(".receipts[", vm.toString(index), "]")); - bytes memory parsedDeployData = vm.parseJson(deployData, key); - RawReceipt memory rawReceipt = abi.decode(parsedDeployData, (RawReceipt)); - return rawToConvertedReceipt(rawReceipt); - } - - function rawToConvertedReceipts(RawReceipt[] memory rawReceipts) internal pure virtual returns (Receipt[] memory) { - Receipt[] memory receipts = new Receipt[](rawReceipts.length); - for (uint256 i; i < rawReceipts.length; i++) { - receipts[i] = rawToConvertedReceipt(rawReceipts[i]); - } - return receipts; - } - - function rawToConvertedReceipt(RawReceipt memory rawReceipt) internal pure virtual returns (Receipt memory) { - Receipt memory receipt; - receipt.blockHash = rawReceipt.blockHash; - receipt.to = rawReceipt.to; - receipt.from = rawReceipt.from; - receipt.contractAddress = rawReceipt.contractAddress; - receipt.effectiveGasPrice = _bytesToUint(rawReceipt.effectiveGasPrice); - receipt.cumulativeGasUsed = _bytesToUint(rawReceipt.cumulativeGasUsed); - receipt.gasUsed = _bytesToUint(rawReceipt.gasUsed); - receipt.status = _bytesToUint(rawReceipt.status); - receipt.transactionIndex = _bytesToUint(rawReceipt.transactionIndex); - receipt.blockNumber = _bytesToUint(rawReceipt.blockNumber); - receipt.logs = rawToConvertedReceiptLogs(rawReceipt.logs); - receipt.logsBloom = rawReceipt.logsBloom; - receipt.transactionHash = rawReceipt.transactionHash; - return receipt; - } - - function rawToConvertedReceiptLogs(RawReceiptLog[] memory rawLogs) - internal - pure - virtual - returns (ReceiptLog[] memory) - { - ReceiptLog[] memory logs = new ReceiptLog[](rawLogs.length); - for (uint256 i; i < rawLogs.length; i++) { - logs[i].logAddress = rawLogs[i].logAddress; - logs[i].blockHash = rawLogs[i].blockHash; - logs[i].blockNumber = _bytesToUint(rawLogs[i].blockNumber); - logs[i].data = rawLogs[i].data; - logs[i].logIndex = _bytesToUint(rawLogs[i].logIndex); - logs[i].topics = rawLogs[i].topics; - logs[i].transactionIndex = _bytesToUint(rawLogs[i].transactionIndex); - logs[i].transactionLogIndex = _bytesToUint(rawLogs[i].transactionLogIndex); - logs[i].removed = rawLogs[i].removed; - } - return logs; - } - - // Deploy a contract by fetching the contract bytecode from - // the artifacts directory - // e.g. `deployCode(code, abi.encode(arg1,arg2,arg3))` - function deployCode(string memory what, bytes memory args) internal virtual returns (address addr) { - bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); - /// @solidity memory-safe-assembly - assembly { - addr := create(0, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,bytes): Deployment failed."); - } - - function deployCode(string memory what) internal virtual returns (address addr) { - bytes memory bytecode = vm.getCode(what); - /// @solidity memory-safe-assembly - assembly { - addr := create(0, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string): Deployment failed."); - } - - /// @dev deploy contract with value on construction - function deployCode(string memory what, bytes memory args, uint256 val) internal virtual returns (address addr) { - bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); - /// @solidity memory-safe-assembly - assembly { - addr := create(val, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,bytes,uint256): Deployment failed."); - } - - function deployCode(string memory what, uint256 val) internal virtual returns (address addr) { - bytes memory bytecode = vm.getCode(what); - /// @solidity memory-safe-assembly - assembly { - addr := create(val, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,uint256): Deployment failed."); - } - - // creates a labeled address and the corresponding private key - function makeAddrAndKey(string memory name) internal virtual returns (address addr, uint256 privateKey) { - privateKey = uint256(keccak256(abi.encodePacked(name))); - addr = vm.addr(privateKey); - vm.label(addr, name); - } - - // creates a labeled address - function makeAddr(string memory name) internal virtual returns (address addr) { - (addr,) = makeAddrAndKey(name); - } - - // creates a struct containing both a labeled address and the corresponding private key - function makeAccount(string memory name) internal virtual returns (Account memory account) { - (account.addr, account.key) = makeAddrAndKey(name); - } - - function deriveRememberKey(string memory mnemonic, uint32 index) - internal - virtual - returns (address who, uint256 privateKey) - { - privateKey = vm.deriveKey(mnemonic, index); - who = vm.rememberKey(privateKey); - } - - function _bytesToUint(bytes memory b) private pure returns (uint256) { - require(b.length <= 32, "StdCheats _bytesToUint(bytes): Bytes length exceeds 32."); - return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); - } - - function isFork() internal view virtual returns (bool status) { - try vm.activeFork() { - status = true; - } catch (bytes memory) {} - } - - modifier skipWhenForking() { - if (!isFork()) { - _; - } - } - - modifier skipWhenNotForking() { - if (isFork()) { - _; - } - } - - modifier noGasMetering() { - vm.pauseGasMetering(); - // To prevent turning gas monitoring back on with nested functions that use this modifier, - // we check if gasMetering started in the off position. If it did, we don't want to turn - // it back on until we exit the top level function that used the modifier - // - // i.e. funcA() noGasMetering { funcB() }, where funcB has noGasMetering as well. - // funcA will have `gasStartedOff` as false, funcB will have it as true, - // so we only turn metering back on at the end of the funcA - bool gasStartedOff = gasMeteringOff; - gasMeteringOff = true; - - _; - - // if gas metering was on when this modifier was called, turn it back on at the end - if (!gasStartedOff) { - gasMeteringOff = false; - vm.resumeGasMetering(); - } - } - - // a cheat for fuzzing addresses that are payable only - // see https://github.com/foundry-rs/foundry/issues/3631 - function assumePayable(address addr) internal virtual { - (bool success,) = payable(addr).call{value: 0}(""); - vm.assume(success); - } -} - -// Wrappers around cheatcodes to avoid footguns -abstract contract StdCheats is StdCheatsSafe { - using stdStorage for StdStorage; - - StdStorage private stdstore; - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - // Skip forward or rewind time by the specified number of seconds - function skip(uint256 time) internal virtual { - vm.warp(block.timestamp + time); - } - - function rewind(uint256 time) internal virtual { - vm.warp(block.timestamp - time); - } - - // Setup a prank from an address that has some ether - function hoax(address msgSender) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.prank(msgSender); - } - - function hoax(address msgSender, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.prank(msgSender); - } - - function hoax(address msgSender, address origin) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.prank(msgSender, origin); - } - - function hoax(address msgSender, address origin, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.prank(msgSender, origin); - } - - // Start perpetual prank from an address that has some ether - function startHoax(address msgSender) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.startPrank(msgSender); - } - - function startHoax(address msgSender, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.startPrank(msgSender); - } - - // Start perpetual prank from an address that has some ether - // tx.origin is set to the origin parameter - function startHoax(address msgSender, address origin) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.startPrank(msgSender, origin); - } - - function startHoax(address msgSender, address origin, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.startPrank(msgSender, origin); - } - - function changePrank(address msgSender) internal virtual { - vm.stopPrank(); - vm.startPrank(msgSender); - } - - function changePrank(address msgSender, address txOrigin) internal virtual { - vm.stopPrank(); - vm.startPrank(msgSender, txOrigin); - } - - // The same as Vm's `deal` - // Use the alternative signature for ERC20 tokens - function deal(address to, uint256 give) internal virtual { - vm.deal(to, give); - } - - // Set the balance of an account for any ERC20 token - // Use the alternative signature to update `totalSupply` - function deal(address token, address to, uint256 give) internal virtual { - deal(token, to, give, false); - } - - // Set the balance of an account for any ERC1155 token - // Use the alternative signature to update `totalSupply` - function dealERC1155(address token, address to, uint256 id, uint256 give) internal virtual { - dealERC1155(token, to, id, give, false); - } - - function deal(address token, address to, uint256 give, bool adjust) internal virtual { - // get current balance - (, bytes memory balData) = token.call(abi.encodeWithSelector(0x70a08231, to)); - uint256 prevBal = abi.decode(balData, (uint256)); - - // update balance - stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(give); - - // update total supply - if (adjust) { - (, bytes memory totSupData) = token.call(abi.encodeWithSelector(0x18160ddd)); - uint256 totSup = abi.decode(totSupData, (uint256)); - if (give < prevBal) { - totSup -= (prevBal - give); - } else { - totSup += (give - prevBal); - } - stdstore.target(token).sig(0x18160ddd).checked_write(totSup); - } - } - - function dealERC1155(address token, address to, uint256 id, uint256 give, bool adjust) internal virtual { - // get current balance - (, bytes memory balData) = token.call(abi.encodeWithSelector(0x00fdd58e, to, id)); - uint256 prevBal = abi.decode(balData, (uint256)); - - // update balance - stdstore.target(token).sig(0x00fdd58e).with_key(to).with_key(id).checked_write(give); - - // update total supply - if (adjust) { - (, bytes memory totSupData) = token.call(abi.encodeWithSelector(0xbd85b039, id)); - require( - totSupData.length != 0, - "StdCheats deal(address,address,uint,uint,bool): target contract is not ERC1155Supply." - ); - uint256 totSup = abi.decode(totSupData, (uint256)); - if (give < prevBal) { - totSup -= (prevBal - give); - } else { - totSup += (give - prevBal); - } - stdstore.target(token).sig(0xbd85b039).with_key(id).checked_write(totSup); - } - } - - function dealERC721(address token, address to, uint256 id) internal virtual { - // check if token id is already minted and the actual owner. - (bool successMinted, bytes memory ownerData) = token.staticcall(abi.encodeWithSelector(0x6352211e, id)); - require(successMinted, "StdCheats deal(address,address,uint,bool): id not minted."); - - // get owner current balance - (, bytes memory fromBalData) = token.call(abi.encodeWithSelector(0x70a08231, abi.decode(ownerData, (address)))); - uint256 fromPrevBal = abi.decode(fromBalData, (uint256)); - - // get new user current balance - (, bytes memory toBalData) = token.call(abi.encodeWithSelector(0x70a08231, to)); - uint256 toPrevBal = abi.decode(toBalData, (uint256)); - - // update balances - stdstore.target(token).sig(0x70a08231).with_key(abi.decode(ownerData, (address))).checked_write(--fromPrevBal); - stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(++toPrevBal); - - // update owner - stdstore.target(token).sig(0x6352211e).with_key(id).checked_write(to); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdError.sol b/packages/wallet-contracts/lib/forge-std/src/StdError.sol deleted file mode 100644 index a302191faa..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdError.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: MIT -// Panics work for versions >=0.8.0, but we lowered the pragma to make this compatible with Test -pragma solidity >=0.6.2 <0.9.0; - -library stdError { - bytes public constant assertionError = abi.encodeWithSignature("Panic(uint256)", 0x01); - bytes public constant arithmeticError = abi.encodeWithSignature("Panic(uint256)", 0x11); - bytes public constant divisionError = abi.encodeWithSignature("Panic(uint256)", 0x12); - bytes public constant enumConversionError = abi.encodeWithSignature("Panic(uint256)", 0x21); - bytes public constant encodeStorageError = abi.encodeWithSignature("Panic(uint256)", 0x22); - bytes public constant popError = abi.encodeWithSignature("Panic(uint256)", 0x31); - bytes public constant indexOOBError = abi.encodeWithSignature("Panic(uint256)", 0x32); - bytes public constant memOverflowError = abi.encodeWithSignature("Panic(uint256)", 0x41); - bytes public constant zeroVarError = abi.encodeWithSignature("Panic(uint256)", 0x51); -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdInvariant.sol b/packages/wallet-contracts/lib/forge-std/src/StdInvariant.sol deleted file mode 100644 index efa1129ef6..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdInvariant.sol +++ /dev/null @@ -1,92 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -contract StdInvariant { - struct FuzzSelector { - address addr; - bytes4[] selectors; - } - - address[] private _excludedContracts; - address[] private _excludedSenders; - address[] private _targetedContracts; - address[] private _targetedSenders; - - string[] private _excludedArtifacts; - string[] private _targetedArtifacts; - - FuzzSelector[] private _targetedArtifactSelectors; - FuzzSelector[] private _targetedSelectors; - - // Functions for users: - // These are intended to be called in tests. - - function excludeContract(address newExcludedContract_) internal { - _excludedContracts.push(newExcludedContract_); - } - - function excludeSender(address newExcludedSender_) internal { - _excludedSenders.push(newExcludedSender_); - } - - function excludeArtifact(string memory newExcludedArtifact_) internal { - _excludedArtifacts.push(newExcludedArtifact_); - } - - function targetArtifact(string memory newTargetedArtifact_) internal { - _targetedArtifacts.push(newTargetedArtifact_); - } - - function targetArtifactSelector(FuzzSelector memory newTargetedArtifactSelector_) internal { - _targetedArtifactSelectors.push(newTargetedArtifactSelector_); - } - - function targetContract(address newTargetedContract_) internal { - _targetedContracts.push(newTargetedContract_); - } - - function targetSelector(FuzzSelector memory newTargetedSelector_) internal { - _targetedSelectors.push(newTargetedSelector_); - } - - function targetSender(address newTargetedSender_) internal { - _targetedSenders.push(newTargetedSender_); - } - - // Functions for forge: - // These are called by forge to run invariant tests and don't need to be called in tests. - - function excludeArtifacts() public view returns (string[] memory excludedArtifacts_) { - excludedArtifacts_ = _excludedArtifacts; - } - - function excludeContracts() public view returns (address[] memory excludedContracts_) { - excludedContracts_ = _excludedContracts; - } - - function excludeSenders() public view returns (address[] memory excludedSenders_) { - excludedSenders_ = _excludedSenders; - } - - function targetArtifacts() public view returns (string[] memory targetedArtifacts_) { - targetedArtifacts_ = _targetedArtifacts; - } - - function targetArtifactSelectors() public view returns (FuzzSelector[] memory targetedArtifactSelectors_) { - targetedArtifactSelectors_ = _targetedArtifactSelectors; - } - - function targetContracts() public view returns (address[] memory targetedContracts_) { - targetedContracts_ = _targetedContracts; - } - - function targetSelectors() public view returns (FuzzSelector[] memory targetedSelectors_) { - targetedSelectors_ = _targetedSelectors; - } - - function targetSenders() public view returns (address[] memory targetedSenders_) { - targetedSenders_ = _targetedSenders; - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdJson.sol b/packages/wallet-contracts/lib/forge-std/src/StdJson.sol deleted file mode 100644 index 014e6b15e5..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdJson.sol +++ /dev/null @@ -1,179 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.0 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {VmSafe} from "./Vm.sol"; - -// Helpers for parsing and writing JSON files -// To parse: -// ``` -// using stdJson for string; -// string memory json = vm.readFile("some_peth"); -// json.parseUint(""); -// ``` -// To write: -// ``` -// using stdJson for string; -// string memory json = "deploymentArtifact"; -// Contract contract = new Contract(); -// json.serialize("contractAddress", address(contract)); -// json = json.serialize("deploymentTimes", uint(1)); -// // store the stringified JSON to the 'json' variable we have been using as a key -// // as we won't need it any longer -// string memory json2 = "finalArtifact"; -// string memory final = json2.serialize("depArtifact", json); -// final.write(""); -// ``` - -library stdJson { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function parseRaw(string memory json, string memory key) internal pure returns (bytes memory) { - return vm.parseJson(json, key); - } - - function readUint(string memory json, string memory key) internal returns (uint256) { - return vm.parseJsonUint(json, key); - } - - function readUintArray(string memory json, string memory key) internal returns (uint256[] memory) { - return vm.parseJsonUintArray(json, key); - } - - function readInt(string memory json, string memory key) internal returns (int256) { - return vm.parseJsonInt(json, key); - } - - function readIntArray(string memory json, string memory key) internal returns (int256[] memory) { - return vm.parseJsonIntArray(json, key); - } - - function readBytes32(string memory json, string memory key) internal returns (bytes32) { - return vm.parseJsonBytes32(json, key); - } - - function readBytes32Array(string memory json, string memory key) internal returns (bytes32[] memory) { - return vm.parseJsonBytes32Array(json, key); - } - - function readString(string memory json, string memory key) internal returns (string memory) { - return vm.parseJsonString(json, key); - } - - function readStringArray(string memory json, string memory key) internal returns (string[] memory) { - return vm.parseJsonStringArray(json, key); - } - - function readAddress(string memory json, string memory key) internal returns (address) { - return vm.parseJsonAddress(json, key); - } - - function readAddressArray(string memory json, string memory key) internal returns (address[] memory) { - return vm.parseJsonAddressArray(json, key); - } - - function readBool(string memory json, string memory key) internal returns (bool) { - return vm.parseJsonBool(json, key); - } - - function readBoolArray(string memory json, string memory key) internal returns (bool[] memory) { - return vm.parseJsonBoolArray(json, key); - } - - function readBytes(string memory json, string memory key) internal returns (bytes memory) { - return vm.parseJsonBytes(json, key); - } - - function readBytesArray(string memory json, string memory key) internal returns (bytes[] memory) { - return vm.parseJsonBytesArray(json, key); - } - - function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bool[] memory value) - internal - returns (string memory) - { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256[] memory value) - internal - returns (string memory) - { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256[] memory value) - internal - returns (string memory) - { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address[] memory value) - internal - returns (string memory) - { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string[] memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function write(string memory jsonKey, string memory path) internal { - vm.writeJson(jsonKey, path); - } - - function write(string memory jsonKey, string memory path, string memory valueKey) internal { - vm.writeJson(jsonKey, path, valueKey); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdMath.sol b/packages/wallet-contracts/lib/forge-std/src/StdMath.sol deleted file mode 100644 index 459523bdac..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdMath.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -library stdMath { - int256 private constant INT256_MIN = -57896044618658097711785492504343953926634992332820282019728792003956564819968; - - function abs(int256 a) internal pure returns (uint256) { - // Required or it will fail when `a = type(int256).min` - if (a == INT256_MIN) { - return 57896044618658097711785492504343953926634992332820282019728792003956564819968; - } - - return uint256(a > 0 ? a : -a); - } - - function delta(uint256 a, uint256 b) internal pure returns (uint256) { - return a > b ? a - b : b - a; - } - - function delta(int256 a, int256 b) internal pure returns (uint256) { - // a and b are of the same sign - // this works thanks to two's complement, the left-most bit is the sign bit - if ((a ^ b) > -1) { - return delta(abs(a), abs(b)); - } - - // a and b are of opposite signs - return abs(a) + abs(b); - } - - function percentDelta(uint256 a, uint256 b) internal pure returns (uint256) { - uint256 absDelta = delta(a, b); - - return absDelta * 1e18 / b; - } - - function percentDelta(int256 a, int256 b) internal pure returns (uint256) { - uint256 absDelta = delta(a, b); - uint256 absB = abs(b); - - return absDelta * 1e18 / absB; - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdStorage.sol b/packages/wallet-contracts/lib/forge-std/src/StdStorage.sol deleted file mode 100644 index 73a5ceb969..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdStorage.sol +++ /dev/null @@ -1,327 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {Vm} from "./Vm.sol"; - -struct StdStorage { - mapping(address => mapping(bytes4 => mapping(bytes32 => uint256))) slots; - mapping(address => mapping(bytes4 => mapping(bytes32 => bool))) finds; - bytes32[] _keys; - bytes4 _sig; - uint256 _depth; - address _target; - bytes32 _set; -} - -library stdStorageSafe { - event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot); - event WARNING_UninitedSlot(address who, uint256 slot); - - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function sigs(string memory sigStr) internal pure returns (bytes4) { - return bytes4(keccak256(bytes(sigStr))); - } - - /// @notice find an arbitrary storage slot given a function sig, input data, address of the contract and a value to check against - // slot complexity: - // if flat, will be bytes32(uint256(uint)); - // if map, will be keccak256(abi.encode(key, uint(slot))); - // if deep map, will be keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot))))); - // if map struct, will be bytes32(uint256(keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot)))))) + structFieldDepth); - function find(StdStorage storage self) internal returns (uint256) { - address who = self._target; - bytes4 fsig = self._sig; - uint256 field_depth = self._depth; - bytes32[] memory ins = self._keys; - - // calldata to test against - if (self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]) { - return self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]; - } - bytes memory cald = abi.encodePacked(fsig, flatten(ins)); - vm.record(); - bytes32 fdat; - { - (, bytes memory rdat) = who.staticcall(cald); - fdat = bytesToBytes32(rdat, 32 * field_depth); - } - - (bytes32[] memory reads,) = vm.accesses(address(who)); - if (reads.length == 1) { - bytes32 curr = vm.load(who, reads[0]); - if (curr == bytes32(0)) { - emit WARNING_UninitedSlot(who, uint256(reads[0])); - } - if (fdat != curr) { - require( - false, - "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported." - ); - } - emit SlotFound(who, fsig, keccak256(abi.encodePacked(ins, field_depth)), uint256(reads[0])); - self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = uint256(reads[0]); - self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = true; - } else if (reads.length > 1) { - for (uint256 i = 0; i < reads.length; i++) { - bytes32 prev = vm.load(who, reads[i]); - if (prev == bytes32(0)) { - emit WARNING_UninitedSlot(who, uint256(reads[i])); - } - // store - vm.store(who, reads[i], bytes32(hex"1337")); - bool success; - bytes memory rdat; - { - (success, rdat) = who.staticcall(cald); - fdat = bytesToBytes32(rdat, 32 * field_depth); - } - - if (success && fdat == bytes32(hex"1337")) { - // we found which of the slots is the actual one - emit SlotFound(who, fsig, keccak256(abi.encodePacked(ins, field_depth)), uint256(reads[i])); - self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = uint256(reads[i]); - self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = true; - vm.store(who, reads[i], prev); - break; - } - vm.store(who, reads[i], prev); - } - } else { - revert("stdStorage find(StdStorage): No storage use detected for target."); - } - - require( - self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))], - "stdStorage find(StdStorage): Slot(s) not found." - ); - - delete self._target; - delete self._sig; - delete self._keys; - delete self._depth; - - return self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]; - } - - function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { - self._target = _target; - return self; - } - - function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { - self._sig = _sig; - return self; - } - - function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { - self._sig = sigs(_sig); - return self; - } - - function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { - self._keys.push(bytes32(uint256(uint160(who)))); - return self; - } - - function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { - self._keys.push(bytes32(amt)); - return self; - } - - function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { - self._keys.push(key); - return self; - } - - function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { - self._depth = _depth; - return self; - } - - function read(StdStorage storage self) private returns (bytes memory) { - address t = self._target; - uint256 s = find(self); - return abi.encode(vm.load(t, bytes32(s))); - } - - function read_bytes32(StdStorage storage self) internal returns (bytes32) { - return abi.decode(read(self), (bytes32)); - } - - function read_bool(StdStorage storage self) internal returns (bool) { - int256 v = read_int(self); - if (v == 0) return false; - if (v == 1) return true; - revert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); - } - - function read_address(StdStorage storage self) internal returns (address) { - return abi.decode(read(self), (address)); - } - - function read_uint(StdStorage storage self) internal returns (uint256) { - return abi.decode(read(self), (uint256)); - } - - function read_int(StdStorage storage self) internal returns (int256) { - return abi.decode(read(self), (int256)); - } - - function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) { - bytes32 out; - - uint256 max = b.length > 32 ? 32 : b.length; - for (uint256 i = 0; i < max; i++) { - out |= bytes32(b[offset + i] & 0xFF) >> (i * 8); - } - return out; - } - - function flatten(bytes32[] memory b) private pure returns (bytes memory) { - bytes memory result = new bytes(b.length * 32); - for (uint256 i = 0; i < b.length; i++) { - bytes32 k = b[i]; - /// @solidity memory-safe-assembly - assembly { - mstore(add(result, add(32, mul(32, i))), k) - } - } - - return result; - } -} - -library stdStorage { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function sigs(string memory sigStr) internal pure returns (bytes4) { - return stdStorageSafe.sigs(sigStr); - } - - function find(StdStorage storage self) internal returns (uint256) { - return stdStorageSafe.find(self); - } - - function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { - return stdStorageSafe.target(self, _target); - } - - function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { - return stdStorageSafe.sig(self, _sig); - } - - function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { - return stdStorageSafe.sig(self, _sig); - } - - function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, who); - } - - function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, amt); - } - - function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, key); - } - - function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { - return stdStorageSafe.depth(self, _depth); - } - - function checked_write(StdStorage storage self, address who) internal { - checked_write(self, bytes32(uint256(uint160(who)))); - } - - function checked_write(StdStorage storage self, uint256 amt) internal { - checked_write(self, bytes32(amt)); - } - - function checked_write(StdStorage storage self, bool write) internal { - bytes32 t; - /// @solidity memory-safe-assembly - assembly { - t := write - } - checked_write(self, t); - } - - function checked_write(StdStorage storage self, bytes32 set) internal { - address who = self._target; - bytes4 fsig = self._sig; - uint256 field_depth = self._depth; - bytes32[] memory ins = self._keys; - - bytes memory cald = abi.encodePacked(fsig, flatten(ins)); - if (!self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]) { - find(self); - } - bytes32 slot = bytes32(self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]); - - bytes32 fdat; - { - (, bytes memory rdat) = who.staticcall(cald); - fdat = bytesToBytes32(rdat, 32 * field_depth); - } - bytes32 curr = vm.load(who, slot); - - if (fdat != curr) { - require( - false, - "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported." - ); - } - vm.store(who, slot, set); - delete self._target; - delete self._sig; - delete self._keys; - delete self._depth; - } - - function read_bytes32(StdStorage storage self) internal returns (bytes32) { - return stdStorageSafe.read_bytes32(self); - } - - function read_bool(StdStorage storage self) internal returns (bool) { - return stdStorageSafe.read_bool(self); - } - - function read_address(StdStorage storage self) internal returns (address) { - return stdStorageSafe.read_address(self); - } - - function read_uint(StdStorage storage self) internal returns (uint256) { - return stdStorageSafe.read_uint(self); - } - - function read_int(StdStorage storage self) internal returns (int256) { - return stdStorageSafe.read_int(self); - } - - // Private function so needs to be copied over - function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) { - bytes32 out; - - uint256 max = b.length > 32 ? 32 : b.length; - for (uint256 i = 0; i < max; i++) { - out |= bytes32(b[offset + i] & 0xFF) >> (i * 8); - } - return out; - } - - // Private function so needs to be copied over - function flatten(bytes32[] memory b) private pure returns (bytes memory) { - bytes memory result = new bytes(b.length * 32); - for (uint256 i = 0; i < b.length; i++) { - bytes32 k = b[i]; - /// @solidity memory-safe-assembly - assembly { - mstore(add(result, add(32, mul(32, i))), k) - } - } - - return result; - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdStyle.sol b/packages/wallet-contracts/lib/forge-std/src/StdStyle.sol deleted file mode 100644 index 46f4e81cb4..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdStyle.sol +++ /dev/null @@ -1,333 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -import {Vm} from "./Vm.sol"; - -library StdStyle { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - string constant RED = "\u001b[91m"; - string constant GREEN = "\u001b[92m"; - string constant YELLOW = "\u001b[93m"; - string constant BLUE = "\u001b[94m"; - string constant MAGENTA = "\u001b[95m"; - string constant CYAN = "\u001b[96m"; - string constant BOLD = "\u001b[1m"; - string constant DIM = "\u001b[2m"; - string constant ITALIC = "\u001b[3m"; - string constant UNDERLINE = "\u001b[4m"; - string constant INVERSE = "\u001b[7m"; - string constant RESET = "\u001b[0m"; - - function styleConcat(string memory style, string memory self) private pure returns (string memory) { - return string(abi.encodePacked(style, self, RESET)); - } - - function red(string memory self) internal pure returns (string memory) { - return styleConcat(RED, self); - } - - function red(uint256 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(int256 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(address self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(bool self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function redBytes(bytes memory self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function redBytes32(bytes32 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function green(string memory self) internal pure returns (string memory) { - return styleConcat(GREEN, self); - } - - function green(uint256 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(int256 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(address self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(bool self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function greenBytes(bytes memory self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function greenBytes32(bytes32 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function yellow(string memory self) internal pure returns (string memory) { - return styleConcat(YELLOW, self); - } - - function yellow(uint256 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(int256 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(address self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(bool self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellowBytes(bytes memory self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellowBytes32(bytes32 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function blue(string memory self) internal pure returns (string memory) { - return styleConcat(BLUE, self); - } - - function blue(uint256 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(int256 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(address self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(bool self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blueBytes(bytes memory self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blueBytes32(bytes32 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function magenta(string memory self) internal pure returns (string memory) { - return styleConcat(MAGENTA, self); - } - - function magenta(uint256 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(int256 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(address self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(bool self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magentaBytes(bytes memory self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magentaBytes32(bytes32 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function cyan(string memory self) internal pure returns (string memory) { - return styleConcat(CYAN, self); - } - - function cyan(uint256 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(int256 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(address self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(bool self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyanBytes(bytes memory self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyanBytes32(bytes32 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function bold(string memory self) internal pure returns (string memory) { - return styleConcat(BOLD, self); - } - - function bold(uint256 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(int256 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(address self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(bool self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function boldBytes(bytes memory self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function boldBytes32(bytes32 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function dim(string memory self) internal pure returns (string memory) { - return styleConcat(DIM, self); - } - - function dim(uint256 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(int256 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(address self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(bool self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dimBytes(bytes memory self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dimBytes32(bytes32 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function italic(string memory self) internal pure returns (string memory) { - return styleConcat(ITALIC, self); - } - - function italic(uint256 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(int256 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(address self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(bool self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italicBytes(bytes memory self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italicBytes32(bytes32 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function underline(string memory self) internal pure returns (string memory) { - return styleConcat(UNDERLINE, self); - } - - function underline(uint256 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(int256 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(address self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(bool self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underlineBytes(bytes memory self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underlineBytes32(bytes32 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function inverse(string memory self) internal pure returns (string memory) { - return styleConcat(INVERSE, self); - } - - function inverse(uint256 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(int256 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(address self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(bool self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverseBytes(bytes memory self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverseBytes32(bytes32 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/StdUtils.sol b/packages/wallet-contracts/lib/forge-std/src/StdUtils.sol deleted file mode 100644 index e55b4b90c1..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/StdUtils.sol +++ /dev/null @@ -1,192 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {IMulticall3} from "./interfaces/IMulticall3.sol"; -import {VmSafe} from "./Vm.sol"; - -abstract contract StdUtils { - /*////////////////////////////////////////////////////////////////////////// - CONSTANTS - //////////////////////////////////////////////////////////////////////////*/ - - IMulticall3 private constant multicall = IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11); - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; - uint256 private constant INT256_MIN_ABS = - 57896044618658097711785492504343953926634992332820282019728792003956564819968; - uint256 private constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - // Used by default when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. - address private constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - - /*////////////////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////////////////*/ - - function _bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) { - require(min <= max, "StdUtils bound(uint256,uint256,uint256): Max is less than min."); - // If x is between min and max, return x directly. This is to ensure that dictionary values - // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188 - if (x >= min && x <= max) return x; - - uint256 size = max - min + 1; - - // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side. - // This helps ensure coverage of the min/max values. - if (x <= 3 && size > x) return min + x; - if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) return max - (UINT256_MAX - x); - - // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive. - if (x > max) { - uint256 diff = x - max; - uint256 rem = diff % size; - if (rem == 0) return max; - result = min + rem - 1; - } else if (x < min) { - uint256 diff = min - x; - uint256 rem = diff % size; - if (rem == 0) return min; - result = max - rem + 1; - } - } - - function bound(uint256 x, uint256 min, uint256 max) internal view virtual returns (uint256 result) { - result = _bound(x, min, max); - console2_log("Bound Result", result); - } - - function _bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) { - require(min <= max, "StdUtils bound(int256,int256,int256): Max is less than min."); - - // Shifting all int256 values to uint256 to use _bound function. The range of two types are: - // int256 : -(2**255) ~ (2**255 - 1) - // uint256: 0 ~ (2**256 - 1) - // So, add 2**255, INT256_MIN_ABS to the integer values. - // - // If the given integer value is -2**255, we cannot use `-uint256(-x)` because of the overflow. - // So, use `~uint256(x) + 1` instead. - uint256 _x = x < 0 ? (INT256_MIN_ABS - ~uint256(x) - 1) : (uint256(x) + INT256_MIN_ABS); - uint256 _min = min < 0 ? (INT256_MIN_ABS - ~uint256(min) - 1) : (uint256(min) + INT256_MIN_ABS); - uint256 _max = max < 0 ? (INT256_MIN_ABS - ~uint256(max) - 1) : (uint256(max) + INT256_MIN_ABS); - - uint256 y = _bound(_x, _min, _max); - - // To move it back to int256 value, subtract INT256_MIN_ABS at here. - result = y < INT256_MIN_ABS ? int256(~(INT256_MIN_ABS - y) + 1) : int256(y - INT256_MIN_ABS); - } - - function bound(int256 x, int256 min, int256 max) internal view virtual returns (int256 result) { - result = _bound(x, min, max); - console2_log("Bound result", vm.toString(result)); - } - - function bytesToUint(bytes memory b) internal pure virtual returns (uint256) { - require(b.length <= 32, "StdUtils bytesToUint(bytes): Bytes length exceeds 32."); - return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); - } - - /// @dev Compute the address a contract will be deployed at for a given deployer address and nonce - /// @notice adapted from Solmate implementation (https://github.com/Rari-Capital/solmate/blob/main/src/utils/LibRLP.sol) - function computeCreateAddress(address deployer, uint256 nonce) internal pure virtual returns (address) { - // forgefmt: disable-start - // The integer zero is treated as an empty byte string, and as a result it only has a length prefix, 0x80, computed via 0x80 + 0. - // A one byte integer uses its own value as its length prefix, there is no additional "0x80 + length" prefix that comes before it. - if (nonce == 0x00) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), deployer, bytes1(0x80)))); - if (nonce <= 0x7f) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), deployer, uint8(nonce)))); - - // Nonces greater than 1 byte all follow a consistent encoding scheme, where each value is preceded by a prefix of 0x80 + length. - if (nonce <= 2**8 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd7), bytes1(0x94), deployer, bytes1(0x81), uint8(nonce)))); - if (nonce <= 2**16 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd8), bytes1(0x94), deployer, bytes1(0x82), uint16(nonce)))); - if (nonce <= 2**24 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd9), bytes1(0x94), deployer, bytes1(0x83), uint24(nonce)))); - // forgefmt: disable-end - - // More details about RLP encoding can be found here: https://eth.wiki/fundamentals/rlp - // 0xda = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x84 ++ nonce) - // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex) - // 0x84 = 0x80 + 0x04 (0x04 = the bytes length of the nonce, 4 bytes, in hex) - // We assume nobody can have a nonce large enough to require more than 32 bytes. - return addressFromLast20Bytes( - keccak256(abi.encodePacked(bytes1(0xda), bytes1(0x94), deployer, bytes1(0x84), uint32(nonce))) - ); - } - - function computeCreate2Address(bytes32 salt, bytes32 initcodeHash, address deployer) - internal - pure - virtual - returns (address) - { - return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, initcodeHash))); - } - - /// @dev returns the address of a contract created with CREATE2 using the default CREATE2 deployer - function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) internal pure returns (address) { - return computeCreate2Address(salt, initCodeHash, CREATE2_FACTORY); - } - - /// @dev returns the hash of the init code (creation code + no args) used in CREATE2 with no constructor arguments - /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode - function hashInitCode(bytes memory creationCode) internal pure returns (bytes32) { - return hashInitCode(creationCode, ""); - } - - /// @dev returns the hash of the init code (creation code + ABI-encoded args) used in CREATE2 - /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode - /// @param args the ABI-encoded arguments to the constructor of C - function hashInitCode(bytes memory creationCode, bytes memory args) internal pure returns (bytes32) { - return keccak256(abi.encodePacked(creationCode, args)); - } - - // Performs a single call with Multicall3 to query the ERC-20 token balances of the given addresses. - function getTokenBalances(address token, address[] memory addresses) - internal - virtual - returns (uint256[] memory balances) - { - uint256 tokenCodeSize; - assembly { - tokenCodeSize := extcodesize(token) - } - require(tokenCodeSize > 0, "StdUtils getTokenBalances(address,address[]): Token address is not a contract."); - - // ABI encode the aggregate call to Multicall3. - uint256 length = addresses.length; - IMulticall3.Call[] memory calls = new IMulticall3.Call[](length); - for (uint256 i = 0; i < length; ++i) { - // 0x70a08231 = bytes4("balanceOf(address)")) - calls[i] = IMulticall3.Call({target: token, callData: abi.encodeWithSelector(0x70a08231, (addresses[i]))}); - } - - // Make the aggregate call. - (, bytes[] memory returnData) = multicall.aggregate(calls); - - // ABI decode the return data and return the balances. - balances = new uint256[](length); - for (uint256 i = 0; i < length; ++i) { - balances[i] = abi.decode(returnData[i], (uint256)); - } - } - - /*////////////////////////////////////////////////////////////////////////// - PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////////////////*/ - - function addressFromLast20Bytes(bytes32 bytesValue) private pure returns (address) { - return address(uint160(uint256(bytesValue))); - } - - // Used to prevent the compilation of console, which shortens the compilation time when console is not used elsewhere. - - function console2_log(string memory p0, uint256 p1) private view { - (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string,uint256)", p0, p1)); - status; - } - - function console2_log(string memory p0, string memory p1) private view { - (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string,string)", p0, p1)); - status; - } -} diff --git a/packages/wallet-contracts/lib/forge-std/src/Test.sol b/packages/wallet-contracts/lib/forge-std/src/Test.sol deleted file mode 100644 index 9ff5cb8db1..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/Test.sol +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -// 💬 ABOUT -// Standard Library's default Test - -// 🧩 MODULES -import {console} from "./console.sol"; -import {console2} from "./console2.sol"; -import {StdAssertions} from "./StdAssertions.sol"; -import {StdChains} from "./StdChains.sol"; -import {StdCheats} from "./StdCheats.sol"; -import {stdError} from "./StdError.sol"; -import {StdInvariant} from "./StdInvariant.sol"; -import {stdJson} from "./StdJson.sol"; -import {stdMath} from "./StdMath.sol"; -import {StdStorage, stdStorage} from "./StdStorage.sol"; -import {StdUtils} from "./StdUtils.sol"; -import {Vm} from "./Vm.sol"; -import {StdStyle} from "./StdStyle.sol"; - -// 📦 BOILERPLATE -import {TestBase} from "./Base.sol"; -import {DSTest} from "ds-test/test.sol"; - -// ⭐️ TEST -abstract contract Test is DSTest, StdAssertions, StdChains, StdCheats, StdInvariant, StdUtils, TestBase { -// Note: IS_TEST() must return true. -// Note: Must have failure system, https://github.com/dapphub/ds-test/blob/cd98eff28324bfac652e63a239a60632a761790b/src/test.sol#L39-L76. -} diff --git a/packages/wallet-contracts/lib/forge-std/src/Vm.sol b/packages/wallet-contracts/lib/forge-std/src/Vm.sol deleted file mode 100644 index e48ebaa53c..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/Vm.sol +++ /dev/null @@ -1,490 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -// Cheatcodes are marked as view/pure/none using the following rules: -// 0. A call's observable behaviour includes its return value, logs, reverts and state writes, -// 1. If you can influence a later call's observable behaviour, you're neither `view` nor `pure (you are modifying some state be it the EVM, interpreter, filesystem, etc), -// 2. Otherwise if you can be influenced by an earlier call, or if reading some state, you're `view`, -// 3. Otherwise you're `pure`. - -interface VmSafe { - struct Log { - bytes32[] topics; - bytes data; - address emitter; - } - - struct Rpc { - string key; - string url; - } - - struct DirEntry { - string errorMessage; - string path; - uint64 depth; - bool isDir; - bool isSymlink; - } - - struct FsMetadata { - bool isDir; - bool isSymlink; - uint256 length; - bool readOnly; - uint256 modified; - uint256 accessed; - uint256 created; - } - - // Loads a storage slot from an address - function load(address target, bytes32 slot) external view returns (bytes32 data); - // Signs data - function sign(uint256 privateKey, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); - // Gets the address for a given private key - function addr(uint256 privateKey) external pure returns (address keyAddr); - // Gets the nonce of an account - function getNonce(address account) external view returns (uint64 nonce); - // Performs a foreign function call via the terminal - function ffi(string[] calldata commandInput) external returns (bytes memory result); - // Sets environment variables - function setEnv(string calldata name, string calldata value) external; - // Reads environment variables, (name) => (value) - function envBool(string calldata name) external view returns (bool value); - function envUint(string calldata name) external view returns (uint256 value); - function envInt(string calldata name) external view returns (int256 value); - function envAddress(string calldata name) external view returns (address value); - function envBytes32(string calldata name) external view returns (bytes32 value); - function envString(string calldata name) external view returns (string memory value); - function envBytes(string calldata name) external view returns (bytes memory value); - // Reads environment variables as arrays - function envBool(string calldata name, string calldata delim) external view returns (bool[] memory value); - function envUint(string calldata name, string calldata delim) external view returns (uint256[] memory value); - function envInt(string calldata name, string calldata delim) external view returns (int256[] memory value); - function envAddress(string calldata name, string calldata delim) external view returns (address[] memory value); - function envBytes32(string calldata name, string calldata delim) external view returns (bytes32[] memory value); - function envString(string calldata name, string calldata delim) external view returns (string[] memory value); - function envBytes(string calldata name, string calldata delim) external view returns (bytes[] memory value); - // Read environment variables with default value - function envOr(string calldata name, bool defaultValue) external returns (bool value); - function envOr(string calldata name, uint256 defaultValue) external returns (uint256 value); - function envOr(string calldata name, int256 defaultValue) external returns (int256 value); - function envOr(string calldata name, address defaultValue) external returns (address value); - function envOr(string calldata name, bytes32 defaultValue) external returns (bytes32 value); - function envOr(string calldata name, string calldata defaultValue) external returns (string memory value); - function envOr(string calldata name, bytes calldata defaultValue) external returns (bytes memory value); - // Read environment variables as arrays with default value - function envOr(string calldata name, string calldata delim, bool[] calldata defaultValue) - external - returns (bool[] memory value); - function envOr(string calldata name, string calldata delim, uint256[] calldata defaultValue) - external - returns (uint256[] memory value); - function envOr(string calldata name, string calldata delim, int256[] calldata defaultValue) - external - returns (int256[] memory value); - function envOr(string calldata name, string calldata delim, address[] calldata defaultValue) - external - returns (address[] memory value); - function envOr(string calldata name, string calldata delim, bytes32[] calldata defaultValue) - external - returns (bytes32[] memory value); - function envOr(string calldata name, string calldata delim, string[] calldata defaultValue) - external - returns (string[] memory value); - function envOr(string calldata name, string calldata delim, bytes[] calldata defaultValue) - external - returns (bytes[] memory value); - // Records all storage reads and writes - function record() external; - // Gets all accessed reads and write slot from a recording session, for a given address - function accesses(address target) external returns (bytes32[] memory readSlots, bytes32[] memory writeSlots); - // Gets the _creation_ bytecode from an artifact file. Takes in the relative path to the json file - function getCode(string calldata artifactPath) external view returns (bytes memory creationBytecode); - // Gets the _deployed_ bytecode from an artifact file. Takes in the relative path to the json file - function getDeployedCode(string calldata artifactPath) external view returns (bytes memory runtimeBytecode); - // Labels an address in call traces - function label(address account, string calldata newLabel) external; - // Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain - function broadcast() external; - // Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain - function broadcast(address signer) external; - // Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain - function broadcast(uint256 privateKey) external; - // Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain - function startBroadcast() external; - // Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain - function startBroadcast(address signer) external; - // Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain - function startBroadcast(uint256 privateKey) external; - // Stops collecting onchain transactions - function stopBroadcast() external; - - // Get the path of the current project root. - function projectRoot() external view returns (string memory path); - // Reads the entire content of file to string. `path` is relative to the project root. - function readFile(string calldata path) external view returns (string memory data); - // Reads the entire content of file as binary. `path` is relative to the project root. - function readFileBinary(string calldata path) external view returns (bytes memory data); - // Reads next line of file to string. - function readLine(string calldata path) external view returns (string memory line); - // Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. - // `path` is relative to the project root. - function writeFile(string calldata path, string calldata data) external; - // Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. - // `path` is relative to the project root. - function writeFileBinary(string calldata path, bytes calldata data) external; - // Writes line to file, creating a file if it does not exist. - // `path` is relative to the project root. - function writeLine(string calldata path, string calldata data) external; - // Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. - // `path` is relative to the project root. - function closeFile(string calldata path) external; - // Removes a file from the filesystem. - // This cheatcode will revert in the following situations, but is not limited to just these cases: - // - `path` points to a directory. - // - The file doesn't exist. - // - The user lacks permissions to remove the file. - // `path` is relative to the project root. - function removeFile(string calldata path) external; - // Creates a new, empty directory at the provided path. - // This cheatcode will revert in the following situations, but is not limited to just these cases: - // - User lacks permissions to modify `path`. - // - A parent of the given path doesn't exist and `recursive` is false. - // - `path` already exists and `recursive` is false. - // `path` is relative to the project root. - function createDir(string calldata path, bool recursive) external; - // Removes a directory at the provided path. - // This cheatcode will revert in the following situations, but is not limited to just these cases: - // - `path` doesn't exist. - // - `path` isn't a directory. - // - User lacks permissions to modify `path`. - // - The directory is not empty and `recursive` is false. - // `path` is relative to the project root. - function removeDir(string calldata path, bool recursive) external; - // Reads the directory at the given path recursively, up to `max_depth`. - // `max_depth` defaults to 1, meaning only the direct children of the given directory will be returned. - // Follows symbolic links if `follow_links` is true. - function readDir(string calldata path) external view returns (DirEntry[] memory entries); - function readDir(string calldata path, uint64 maxDepth) external view returns (DirEntry[] memory entries); - function readDir(string calldata path, uint64 maxDepth, bool followLinks) - external - view - returns (DirEntry[] memory entries); - // Reads a symbolic link, returning the path that the link points to. - // This cheatcode will revert in the following situations, but is not limited to just these cases: - // - `path` is not a symbolic link. - // - `path` does not exist. - function readLink(string calldata linkPath) external view returns (string memory targetPath); - // Given a path, query the file system to get information about a file, directory, etc. - function fsMetadata(string calldata path) external view returns (FsMetadata memory metadata); - - // Convert values to a string - function toString(address value) external pure returns (string memory stringifiedValue); - function toString(bytes calldata value) external pure returns (string memory stringifiedValue); - function toString(bytes32 value) external pure returns (string memory stringifiedValue); - function toString(bool value) external pure returns (string memory stringifiedValue); - function toString(uint256 value) external pure returns (string memory stringifiedValue); - function toString(int256 value) external pure returns (string memory stringifiedValue); - // Convert values from a string - function parseBytes(string calldata stringifiedValue) external pure returns (bytes memory parsedValue); - function parseAddress(string calldata stringifiedValue) external pure returns (address parsedValue); - function parseUint(string calldata stringifiedValue) external pure returns (uint256 parsedValue); - function parseInt(string calldata stringifiedValue) external pure returns (int256 parsedValue); - function parseBytes32(string calldata stringifiedValue) external pure returns (bytes32 parsedValue); - function parseBool(string calldata stringifiedValue) external pure returns (bool parsedValue); - // Record all the transaction logs - function recordLogs() external; - // Gets all the recorded logs - function getRecordedLogs() external returns (Log[] memory logs); - // Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path m/44'/60'/0'/0/{index} - function deriveKey(string calldata mnemonic, uint32 index) external pure returns (uint256 privateKey); - // Derive a private key from a provided mnenomic string (or mnenomic file path) at {derivationPath}{index} - function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index) - external - pure - returns (uint256 privateKey); - // Adds a private key to the local forge wallet and returns the address - function rememberKey(uint256 privateKey) external returns (address keyAddr); - // - // parseJson - // - // ---- - // In case the returned value is a JSON object, it's encoded as a ABI-encoded tuple. As JSON objects - // don't have the notion of ordered, but tuples do, they JSON object is encoded with it's fields ordered in - // ALPHABETICAL order. That means that in order to successfully decode the tuple, we need to define a tuple that - // encodes the fields in the same order, which is alphabetical. In the case of Solidity structs, they are encoded - // as tuples, with the attributes in the order in which they are defined. - // For example: json = { 'a': 1, 'b': 0xa4tb......3xs} - // a: uint256 - // b: address - // To decode that json, we need to define a struct or a tuple as follows: - // struct json = { uint256 a; address b; } - // If we defined a json struct with the opposite order, meaning placing the address b first, it would try to - // decode the tuple in that order, and thus fail. - // ---- - // Given a string of JSON, return it as ABI-encoded - function parseJson(string calldata json, string calldata key) external pure returns (bytes memory abiEncodedData); - function parseJson(string calldata json) external pure returns (bytes memory abiEncodedData); - - // The following parseJson cheatcodes will do type coercion, for the type that they indicate. - // For example, parseJsonUint will coerce all values to a uint256. That includes stringified numbers '12' - // and hex numbers '0xEF'. - // Type coercion works ONLY for discrete values or arrays. That means that the key must return a value or array, not - // a JSON object. - function parseJsonUint(string calldata, string calldata) external returns (uint256); - function parseJsonUintArray(string calldata, string calldata) external returns (uint256[] memory); - function parseJsonInt(string calldata, string calldata) external returns (int256); - function parseJsonIntArray(string calldata, string calldata) external returns (int256[] memory); - function parseJsonBool(string calldata, string calldata) external returns (bool); - function parseJsonBoolArray(string calldata, string calldata) external returns (bool[] memory); - function parseJsonAddress(string calldata, string calldata) external returns (address); - function parseJsonAddressArray(string calldata, string calldata) external returns (address[] memory); - function parseJsonString(string calldata, string calldata) external returns (string memory); - function parseJsonStringArray(string calldata, string calldata) external returns (string[] memory); - function parseJsonBytes(string calldata, string calldata) external returns (bytes memory); - function parseJsonBytesArray(string calldata, string calldata) external returns (bytes[] memory); - function parseJsonBytes32(string calldata, string calldata) external returns (bytes32); - function parseJsonBytes32Array(string calldata, string calldata) external returns (bytes32[] memory); - - // Serialize a key and value to a JSON object stored in-memory that can be later written to a file - // It returns the stringified version of the specific JSON file up to that moment. - function serializeBool(string calldata objectKey, string calldata valueKey, bool value) - external - returns (string memory json); - function serializeUint(string calldata objectKey, string calldata valueKey, uint256 value) - external - returns (string memory json); - function serializeInt(string calldata objectKey, string calldata valueKey, int256 value) - external - returns (string memory json); - function serializeAddress(string calldata objectKey, string calldata valueKey, address value) - external - returns (string memory json); - function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32 value) - external - returns (string memory json); - function serializeString(string calldata objectKey, string calldata valueKey, string calldata value) - external - returns (string memory json); - function serializeBytes(string calldata objectKey, string calldata valueKey, bytes calldata value) - external - returns (string memory json); - - function serializeBool(string calldata objectKey, string calldata valueKey, bool[] calldata values) - external - returns (string memory json); - function serializeUint(string calldata objectKey, string calldata valueKey, uint256[] calldata values) - external - returns (string memory json); - function serializeInt(string calldata objectKey, string calldata valueKey, int256[] calldata values) - external - returns (string memory json); - function serializeAddress(string calldata objectKey, string calldata valueKey, address[] calldata values) - external - returns (string memory json); - function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32[] calldata values) - external - returns (string memory json); - function serializeString(string calldata objectKey, string calldata valueKey, string[] calldata values) - external - returns (string memory json); - function serializeBytes(string calldata objectKey, string calldata valueKey, bytes[] calldata values) - external - returns (string memory json); - - // - // writeJson - // - // ---- - // Write a serialized JSON object to a file. If the file exists, it will be overwritten. - // Let's assume we want to write the following JSON to a file: - // - // { "boolean": true, "number": 342, "object": { "title": "finally json serialization" } } - // - // ``` - // string memory json1 = "some key"; - // vm.serializeBool(json1, "boolean", true); - // vm.serializeBool(json1, "number", uint256(342)); - // json2 = "some other key"; - // string memory output = vm.serializeString(json2, "title", "finally json serialization"); - // string memory finalJson = vm.serialize(json1, "object", output); - // vm.writeJson(finalJson, "./output/example.json"); - // ``` - // The critical insight is that every invocation of serialization will return the stringified version of the JSON - // up to that point. That means we can construct arbitrary JSON objects and then use the return stringified version - // to serialize them as values to another JSON object. - // - // json1 and json2 are simply keys used by the backend to keep track of the objects. So vm.serializeJson(json1,..) - // will find the object in-memory that is keyed by "some key". - function writeJson(string calldata json, string calldata path) external; - // Write a serialized JSON object to an **existing** JSON file, replacing a value with key = - // This is useful to replace a specific value of a JSON file, without having to parse the entire thing - function writeJson(string calldata json, string calldata path, string calldata valueKey) external; - // Returns the RPC url for the given alias - function rpcUrl(string calldata rpcAlias) external view returns (string memory json); - // Returns all rpc urls and their aliases `[alias, url][]` - function rpcUrls() external view returns (string[2][] memory urls); - // Returns all rpc urls and their aliases as structs. - function rpcUrlStructs() external view returns (Rpc[] memory urls); - // If the condition is false, discard this run's fuzz inputs and generate new ones. - function assume(bool condition) external pure; - // Pauses gas metering (i.e. gas usage is not counted). Noop if already paused. - function pauseGasMetering() external; - // Resumes gas metering (i.e. gas usage is counted again). Noop if already on. - function resumeGasMetering() external; - // Writes a breakpoint to jump to in the debugger - function breakpoint(string calldata char) external; - // Writes a conditional breakpoint to jump to in the debugger - function breakpoint(string calldata char, bool value) external; -} - -interface Vm is VmSafe { - // Sets block.timestamp - function warp(uint256 newTimestamp) external; - // Sets block.height - function roll(uint256 newHeight) external; - // Sets block.basefee - function fee(uint256 newBasefee) external; - // Sets block.difficulty - function difficulty(uint256 newDifficulty) external; - // Sets block.chainid - function chainId(uint256 newChainId) external; - // Sets tx.gasprice - function txGasPrice(uint256 newGasPrice) external; - // Stores a value to an address' storage slot. - function store(address target, bytes32 slot, bytes32 value) external; - // Sets the nonce of an account; must be higher than the current nonce of the account - function setNonce(address account, uint64 newNonce) external; - // Sets the *next* call's msg.sender to be the input address - function prank(address msgSender) external; - // Sets all subsequent calls' msg.sender to be the input address until `stopPrank` is called - function startPrank(address msgSender) external; - // Sets the *next* call's msg.sender to be the input address, and the tx.origin to be the second input - function prank(address msgSender, address txOrigin) external; - // Sets all subsequent calls' msg.sender to be the input address until `stopPrank` is called, and the tx.origin to be the second input - function startPrank(address msgSender, address txOrigin) external; - // Resets subsequent calls' msg.sender to be `address(this)` - function stopPrank() external; - // Sets an address' balance - function deal(address account, uint256 newBalance) external; - // Sets an address' code - function etch(address target, bytes calldata newRuntimeBytecode) external; - // Expects an error on next call - function expectRevert(bytes calldata revertData) external; - function expectRevert(bytes4 revertData) external; - function expectRevert() external; - - // Prepare an expected log with all four checks enabled. - // Call this function, then emit an event, then call a function. Internally after the call, we check if - // logs were emitted in the expected order with the expected topics and data. - // Second form also checks supplied address against emitting contract. - function expectEmit() external; - function expectEmit(address emitter) external; - - // Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData). - // Call this function, then emit an event, then call a function. Internally after the call, we check if - // logs were emitted in the expected order with the expected topics and data (as specified by the booleans). - // Second form also checks supplied address against emitting contract. - function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) external; - function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) - external; - - // Mocks a call to an address, returning specified data. - // Calldata can either be strict or a partial match, e.g. if you only - // pass a Solidity selector to the expected calldata, then the entire Solidity - // function will be mocked. - function mockCall(address callee, bytes calldata data, bytes calldata returnData) external; - // Mocks a call to an address with a specific msg.value, returning specified data. - // Calldata match takes precedence over msg.value in case of ambiguity. - function mockCall(address callee, uint256 msgValue, bytes calldata data, bytes calldata returnData) external; - // Reverts a call to an address with specified revert data. - function mockCallRevert(address callee, bytes calldata data, bytes calldata revertData) external; - // Reverts a call to an address with a specific msg.value, with specified revert data. - function mockCallRevert(address callee, uint256 msgValue, bytes calldata data, bytes calldata revertData) - external; - // Clears all mocked calls - function clearMockedCalls() external; - // Expects a call to an address with the specified calldata. - // Calldata can either be a strict or a partial match - function expectCall(address callee, bytes calldata data) external; - // Expects given number of calls to an address with the specified calldata. - function expectCall(address callee, bytes calldata data, uint64 count) external; - // Expects a call to an address with the specified msg.value and calldata - function expectCall(address callee, uint256 msgValue, bytes calldata data) external; - // Expects given number of calls to an address with the specified msg.value and calldata - function expectCall(address callee, uint256 msgValue, bytes calldata data, uint64 count) external; - // Expect a call to an address with the specified msg.value, gas, and calldata. - function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data) external; - // Expects given number of calls to an address with the specified msg.value, gas, and calldata. - function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data, uint64 count) external; - // Expect a call to an address with the specified msg.value and calldata, and a *minimum* amount of gas. - function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data) external; - // Expect given number of calls to an address with the specified msg.value and calldata, and a *minimum* amount of gas. - function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data, uint64 count) - external; - // Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the current subcontext. If any other - // memory is written to, the test will fail. Can be called multiple times to add more ranges to the set. - function expectSafeMemory(uint64 min, uint64 max) external; - // Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the next created subcontext. - // If any other memory is written to, the test will fail. Can be called multiple times to add more ranges - // to the set. - function expectSafeMemoryCall(uint64 min, uint64 max) external; - // Sets block.coinbase - function coinbase(address newCoinbase) external; - // Snapshot the current state of the evm. - // Returns the id of the snapshot that was created. - // To revert a snapshot use `revertTo` - function snapshot() external returns (uint256 snapshotId); - // Revert the state of the EVM to a previous snapshot - // Takes the snapshot id to revert to. - // This deletes the snapshot and all snapshots taken after the given snapshot id. - function revertTo(uint256 snapshotId) external returns (bool success); - // Creates a new fork with the given endpoint and block and returns the identifier of the fork - function createFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); - // Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork - function createFork(string calldata urlOrAlias) external returns (uint256 forkId); - // Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, - // and returns the identifier of the fork - function createFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); - // Creates _and_ also selects a new fork with the given endpoint and block and returns the identifier of the fork - function createSelectFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); - // Creates _and_ also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before - // the transaction, returns the identifier of the fork - function createSelectFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); - // Creates _and_ also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork - function createSelectFork(string calldata urlOrAlias) external returns (uint256 forkId); - // Takes a fork identifier created by `createFork` and sets the corresponding forked state as active. - function selectFork(uint256 forkId) external; - /// Returns the identifier of the currently active fork. Reverts if no fork is currently active. - function activeFork() external view returns (uint256 forkId); - // Updates the currently active fork to given block number - // This is similar to `roll` but for the currently active fork - function rollFork(uint256 blockNumber) external; - // Updates the currently active fork to given transaction - // this will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block - function rollFork(bytes32 txHash) external; - // Updates the given fork to given block number - function rollFork(uint256 forkId, uint256 blockNumber) external; - // Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block - function rollFork(uint256 forkId, bytes32 txHash) external; - // Marks that the account(s) should use persistent storage across fork swaps in a multifork setup - // Meaning, changes made to the state of this account will be kept when switching forks - function makePersistent(address account) external; - function makePersistent(address account0, address account1) external; - function makePersistent(address account0, address account1, address account2) external; - function makePersistent(address[] calldata accounts) external; - // Revokes persistent status from the address, previously added via `makePersistent` - function revokePersistent(address account) external; - function revokePersistent(address[] calldata accounts) external; - // Returns true if the account is marked as persistent - function isPersistent(address account) external view returns (bool persistent); - // In forking mode, explicitly grant the given address cheatcode access - function allowCheatcodes(address account) external; - // Fetches the given transaction from the active fork and executes it on the current state - function transact(bytes32 txHash) external; - // Fetches the given transaction from the given fork and executes it on the current state - function transact(uint256 forkId, bytes32 txHash) external; -} diff --git a/packages/wallet-contracts/lib/forge-std/src/console.sol b/packages/wallet-contracts/lib/forge-std/src/console.sol deleted file mode 100644 index ad57e53687..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/console.sol +++ /dev/null @@ -1,1533 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -library console { - address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); - - function _sendLogPayload(bytes memory payload) private view { - uint256 payloadLength = payload.length; - address consoleAddress = CONSOLE_ADDRESS; - /// @solidity memory-safe-assembly - assembly { - let payloadStart := add(payload, 32) - let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) - } - } - - function log() internal view { - _sendLogPayload(abi.encodeWithSignature("log()")); - } - - function logInt(int p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); - } - - function logUint(uint p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); - } - - function logString(string memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function logBool(bool p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function logAddress(address p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function logBytes(bytes memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); - } - - function logBytes1(bytes1 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); - } - - function logBytes2(bytes2 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); - } - - function logBytes3(bytes3 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); - } - - function logBytes4(bytes4 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); - } - - function logBytes5(bytes5 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); - } - - function logBytes6(bytes6 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); - } - - function logBytes7(bytes7 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); - } - - function logBytes8(bytes8 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); - } - - function logBytes9(bytes9 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); - } - - function logBytes10(bytes10 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); - } - - function logBytes11(bytes11 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); - } - - function logBytes12(bytes12 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); - } - - function logBytes13(bytes13 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); - } - - function logBytes14(bytes14 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); - } - - function logBytes15(bytes15 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); - } - - function logBytes16(bytes16 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); - } - - function logBytes17(bytes17 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); - } - - function logBytes18(bytes18 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); - } - - function logBytes19(bytes19 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); - } - - function logBytes20(bytes20 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); - } - - function logBytes21(bytes21 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); - } - - function logBytes22(bytes22 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); - } - - function logBytes23(bytes23 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); - } - - function logBytes24(bytes24 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); - } - - function logBytes25(bytes25 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); - } - - function logBytes26(bytes26 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); - } - - function logBytes27(bytes27 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); - } - - function logBytes28(bytes28 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); - } - - function logBytes29(bytes29 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); - } - - function logBytes30(bytes30 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); - } - - function logBytes31(bytes31 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); - } - - function logBytes32(bytes32 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); - } - - function log(uint p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); - } - - function log(string memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function log(bool p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function log(address p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function log(uint p0, uint p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1)); - } - - function log(uint p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1)); - } - - function log(uint p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1)); - } - - function log(uint p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1)); - } - - function log(string memory p0, uint p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1)); - } - - function log(string memory p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); - } - - function log(string memory p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); - } - - function log(string memory p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); - } - - function log(bool p0, uint p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1)); - } - - function log(bool p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); - } - - function log(bool p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); - } - - function log(bool p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); - } - - function log(address p0, uint p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1)); - } - - function log(address p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); - } - - function log(address p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); - } - - function log(address p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); - } - - function log(uint p0, uint p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); - } - - function log(uint p0, uint p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); - } - - function log(uint p0, uint p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); - } - - function log(uint p0, uint p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); - } - - function log(uint p0, bool p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); - } - - function log(uint p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); - } - - function log(uint p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); - } - - function log(uint p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); - } - - function log(uint p0, address p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); - } - - function log(uint p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); - } - - function log(uint p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); - } - - function log(uint p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); - } - - function log(string memory p0, address p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); - } - - function log(string memory p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); - } - - function log(string memory p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); - } - - function log(string memory p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); - } - - function log(bool p0, uint p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); - } - - function log(bool p0, uint p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); - } - - function log(bool p0, uint p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); - } - - function log(bool p0, uint p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); - } - - function log(bool p0, bool p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); - } - - function log(bool p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); - } - - function log(bool p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); - } - - function log(bool p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); - } - - function log(bool p0, address p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); - } - - function log(bool p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); - } - - function log(bool p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); - } - - function log(bool p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); - } - - function log(address p0, uint p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); - } - - function log(address p0, uint p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); - } - - function log(address p0, uint p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); - } - - function log(address p0, uint p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); - } - - function log(address p0, string memory p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); - } - - function log(address p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); - } - - function log(address p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); - } - - function log(address p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); - } - - function log(address p0, bool p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); - } - - function log(address p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); - } - - function log(address p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); - } - - function log(address p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); - } - - function log(address p0, address p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); - } - - function log(address p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); - } - - function log(address p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); - } - - function log(address p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); - } - - function log(uint p0, uint p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); - } - -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/forge-std/src/console2.sol b/packages/wallet-contracts/lib/forge-std/src/console2.sol deleted file mode 100644 index 8596233d3c..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/console2.sol +++ /dev/null @@ -1,1546 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -/// @dev The original console.sol uses `int` and `uint` for computing function selectors, but it should -/// use `int256` and `uint256`. This modified version fixes that. This version is recommended -/// over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in -/// forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. -/// Reference: https://github.com/NomicFoundation/hardhat/issues/2178 -library console2 { - address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); - - function _sendLogPayload(bytes memory payload) private view { - uint256 payloadLength = payload.length; - address consoleAddress = CONSOLE_ADDRESS; - /// @solidity memory-safe-assembly - assembly { - let payloadStart := add(payload, 32) - let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) - } - } - - function log() internal view { - _sendLogPayload(abi.encodeWithSignature("log()")); - } - - function logInt(int256 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); - } - - function logUint(uint256 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); - } - - function logString(string memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function logBool(bool p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function logAddress(address p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function logBytes(bytes memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); - } - - function logBytes1(bytes1 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); - } - - function logBytes2(bytes2 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); - } - - function logBytes3(bytes3 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); - } - - function logBytes4(bytes4 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); - } - - function logBytes5(bytes5 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); - } - - function logBytes6(bytes6 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); - } - - function logBytes7(bytes7 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); - } - - function logBytes8(bytes8 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); - } - - function logBytes9(bytes9 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); - } - - function logBytes10(bytes10 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); - } - - function logBytes11(bytes11 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); - } - - function logBytes12(bytes12 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); - } - - function logBytes13(bytes13 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); - } - - function logBytes14(bytes14 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); - } - - function logBytes15(bytes15 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); - } - - function logBytes16(bytes16 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); - } - - function logBytes17(bytes17 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); - } - - function logBytes18(bytes18 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); - } - - function logBytes19(bytes19 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); - } - - function logBytes20(bytes20 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); - } - - function logBytes21(bytes21 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); - } - - function logBytes22(bytes22 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); - } - - function logBytes23(bytes23 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); - } - - function logBytes24(bytes24 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); - } - - function logBytes25(bytes25 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); - } - - function logBytes26(bytes26 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); - } - - function logBytes27(bytes27 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); - } - - function logBytes28(bytes28 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); - } - - function logBytes29(bytes29 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); - } - - function logBytes30(bytes30 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); - } - - function logBytes31(bytes31 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); - } - - function logBytes32(bytes32 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); - } - - function log(uint256 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); - } - - function log(int256 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); - } - - function log(string memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function log(bool p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function log(address p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function log(uint256 p0, uint256 p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1)); - } - - function log(uint256 p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1)); - } - - function log(uint256 p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1)); - } - - function log(uint256 p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1)); - } - - function log(string memory p0, uint256 p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); - } - - function log(string memory p0, int256 p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,int256)", p0, p1)); - } - - function log(string memory p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); - } - - function log(string memory p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); - } - - function log(string memory p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); - } - - function log(bool p0, uint256 p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1)); - } - - function log(bool p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); - } - - function log(bool p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); - } - - function log(bool p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); - } - - function log(address p0, uint256 p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1)); - } - - function log(address p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); - } - - function log(address p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); - } - - function log(address p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); - } - - function log(uint256 p0, uint256 p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); - } - - function log(string memory p0, address p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2)); - } - - function log(string memory p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); - } - - function log(string memory p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); - } - - function log(string memory p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); - } - - function log(bool p0, bool p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2)); - } - - function log(bool p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); - } - - function log(bool p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); - } - - function log(bool p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); - } - - function log(bool p0, address p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2)); - } - - function log(bool p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); - } - - function log(bool p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); - } - - function log(bool p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2)); - } - - function log(address p0, string memory p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2)); - } - - function log(address p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); - } - - function log(address p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); - } - - function log(address p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); - } - - function log(address p0, bool p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2)); - } - - function log(address p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); - } - - function log(address p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); - } - - function log(address p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); - } - - function log(address p0, address p1, uint256 p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2)); - } - - function log(address p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); - } - - function log(address p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); - } - - function log(address p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, uint256 p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); - } - -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC1155.sol b/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC1155.sol deleted file mode 100644 index f7dd2b4106..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC1155.sol +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC165.sol"; - -/// @title ERC-1155 Multi Token Standard -/// @dev See https://eips.ethereum.org/EIPS/eip-1155 -/// Note: The ERC-165 identifier for this interface is 0xd9b67a26. -interface IERC1155 is IERC165 { - /// @dev - /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). - /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). - /// - The `_from` argument MUST be the address of the holder whose balance is decreased. - /// - The `_to` argument MUST be the address of the recipient whose balance is increased. - /// - The `_id` argument MUST be the token type being transferred. - /// - The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by. - /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). - /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). - event TransferSingle( - address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value - ); - - /// @dev - /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). - /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). - /// - The `_from` argument MUST be the address of the holder whose balance is decreased. - /// - The `_to` argument MUST be the address of the recipient whose balance is increased. - /// - The `_ids` argument MUST be the list of tokens being transferred. - /// - The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by. - /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). - /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). - event TransferBatch( - address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values - ); - - /// @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absence of an event assumes disabled). - event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); - - /// @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986. - /// The URI MUST point to a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema". - event URI(string _value, uint256 indexed _id); - - /// @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). - /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). - /// - MUST revert if `_to` is the zero address. - /// - MUST revert if balance of holder for token `_id` is lower than the `_value` sent. - /// - MUST revert on any other error. - /// - MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). - /// - After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). - /// @param _from Source address - /// @param _to Target address - /// @param _id ID of the token type - /// @param _value Transfer amount - /// @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` - function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external; - - /// @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). - /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). - /// - MUST revert if `_to` is the zero address. - /// - MUST revert if length of `_ids` is not the same as length of `_values`. - /// - MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. - /// - MUST revert on any other error. - /// - MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). - /// - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). - /// - After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). - /// @param _from Source address - /// @param _to Target address - /// @param _ids IDs of each token type (order and length must match _values array) - /// @param _values Transfer amounts per token type (order and length must match _ids array) - /// @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` - function safeBatchTransferFrom( - address _from, - address _to, - uint256[] calldata _ids, - uint256[] calldata _values, - bytes calldata _data - ) external; - - /// @notice Get the balance of an account's tokens. - /// @param _owner The address of the token holder - /// @param _id ID of the token - /// @return The _owner's balance of the token type requested - function balanceOf(address _owner, uint256 _id) external view returns (uint256); - - /// @notice Get the balance of multiple account/token pairs - /// @param _owners The addresses of the token holders - /// @param _ids ID of the tokens - /// @return The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair) - function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) - external - view - returns (uint256[] memory); - - /// @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. - /// @dev MUST emit the ApprovalForAll event on success. - /// @param _operator Address to add to the set of authorized operators - /// @param _approved True if the operator is approved, false to revoke approval - function setApprovalForAll(address _operator, bool _approved) external; - - /// @notice Queries the approval status of an operator for a given owner. - /// @param _owner The owner of the tokens - /// @param _operator Address of authorized operator - /// @return True if the operator is approved, false if not - function isApprovedForAll(address _owner, address _operator) external view returns (bool); -} diff --git a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC165.sol b/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC165.sol deleted file mode 100644 index 9af4bf800f..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC165.sol +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -interface IERC165 { - /// @notice Query if a contract implements an interface - /// @param interfaceID The interface identifier, as specified in ERC-165 - /// @dev Interface identification is specified in ERC-165. This function - /// uses less than 30,000 gas. - /// @return `true` if the contract implements `interfaceID` and - /// `interfaceID` is not 0xffffffff, `false` otherwise - function supportsInterface(bytes4 interfaceID) external view returns (bool); -} diff --git a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC20.sol b/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC20.sol deleted file mode 100644 index ba40806c3b..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC20.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -/// @dev Interface of the ERC20 standard as defined in the EIP. -/// @dev This includes the optional name, symbol, and decimals metadata. -interface IERC20 { - /// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`). - event Transfer(address indexed from, address indexed to, uint256 value); - - /// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value` - /// is the new allowance. - event Approval(address indexed owner, address indexed spender, uint256 value); - - /// @notice Returns the amount of tokens in existence. - function totalSupply() external view returns (uint256); - - /// @notice Returns the amount of tokens owned by `account`. - function balanceOf(address account) external view returns (uint256); - - /// @notice Moves `amount` tokens from the caller's account to `to`. - function transfer(address to, uint256 amount) external returns (bool); - - /// @notice Returns the remaining number of tokens that `spender` is allowed - /// to spend on behalf of `owner` - function allowance(address owner, address spender) external view returns (uint256); - - /// @notice Sets `amount` as the allowance of `spender` over the caller's tokens. - /// @dev Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - function approve(address spender, uint256 amount) external returns (bool); - - /// @notice Moves `amount` tokens from `from` to `to` using the allowance mechanism. - /// `amount` is then deducted from the caller's allowance. - function transferFrom(address from, address to, uint256 amount) external returns (bool); - - /// @notice Returns the name of the token. - function name() external view returns (string memory); - - /// @notice Returns the symbol of the token. - function symbol() external view returns (string memory); - - /// @notice Returns the decimals places of the token. - function decimals() external view returns (uint8); -} diff --git a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC4626.sol b/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC4626.sol deleted file mode 100644 index bfe3a1155e..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC4626.sol +++ /dev/null @@ -1,190 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC20.sol"; - -/// @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in -/// https://eips.ethereum.org/EIPS/eip-4626 -interface IERC4626 is IERC20 { - event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares); - - event Withdraw( - address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares - ); - - /// @notice Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - /// @dev - /// - MUST be an ERC-20 token contract. - /// - MUST NOT revert. - function asset() external view returns (address assetTokenAddress); - - /// @notice Returns the total amount of the underlying asset that is “managed” by Vault. - /// @dev - /// - SHOULD include any compounding that occurs from yield. - /// - MUST be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT revert. - function totalAssets() external view returns (uint256 totalManagedAssets); - - /// @notice Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal - /// scenario where all the conditions are met. - /// @dev - /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT show any variations depending on the caller. - /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - /// - MUST NOT revert. - /// - /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - /// from. - function convertToShares(uint256 assets) external view returns (uint256 shares); - - /// @notice Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal - /// scenario where all the conditions are met. - /// @dev - /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT show any variations depending on the caller. - /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - /// - MUST NOT revert. - /// - /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - /// from. - function convertToAssets(uint256 shares) external view returns (uint256 assets); - - /// @notice Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, - /// through a deposit call. - /// @dev - /// - MUST return a limited value if receiver is subject to some deposit limit. - /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - /// - MUST NOT revert. - function maxDeposit(address receiver) external view returns (uint256 maxAssets); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given - /// current on-chain conditions. - /// @dev - /// - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit - /// call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called - /// in the same transaction. - /// - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the - /// deposit would be accepted, regardless if the user has enough tokens approved, etc. - /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by depositing. - function previewDeposit(uint256 assets) external view returns (uint256 shares); - - /// @notice Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. - /// @dev - /// - MUST emit the Deposit event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// deposit execution, and are accounted for during deposit. - /// - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not - /// approving enough underlying tokens to the Vault contract, etc). - /// - /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - function deposit(uint256 assets, address receiver) external returns (uint256 shares); - - /// @notice Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - /// @dev - /// - MUST return a limited value if receiver is subject to some mint limit. - /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - /// - MUST NOT revert. - function maxMint(address receiver) external view returns (uint256 maxShares); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given - /// current on-chain conditions. - /// @dev - /// - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call - /// in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the - /// same transaction. - /// - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint - /// would be accepted, regardless if the user has enough tokens approved, etc. - /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by minting. - function previewMint(uint256 shares) external view returns (uint256 assets); - - /// @notice Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. - /// @dev - /// - MUST emit the Deposit event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint - /// execution, and are accounted for during mint. - /// - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not - /// approving enough underlying tokens to the Vault contract, etc). - /// - /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - function mint(uint256 shares, address receiver) external returns (uint256 assets); - - /// @notice Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the - /// Vault, through a withdraw call. - /// @dev - /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - /// - MUST NOT revert. - function maxWithdraw(address owner) external view returns (uint256 maxAssets); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, - /// given current on-chain conditions. - /// @dev - /// - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw - /// call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if - /// called - /// in the same transaction. - /// - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though - /// the withdrawal would be accepted, regardless if the user has enough shares, etc. - /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by depositing. - function previewWithdraw(uint256 assets) external view returns (uint256 shares); - - /// @notice Burns shares from owner and sends exactly assets of underlying tokens to receiver. - /// @dev - /// - MUST emit the Withdraw event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// withdraw execution, and are accounted for during withdraw. - /// - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner - /// not having enough shares, etc). - /// - /// Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - /// Those methods should be performed separately. - function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); - - /// @notice Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, - /// through a redeem call. - /// @dev - /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - /// - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - /// - MUST NOT revert. - function maxRedeem(address owner) external view returns (uint256 maxShares); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, - /// given current on-chain conditions. - /// @dev - /// - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call - /// in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the - /// same transaction. - /// - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the - /// redemption would be accepted, regardless if the user has enough shares, etc. - /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by redeeming. - function previewRedeem(uint256 shares) external view returns (uint256 assets); - - /// @notice Burns exactly shares from owner and sends assets of underlying tokens to receiver. - /// @dev - /// - MUST emit the Withdraw event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// redeem execution, and are accounted for during redeem. - /// - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner - /// not having enough shares, etc). - /// - /// NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - /// Those methods should be performed separately. - function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets); -} diff --git a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC721.sol b/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC721.sol deleted file mode 100644 index 0a16f45cc5..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/interfaces/IERC721.sol +++ /dev/null @@ -1,164 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC165.sol"; - -/// @title ERC-721 Non-Fungible Token Standard -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x80ac58cd. -interface IERC721 is IERC165 { - /// @dev This emits when ownership of any NFT changes by any mechanism. - /// This event emits when NFTs are created (`from` == 0) and destroyed - /// (`to` == 0). Exception: during contract creation, any number of NFTs - /// may be created and assigned without emitting Transfer. At the time of - /// any transfer, the approved address for that NFT (if any) is reset to none. - event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); - - /// @dev This emits when the approved address for an NFT is changed or - /// reaffirmed. The zero address indicates there is no approved address. - /// When a Transfer event emits, this also indicates that the approved - /// address for that NFT (if any) is reset to none. - event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); - - /// @dev This emits when an operator is enabled or disabled for an owner. - /// The operator can manage all NFTs of the owner. - event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); - - /// @notice Count all NFTs assigned to an owner - /// @dev NFTs assigned to the zero address are considered invalid, and this - /// function throws for queries about the zero address. - /// @param _owner An address for whom to query the balance - /// @return The number of NFTs owned by `_owner`, possibly zero - function balanceOf(address _owner) external view returns (uint256); - - /// @notice Find the owner of an NFT - /// @dev NFTs assigned to zero address are considered invalid, and queries - /// about them do throw. - /// @param _tokenId The identifier for an NFT - /// @return The address of the owner of the NFT - function ownerOf(uint256 _tokenId) external view returns (address); - - /// @notice Transfers the ownership of an NFT from one address to another address - /// @dev Throws unless `msg.sender` is the current owner, an authorized - /// operator, or the approved address for this NFT. Throws if `_from` is - /// not the current owner. Throws if `_to` is the zero address. Throws if - /// `_tokenId` is not a valid NFT. When transfer is complete, this function - /// checks if `_to` is a smart contract (code size > 0). If so, it calls - /// `onERC721Received` on `_to` and throws if the return value is not - /// `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`. - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - /// @param data Additional data with no specified format, sent in call to `_to` - function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable; - - /// @notice Transfers the ownership of an NFT from one address to another address - /// @dev This works identically to the other function with an extra data parameter, - /// except this function just sets data to "". - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; - - /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE - /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE - /// THEY MAY BE PERMANENTLY LOST - /// @dev Throws unless `msg.sender` is the current owner, an authorized - /// operator, or the approved address for this NFT. Throws if `_from` is - /// not the current owner. Throws if `_to` is the zero address. Throws if - /// `_tokenId` is not a valid NFT. - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - function transferFrom(address _from, address _to, uint256 _tokenId) external payable; - - /// @notice Change or reaffirm the approved address for an NFT - /// @dev The zero address indicates there is no approved address. - /// Throws unless `msg.sender` is the current NFT owner, or an authorized - /// operator of the current owner. - /// @param _approved The new approved NFT controller - /// @param _tokenId The NFT to approve - function approve(address _approved, uint256 _tokenId) external payable; - - /// @notice Enable or disable approval for a third party ("operator") to manage - /// all of `msg.sender`'s assets - /// @dev Emits the ApprovalForAll event. The contract MUST allow - /// multiple operators per owner. - /// @param _operator Address to add to the set of authorized operators - /// @param _approved True if the operator is approved, false to revoke approval - function setApprovalForAll(address _operator, bool _approved) external; - - /// @notice Get the approved address for a single NFT - /// @dev Throws if `_tokenId` is not a valid NFT. - /// @param _tokenId The NFT to find the approved address for - /// @return The approved address for this NFT, or the zero address if there is none - function getApproved(uint256 _tokenId) external view returns (address); - - /// @notice Query if an address is an authorized operator for another address - /// @param _owner The address that owns the NFTs - /// @param _operator The address that acts on behalf of the owner - /// @return True if `_operator` is an approved operator for `_owner`, false otherwise - function isApprovedForAll(address _owner, address _operator) external view returns (bool); -} - -/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02. -interface IERC721TokenReceiver { - /// @notice Handle the receipt of an NFT - /// @dev The ERC721 smart contract calls this function on the recipient - /// after a `transfer`. This function MAY throw to revert and reject the - /// transfer. Return of other than the magic value MUST result in the - /// transaction being reverted. - /// Note: the contract address is always the message sender. - /// @param _operator The address which called `safeTransferFrom` function - /// @param _from The address which previously owned the token - /// @param _tokenId The NFT identifier which is being transferred - /// @param _data Additional data with no specified format - /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` - /// unless throwing - function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) - external - returns (bytes4); -} - -/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x5b5e139f. -interface IERC721Metadata is IERC721 { - /// @notice A descriptive name for a collection of NFTs in this contract - function name() external view returns (string memory _name); - - /// @notice An abbreviated name for NFTs in this contract - function symbol() external view returns (string memory _symbol); - - /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. - /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC - /// 3986. The URI may point to a JSON file that conforms to the "ERC721 - /// Metadata JSON Schema". - function tokenURI(uint256 _tokenId) external view returns (string memory); -} - -/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x780e9d63. -interface IERC721Enumerable is IERC721 { - /// @notice Count NFTs tracked by this contract - /// @return A count of valid NFTs tracked by this contract, where each one of - /// them has an assigned and queryable owner not equal to the zero address - function totalSupply() external view returns (uint256); - - /// @notice Enumerate valid NFTs - /// @dev Throws if `_index` >= `totalSupply()`. - /// @param _index A counter less than `totalSupply()` - /// @return The token identifier for the `_index`th NFT, - /// (sort order not specified) - function tokenByIndex(uint256 _index) external view returns (uint256); - - /// @notice Enumerate NFTs assigned to an owner - /// @dev Throws if `_index` >= `balanceOf(_owner)` or if - /// `_owner` is the zero address, representing invalid NFTs. - /// @param _owner An address where we are interested in NFTs owned by them - /// @param _index A counter less than `balanceOf(_owner)` - /// @return The token identifier for the `_index`th NFT assigned to `_owner`, - /// (sort order not specified) - function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); -} diff --git a/packages/wallet-contracts/lib/forge-std/src/interfaces/IMulticall3.sol b/packages/wallet-contracts/lib/forge-std/src/interfaces/IMulticall3.sol deleted file mode 100644 index 0d031b71dc..0000000000 --- a/packages/wallet-contracts/lib/forge-std/src/interfaces/IMulticall3.sol +++ /dev/null @@ -1,73 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -interface IMulticall3 { - struct Call { - address target; - bytes callData; - } - - struct Call3 { - address target; - bool allowFailure; - bytes callData; - } - - struct Call3Value { - address target; - bool allowFailure; - uint256 value; - bytes callData; - } - - struct Result { - bool success; - bytes returnData; - } - - function aggregate(Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes[] memory returnData); - - function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData); - - function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData); - - function blockAndAggregate(Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); - - function getBasefee() external view returns (uint256 basefee); - - function getBlockHash(uint256 blockNumber) external view returns (bytes32 blockHash); - - function getBlockNumber() external view returns (uint256 blockNumber); - - function getChainId() external view returns (uint256 chainid); - - function getCurrentBlockCoinbase() external view returns (address coinbase); - - function getCurrentBlockDifficulty() external view returns (uint256 difficulty); - - function getCurrentBlockGasLimit() external view returns (uint256 gaslimit); - - function getCurrentBlockTimestamp() external view returns (uint256 timestamp); - - function getEthBalance(address addr) external view returns (uint256 balance); - - function getLastBlockHash() external view returns (bytes32 blockHash); - - function tryAggregate(bool requireSuccess, Call[] calldata calls) - external - payable - returns (Result[] memory returnData); - - function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); -} diff --git a/packages/wallet-contracts/lib/forge-std/test/StdAssertions.t.sol b/packages/wallet-contracts/lib/forge-std/test/StdAssertions.t.sol deleted file mode 100644 index fcc346be66..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/StdAssertions.t.sol +++ /dev/null @@ -1,999 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdAssertionsTest is Test { - string constant CUSTOM_ERROR = "guh!"; - - bool constant EXPECT_PASS = false; - bool constant EXPECT_FAIL = true; - - bool constant SHOULD_REVERT = true; - bool constant SHOULD_RETURN = false; - - bool constant STRICT_REVERT_DATA = true; - bool constant NON_STRICT_REVERT_DATA = false; - - TestTest t = new TestTest(); - - /*////////////////////////////////////////////////////////////////////////// - FAIL(STRING) - //////////////////////////////////////////////////////////////////////////*/ - - function testShouldFail() external { - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._fail(CUSTOM_ERROR); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_FALSE - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertFalse_Pass() external { - t._assertFalse(false, EXPECT_PASS); - } - - function testAssertFalse_Fail() external { - vm.expectEmit(false, false, false, true); - emit log("Error: Assertion Failed"); - t._assertFalse(true, EXPECT_FAIL); - } - - function testAssertFalse_Err_Pass() external { - t._assertFalse(false, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertFalse_Err_Fail() external { - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertFalse(true, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ(BOOL) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEq_Bool_Pass(bool a) external { - t._assertEq(a, a, EXPECT_PASS); - } - - function testAssertEq_Bool_Fail(bool a, bool b) external { - vm.assume(a != b); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [bool]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_BoolErr_Pass(bool a) external { - t._assertEq(a, a, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertEq_BoolErr_Fail(bool a, bool b) external { - vm.assume(a != b); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ(BYTES) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEq_Bytes_Pass(bytes calldata a) external { - t._assertEq(a, a, EXPECT_PASS); - } - - function testAssertEq_Bytes_Fail(bytes calldata a, bytes calldata b) external { - vm.assume(keccak256(a) != keccak256(b)); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [bytes]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_BytesErr_Pass(bytes calldata a) external { - t._assertEq(a, a, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertEq_BytesErr_Fail(bytes calldata a, bytes calldata b) external { - vm.assume(keccak256(a) != keccak256(b)); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ(ARRAY) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEq_UintArr_Pass(uint256 e0, uint256 e1, uint256 e2) public { - uint256[] memory a = new uint256[](3); - a[0] = e0; - a[1] = e1; - a[2] = e2; - uint256[] memory b = new uint256[](3); - b[0] = e0; - b[1] = e1; - b[2] = e2; - - t._assertEq(a, b, EXPECT_PASS); - } - - function testAssertEq_IntArr_Pass(int256 e0, int256 e1, int256 e2) public { - int256[] memory a = new int256[](3); - a[0] = e0; - a[1] = e1; - a[2] = e2; - int256[] memory b = new int256[](3); - b[0] = e0; - b[1] = e1; - b[2] = e2; - - t._assertEq(a, b, EXPECT_PASS); - } - - function testAssertEq_AddressArr_Pass(address e0, address e1, address e2) public { - address[] memory a = new address[](3); - a[0] = e0; - a[1] = e1; - a[2] = e2; - address[] memory b = new address[](3); - b[0] = e0; - b[1] = e1; - b[2] = e2; - - t._assertEq(a, b, EXPECT_PASS); - } - - function testAssertEq_UintArr_FailEl(uint256 e1) public { - vm.assume(e1 != 0); - uint256[] memory a = new uint256[](3); - uint256[] memory b = new uint256[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [uint[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_IntArr_FailEl(int256 e1) public { - vm.assume(e1 != 0); - int256[] memory a = new int256[](3); - int256[] memory b = new int256[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [int[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_AddressArr_FailEl(address e1) public { - vm.assume(e1 != address(0)); - address[] memory a = new address[](3); - address[] memory b = new address[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [address[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_UintArrErr_FailEl(uint256 e1) public { - vm.assume(e1 != 0); - uint256[] memory a = new uint256[](3); - uint256[] memory b = new uint256[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [uint[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_IntArrErr_FailEl(int256 e1) public { - vm.assume(e1 != 0); - int256[] memory a = new int256[](3); - int256[] memory b = new int256[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [int[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_AddressArrErr_FailEl(address e1) public { - vm.assume(e1 != address(0)); - address[] memory a = new address[](3); - address[] memory b = new address[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [address[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_UintArr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - uint256[] memory a = new uint256[](lenA); - uint256[] memory b = new uint256[](lenB); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [uint[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_IntArr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - int256[] memory a = new int256[](lenA); - int256[] memory b = new int256[](lenB); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [int[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_AddressArr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - address[] memory a = new address[](lenA); - address[] memory b = new address[](lenB); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [address[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_UintArrErr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - uint256[] memory a = new uint256[](lenA); - uint256[] memory b = new uint256[](lenB); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [uint[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_IntArrErr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - int256[] memory a = new int256[](lenA); - int256[] memory b = new int256[](lenB); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [int[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_AddressArrErr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - address[] memory a = new address[](lenA); - address[] memory b = new address[](lenB); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [address[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEqUint() public { - assertEqUint(uint8(1), uint128(1)); - assertEqUint(uint64(2), uint64(2)); - } - - function testFailAssertEqUint() public { - assertEqUint(uint64(1), uint96(2)); - assertEqUint(uint160(3), uint160(4)); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_ABS(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqAbs_Uint_Pass(uint256 a, uint256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbs(a, b, maxDelta, EXPECT_PASS); - } - - function testAssertApproxEqAbs_Uint_Fail(uint256 a, uint256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [uint]"); - t._assertApproxEqAbs(a, b, maxDelta, EXPECT_FAIL); - } - - function testAssertApproxEqAbs_UintErr_Pass(uint256 a, uint256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqAbs_UintErr_Fail(uint256 a, uint256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_ABS_DECIMAL(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqAbsDecimal_Uint_Pass(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_PASS); - } - - function testAssertApproxEqAbsDecimal_Uint_Fail(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [uint]"); - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_FAIL); - } - - function testAssertApproxEqAbsDecimal_UintErr_Pass(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqAbsDecimal_UintErr_Fail(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_ABS(INT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqAbs_Int_Pass(int256 a, int256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbs(a, b, maxDelta, EXPECT_PASS); - } - - function testAssertApproxEqAbs_Int_Fail(int256 a, int256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [int]"); - t._assertApproxEqAbs(a, b, maxDelta, EXPECT_FAIL); - } - - function testAssertApproxEqAbs_IntErr_Pass(int256 a, int256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqAbs_IntErr_Fail(int256 a, int256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_ABS_DECIMAL(INT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqAbsDecimal_Int_Pass(int256 a, int256 b, uint256 maxDelta, uint256 decimals) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_PASS); - } - - function testAssertApproxEqAbsDecimal_Int_Fail(int256 a, int256 b, uint256 maxDelta, uint256 decimals) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [int]"); - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_FAIL); - } - - function testAssertApproxEqAbsDecimal_IntErr_Pass(int256 a, int256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqAbsDecimal_IntErr_Fail(int256 a, int256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_REL(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqRel_Uint_Pass(uint256 a, uint256 b, uint256 maxPercentDelta) external { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_PASS); - } - - function testAssertApproxEqRel_Uint_Fail(uint256 a, uint256 b, uint256 maxPercentDelta) external { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [uint]"); - t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_FAIL); - } - - function testAssertApproxEqRel_UintErr_Pass(uint256 a, uint256 b, uint256 maxPercentDelta) external { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqRel_UintErr_Fail(uint256 a, uint256 b, uint256 maxPercentDelta) external { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_REL_DECIMAL(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqRelDecimal_Uint_Pass(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals) - external - { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_PASS); - } - - function testAssertApproxEqRelDecimal_Uint_Fail(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals) - external - { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [uint]"); - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_FAIL); - } - - function testAssertApproxEqRelDecimal_UintErr_Pass(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals) - external - { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqRelDecimal_UintErr_Fail(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals) - external - { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_REL(INT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqRel_Int_Pass(int128 a, int128 b, uint128 maxPercentDelta) external { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_PASS); - } - - function testAssertApproxEqRel_Int_Fail(int128 a, int128 b, uint128 maxPercentDelta) external { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [int]"); - t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_FAIL); - } - - function testAssertApproxEqRel_IntErr_Pass(int128 a, int128 b, uint128 maxPercentDelta) external { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqRel_IntErr_Fail(int128 a, int128 b, uint128 maxPercentDelta) external { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_REL_DECIMAL(INT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqRelDecimal_Int_Pass(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals) - external - { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_PASS); - } - - function testAssertApproxEqRelDecimal_Int_Fail(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals) - external - { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [int]"); - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_FAIL); - } - - function testAssertApproxEqRelDecimal_IntErr_Pass(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals) - external - { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqRelDecimal_IntErr_Fail(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals) - external - { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ_CALL - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEqCall_Return_Pass( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnData, - bool strictRevertData - ) external { - address targetA = address(new TestMockCall(returnData, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnData, SHOULD_RETURN)); - - t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_PASS); - } - - function testAssertEqCall_Return_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnDataA, - bytes memory returnDataB, - bool strictRevertData - ) external { - vm.assume(keccak256(returnDataA) != keccak256(returnDataB)); - - address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnDataB, SHOULD_RETURN)); - - vm.expectEmit(true, true, true, true); - emit log_named_string("Error", "Call return data does not match"); - t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_FAIL); - } - - function testAssertEqCall_Revert_Pass( - bytes memory callDataA, - bytes memory callDataB, - bytes memory revertDataA, - bytes memory revertDataB - ) external { - address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); - address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); - - t._assertEqCall(targetA, callDataA, targetB, callDataB, NON_STRICT_REVERT_DATA, EXPECT_PASS); - } - - function testAssertEqCall_Revert_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory revertDataA, - bytes memory revertDataB - ) external { - vm.assume(keccak256(revertDataA) != keccak256(revertDataB)); - - address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); - address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); - - vm.expectEmit(true, true, true, true); - emit log_named_string("Error", "Call revert data does not match"); - t._assertEqCall(targetA, callDataA, targetB, callDataB, STRICT_REVERT_DATA, EXPECT_FAIL); - } - - function testAssertEqCall_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnDataA, - bytes memory returnDataB, - bool strictRevertData - ) external { - address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnDataB, SHOULD_REVERT)); - - vm.expectEmit(true, true, true, true); - emit log_named_bytes(" Left call return data", returnDataA); - vm.expectEmit(true, true, true, true); - emit log_named_bytes(" Right call revert data", returnDataB); - t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_FAIL); - - vm.expectEmit(true, true, true, true); - emit log_named_bytes(" Left call revert data", returnDataB); - vm.expectEmit(true, true, true, true); - emit log_named_bytes(" Right call return data", returnDataA); - t._assertEqCall(targetB, callDataB, targetA, callDataA, strictRevertData, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_NOT_EQ(BYTES) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertNotEq_Bytes_Pass(bytes32 a, bytes32 b) external { - vm.assume(a != b); - t._assertNotEq(a, b, EXPECT_PASS); - } - - function testAssertNotEq_Bytes_Fail(bytes32 a) external { - vm.expectEmit(false, false, false, true); - emit log("Error: a != b not satisfied [bytes32]"); - t._assertNotEq(a, a, EXPECT_FAIL); - } - - function testAssertNotEq_BytesErr_Pass(bytes32 a, bytes32 b) external { - vm.assume(a != b); - t._assertNotEq(a, b, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAsserNottEq_BytesErr_Fail(bytes32 a) external { - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertNotEq(a, a, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_NOT_EQ(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertNotEqUint() public { - assertNotEq(uint8(1), uint128(2)); - assertNotEq(uint64(3), uint64(4)); - } - - function testFailAssertNotEqUint() public { - assertNotEq(uint64(1), uint96(1)); - assertNotEq(uint160(2), uint160(2)); - } -} - -contract TestTest is Test { - modifier expectFailure(bool expectFail) { - bool preState = vm.load(HEVM_ADDRESS, bytes32("failed")) != bytes32(0x00); - _; - bool postState = vm.load(HEVM_ADDRESS, bytes32("failed")) != bytes32(0x00); - - if (preState == true) { - return; - } - - if (expectFail) { - require(postState == true, "expected failure not triggered"); - - // unwind the expected failure - vm.store(HEVM_ADDRESS, bytes32("failed"), bytes32(uint256(0x00))); - } else { - require(postState == false, "unexpected failure was triggered"); - } - } - - function _fail(string memory err) external expectFailure(true) { - fail(err); - } - - function _assertFalse(bool data, bool expectFail) external expectFailure(expectFail) { - assertFalse(data); - } - - function _assertFalse(bool data, string memory err, bool expectFail) external expectFailure(expectFail) { - assertFalse(data, err); - } - - function _assertEq(bool a, bool b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(bool a, bool b, string memory err, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b, err); - } - - function _assertEq(bytes memory a, bytes memory b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(bytes memory a, bytes memory b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertEq(a, b, err); - } - - function _assertEq(uint256[] memory a, uint256[] memory b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(int256[] memory a, int256[] memory b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(address[] memory a, address[] memory b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(uint256[] memory a, uint256[] memory b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertEq(a, b, err); - } - - function _assertEq(int256[] memory a, int256[] memory b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertEq(a, b, err); - } - - function _assertEq(address[] memory a, address[] memory b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertEq(a, b, err); - } - - function _assertNotEq(bytes32 a, bytes32 b, bool expectFail) external expectFailure(expectFail) { - assertNotEq32(a, b); - } - - function _assertNotEq(bytes32 a, bytes32 b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertNotEq32(a, b, err); - } - - function _assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbs(a, b, maxDelta); - } - - function _assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbs(a, b, maxDelta, err); - } - - function _assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbsDecimal(a, b, maxDelta, decimals); - } - - function _assertApproxEqAbsDecimal( - uint256 a, - uint256 b, - uint256 maxDelta, - uint256 decimals, - string memory err, - bool expectFail - ) external expectFailure(expectFail) { - assertApproxEqAbsDecimal(a, b, maxDelta, decimals, err); - } - - function _assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbs(a, b, maxDelta); - } - - function _assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbs(a, b, maxDelta, err); - } - - function _assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbsDecimal(a, b, maxDelta, decimals); - } - - function _assertApproxEqAbsDecimal( - int256 a, - int256 b, - uint256 maxDelta, - uint256 decimals, - string memory err, - bool expectFail - ) external expectFailure(expectFail) { - assertApproxEqAbsDecimal(a, b, maxDelta, decimals, err); - } - - function _assertApproxEqRel(uint256 a, uint256 b, uint256 maxPercentDelta, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRel(a, b, maxPercentDelta); - } - - function _assertApproxEqRel(uint256 a, uint256 b, uint256 maxPercentDelta, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRel(a, b, maxPercentDelta, err); - } - - function _assertApproxEqRelDecimal(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals); - } - - function _assertApproxEqRelDecimal( - uint256 a, - uint256 b, - uint256 maxPercentDelta, - uint256 decimals, - string memory err, - bool expectFail - ) external expectFailure(expectFail) { - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, err); - } - - function _assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRel(a, b, maxPercentDelta); - } - - function _assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRel(a, b, maxPercentDelta, err); - } - - function _assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals); - } - - function _assertApproxEqRelDecimal( - int256 a, - int256 b, - uint256 maxPercentDelta, - uint256 decimals, - string memory err, - bool expectFail - ) external expectFailure(expectFail) { - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, err); - } - - function _assertEqCall( - address targetA, - bytes memory callDataA, - address targetB, - bytes memory callDataB, - bool strictRevertData, - bool expectFail - ) external expectFailure(expectFail) { - assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); - } -} - -contract TestMockCall { - bytes returnData; - bool shouldRevert; - - constructor(bytes memory returnData_, bool shouldRevert_) { - returnData = returnData_; - shouldRevert = shouldRevert_; - } - - fallback() external payable { - bytes memory returnData_ = returnData; - - if (shouldRevert) { - assembly { - revert(add(returnData_, 0x20), mload(returnData_)) - } - } else { - assembly { - return(add(returnData_, 0x20), mload(returnData_)) - } - } - } -} diff --git a/packages/wallet-contracts/lib/forge-std/test/StdChains.t.sol b/packages/wallet-contracts/lib/forge-std/test/StdChains.t.sol deleted file mode 100644 index f0ede99c8d..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/StdChains.t.sol +++ /dev/null @@ -1,160 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdChainsTest is Test { - function testChainRpcInitialization() public { - // RPCs specified in `foundry.toml` should be updated. - assertEq(getChain(1).rpcUrl, "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3"); - assertEq(getChain("optimism_goerli").rpcUrl, "https://goerli.optimism.io/"); - assertEq(getChain("arbitrum_one_goerli").rpcUrl, "https://goerli-rollup.arbitrum.io/rpc/"); - - // Environment variables should be the next fallback - assertEq(getChain("arbitrum_nova").rpcUrl, "https://nova.arbitrum.io/rpc"); - vm.setEnv("ARBITRUM_NOVA_RPC_URL", "myoverride"); - assertEq(getChain("arbitrum_nova").rpcUrl, "myoverride"); - vm.setEnv("ARBITRUM_NOVA_RPC_URL", "https://nova.arbitrum.io/rpc"); - - // Cannot override RPCs defined in `foundry.toml` - vm.setEnv("MAINNET_RPC_URL", "myoverride2"); - assertEq(getChain("mainnet").rpcUrl, "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3"); - - // Other RPCs should remain unchanged. - assertEq(getChain(31337).rpcUrl, "http://127.0.0.1:8545"); - assertEq(getChain("sepolia").rpcUrl, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001"); - } - - function testRpc(string memory rpcAlias) internal { - string memory rpcUrl = getChain(rpcAlias).rpcUrl; - vm.createSelectFork(rpcUrl); - } - - // Ensure we can connect to the default RPC URL for each chain. - // function testRpcs() public { - // testRpc("mainnet"); - // testRpc("goerli"); - // testRpc("sepolia"); - // testRpc("optimism"); - // testRpc("optimism_goerli"); - // testRpc("arbitrum_one"); - // testRpc("arbitrum_one_goerli"); - // testRpc("arbitrum_nova"); - // testRpc("polygon"); - // testRpc("polygon_mumbai"); - // testRpc("avalanche"); - // testRpc("avalanche_fuji"); - // testRpc("bnb_smart_chain"); - // testRpc("bnb_smart_chain_testnet"); - // testRpc("gnosis_chain"); - // } - - function testChainNoDefault() public { - vm.expectRevert("StdChains getChain(string): Chain with alias \"does_not_exist\" not found."); - getChain("does_not_exist"); - } - - function testSetChainFirstFails() public { - vm.expectRevert("StdChains setChain(string,ChainData): Chain ID 31337 already used by \"anvil\"."); - setChain("anvil2", ChainData("Anvil", 31337, "URL")); - } - - function testChainBubbleUp() public { - setChain("needs_undefined_env_var", ChainData("", 123456789, "")); - vm.expectRevert( - "Failed to resolve env var `UNDEFINED_RPC_URL_PLACEHOLDER` in `${UNDEFINED_RPC_URL_PLACEHOLDER}`: environment variable not found" - ); - getChain("needs_undefined_env_var"); - } - - function testCannotSetChain_ChainIdExists() public { - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - - vm.expectRevert('StdChains setChain(string,ChainData): Chain ID 123456789 already used by "custom_chain".'); - - setChain("another_custom_chain", ChainData("", 123456789, "")); - } - - function testSetChain() public { - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - Chain memory customChain = getChain("custom_chain"); - assertEq(customChain.name, "Custom Chain"); - assertEq(customChain.chainId, 123456789); - assertEq(customChain.chainAlias, "custom_chain"); - assertEq(customChain.rpcUrl, "https://custom.chain/"); - Chain memory chainById = getChain(123456789); - assertEq(chainById.name, customChain.name); - assertEq(chainById.chainId, customChain.chainId); - assertEq(chainById.chainAlias, customChain.chainAlias); - assertEq(chainById.rpcUrl, customChain.rpcUrl); - customChain.name = "Another Custom Chain"; - customChain.chainId = 987654321; - setChain("another_custom_chain", customChain); - Chain memory anotherCustomChain = getChain("another_custom_chain"); - assertEq(anotherCustomChain.name, "Another Custom Chain"); - assertEq(anotherCustomChain.chainId, 987654321); - assertEq(anotherCustomChain.chainAlias, "another_custom_chain"); - assertEq(anotherCustomChain.rpcUrl, "https://custom.chain/"); - // Verify the first chain data was not overwritten - chainById = getChain(123456789); - assertEq(chainById.name, "Custom Chain"); - assertEq(chainById.chainId, 123456789); - } - - function testSetNoEmptyAlias() public { - vm.expectRevert("StdChains setChain(string,ChainData): Chain alias cannot be the empty string."); - setChain("", ChainData("", 123456789, "")); - } - - function testSetNoChainId0() public { - vm.expectRevert("StdChains setChain(string,ChainData): Chain ID cannot be 0."); - setChain("alias", ChainData("", 0, "")); - } - - function testGetNoChainId0() public { - vm.expectRevert("StdChains getChain(uint256): Chain ID cannot be 0."); - getChain(0); - } - - function testGetNoEmptyAlias() public { - vm.expectRevert("StdChains getChain(string): Chain alias cannot be the empty string."); - getChain(""); - } - - function testChainIdNotFound() public { - vm.expectRevert("StdChains getChain(string): Chain with alias \"no_such_alias\" not found."); - getChain("no_such_alias"); - } - - function testChainAliasNotFound() public { - vm.expectRevert("StdChains getChain(uint256): Chain with ID 321 not found."); - getChain(321); - } - - function testSetChain_ExistingOne() public { - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - assertEq(getChain(123456789).chainId, 123456789); - - setChain("custom_chain", ChainData("Modified Chain", 999999999, "https://modified.chain/")); - vm.expectRevert("StdChains getChain(uint256): Chain with ID 123456789 not found."); - getChain(123456789); - - Chain memory modifiedChain = getChain(999999999); - assertEq(modifiedChain.name, "Modified Chain"); - assertEq(modifiedChain.chainId, 999999999); - assertEq(modifiedChain.rpcUrl, "https://modified.chain/"); - } - - function testDontUseDefaultRpcUrl() public { - // Should error if default RPCs flag is set to false. - setFallbackToDefaultRpcUrls(false); - vm.expectRevert( - "Failed to get environment variable `ANVIL_RPC_URL` as type `string`: environment variable not found" - ); - getChain(31337); - vm.expectRevert( - "Failed to get environment variable `SEPOLIA_RPC_URL` as type `string`: environment variable not found" - ); - getChain("sepolia"); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/test/StdCheats.t.sol b/packages/wallet-contracts/lib/forge-std/test/StdCheats.t.sol deleted file mode 100644 index 36091efa04..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/StdCheats.t.sol +++ /dev/null @@ -1,418 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/StdCheats.sol"; -import "../src/Test.sol"; -import "../src/StdJson.sol"; - -contract StdCheatsTest is Test { - Bar test; - - using stdJson for string; - - function setUp() public { - test = new Bar(); - } - - function testSkip() public { - vm.warp(100); - skip(25); - assertEq(block.timestamp, 125); - } - - function testRewind() public { - vm.warp(100); - rewind(25); - assertEq(block.timestamp, 75); - } - - function testHoax() public { - hoax(address(1337)); - test.bar{value: 100}(address(1337)); - } - - function testHoaxOrigin() public { - hoax(address(1337), address(1337)); - test.origin{value: 100}(address(1337)); - } - - function testHoaxDifferentAddresses() public { - hoax(address(1337), address(7331)); - test.origin{value: 100}(address(1337), address(7331)); - } - - function testStartHoax() public { - startHoax(address(1337)); - test.bar{value: 100}(address(1337)); - test.bar{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } - - function testStartHoaxOrigin() public { - startHoax(address(1337), address(1337)); - test.origin{value: 100}(address(1337)); - test.origin{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } - - function testChangePrankMsgSender() public { - vm.startPrank(address(1337)); - test.bar(address(1337)); - changePrank(address(0xdead)); - test.bar(address(0xdead)); - changePrank(address(1337)); - test.bar(address(1337)); - vm.stopPrank(); - } - - function testChangePrankMsgSenderAndTxOrigin() public { - vm.startPrank(address(1337), address(1338)); - test.origin(address(1337), address(1338)); - changePrank(address(0xdead), address(0xbeef)); - test.origin(address(0xdead), address(0xbeef)); - changePrank(address(1337), address(1338)); - test.origin(address(1337), address(1338)); - vm.stopPrank(); - } - - function testMakeAccountEquivalence() public { - Account memory account = makeAccount("1337"); - (address addr, uint256 key) = makeAddrAndKey("1337"); - assertEq(account.addr, addr); - assertEq(account.key, key); - } - - function testMakeAddrEquivalence() public { - (address addr,) = makeAddrAndKey("1337"); - assertEq(makeAddr("1337"), addr); - } - - function testMakeAddrSigning() public { - (address addr, uint256 key) = makeAddrAndKey("1337"); - bytes32 hash = keccak256("some_message"); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign(key, hash); - assertEq(ecrecover(hash, v, r, s), addr); - } - - function testDeal() public { - deal(address(this), 1 ether); - assertEq(address(this).balance, 1 ether); - } - - function testDealToken() public { - Bar barToken = new Bar(); - address bar = address(barToken); - deal(bar, address(this), 10000e18); - assertEq(barToken.balanceOf(address(this)), 10000e18); - } - - function testDealTokenAdjustTotalSupply() public { - Bar barToken = new Bar(); - address bar = address(barToken); - deal(bar, address(this), 10000e18, true); - assertEq(barToken.balanceOf(address(this)), 10000e18); - assertEq(barToken.totalSupply(), 20000e18); - deal(bar, address(this), 0, true); - assertEq(barToken.balanceOf(address(this)), 0); - assertEq(barToken.totalSupply(), 10000e18); - } - - function testDealERC1155Token() public { - BarERC1155 barToken = new BarERC1155(); - address bar = address(barToken); - dealERC1155(bar, address(this), 0, 10000e18, false); - assertEq(barToken.balanceOf(address(this), 0), 10000e18); - } - - function testDealERC1155TokenAdjustTotalSupply() public { - BarERC1155 barToken = new BarERC1155(); - address bar = address(barToken); - dealERC1155(bar, address(this), 0, 10000e18, true); - assertEq(barToken.balanceOf(address(this), 0), 10000e18); - assertEq(barToken.totalSupply(0), 20000e18); - dealERC1155(bar, address(this), 0, 0, true); - assertEq(barToken.balanceOf(address(this), 0), 0); - assertEq(barToken.totalSupply(0), 10000e18); - } - - function testDealERC721Token() public { - BarERC721 barToken = new BarERC721(); - address bar = address(barToken); - dealERC721(bar, address(2), 1); - assertEq(barToken.balanceOf(address(2)), 1); - assertEq(barToken.balanceOf(address(1)), 0); - dealERC721(bar, address(1), 2); - assertEq(barToken.balanceOf(address(1)), 1); - assertEq(barToken.balanceOf(bar), 1); - } - - function testDeployCode() public { - address deployed = deployCode("StdCheats.t.sol:Bar", bytes("")); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - } - - function testDeployCodeNoArgs() public { - address deployed = deployCode("StdCheats.t.sol:Bar"); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - } - - function testDeployCodeVal() public { - address deployed = deployCode("StdCheats.t.sol:Bar", bytes(""), 1 ether); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - assertEq(deployed.balance, 1 ether); - } - - function testDeployCodeValNoArgs() public { - address deployed = deployCode("StdCheats.t.sol:Bar", 1 ether); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - assertEq(deployed.balance, 1 ether); - } - - // We need this so we can call "this.deployCode" rather than "deployCode" directly - function deployCodeHelper(string memory what) external { - deployCode(what); - } - - function testDeployCodeFail() public { - vm.expectRevert(bytes("StdCheats deployCode(string): Deployment failed.")); - this.deployCodeHelper("StdCheats.t.sol:RevertingContract"); - } - - function getCode(address who) internal view returns (bytes memory o_code) { - /// @solidity memory-safe-assembly - assembly { - // retrieve the size of the code, this needs assembly - let size := extcodesize(who) - // allocate output byte array - this could also be done without assembly - // by using o_code = new bytes(size) - o_code := mload(0x40) - // new "memory end" including padding - mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f)))) - // store length in memory - mstore(o_code, size) - // actually retrieve the code, this needs assembly - extcodecopy(who, add(o_code, 0x20), 0, size) - } - } - - function testDeriveRememberKey() public { - string memory mnemonic = "test test test test test test test test test test test junk"; - - (address deployer, uint256 privateKey) = deriveRememberKey(mnemonic, 0); - assertEq(deployer, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); - assertEq(privateKey, 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80); - } - - function testBytesToUint() public { - assertEq(3, bytesToUint_test(hex"03")); - assertEq(2, bytesToUint_test(hex"02")); - assertEq(255, bytesToUint_test(hex"ff")); - assertEq(29625, bytesToUint_test(hex"73b9")); - } - - function testParseJsonTxDetail() public { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - string memory json = vm.readFile(path); - bytes memory transactionDetails = json.parseRaw(".transactions[0].tx"); - RawTx1559Detail memory rawTxDetail = abi.decode(transactionDetails, (RawTx1559Detail)); - Tx1559Detail memory txDetail = rawToConvertedEIP1559Detail(rawTxDetail); - assertEq(txDetail.from, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); - assertEq(txDetail.to, 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512); - assertEq( - txDetail.data, - hex"23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004" - ); - assertEq(txDetail.nonce, 3); - assertEq(txDetail.txType, 2); - assertEq(txDetail.gas, 29625); - assertEq(txDetail.value, 0); - } - - function testReadEIP1559Transaction() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - uint256 index = 0; - Tx1559 memory transaction = readTx1559(path, index); - transaction; - } - - function testReadEIP1559Transactions() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - Tx1559[] memory transactions = readTx1559s(path); - transactions; - } - - function testReadReceipt() public { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - uint256 index = 5; - Receipt memory receipt = readReceipt(path, index); - assertEq( - receipt.logsBloom, - hex"00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100" - ); - } - - function testReadReceipts() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - Receipt[] memory receipts = readReceipts(path); - receipts; - } - - function testGasMeteringModifier() public { - uint256 gas_start_normal = gasleft(); - addInLoop(); - uint256 gas_used_normal = gas_start_normal - gasleft(); - - uint256 gas_start_single = gasleft(); - addInLoopNoGas(); - uint256 gas_used_single = gas_start_single - gasleft(); - - uint256 gas_start_double = gasleft(); - addInLoopNoGasNoGas(); - uint256 gas_used_double = gas_start_double - gasleft(); - - emit log_named_uint("Normal gas", gas_used_normal); - emit log_named_uint("Single modifier gas", gas_used_single); - emit log_named_uint("Double modifier gas", gas_used_double); - assertTrue(gas_used_double + gas_used_single < gas_used_normal); - } - - function addInLoop() internal pure returns (uint256) { - uint256 b; - for (uint256 i; i < 10000; i++) { - b += i; - } - return b; - } - - function addInLoopNoGas() internal noGasMetering returns (uint256) { - return addInLoop(); - } - - function addInLoopNoGasNoGas() internal noGasMetering returns (uint256) { - return addInLoopNoGas(); - } - - function bytesToUint_test(bytes memory b) private pure returns (uint256) { - uint256 number; - for (uint256 i = 0; i < b.length; i++) { - number = number + uint256(uint8(b[i])) * (2 ** (8 * (b.length - (i + 1)))); - } - return number; - } - - function testAssumeNoPrecompiles(address addr) external { - assumeNoPrecompiles(addr, getChain("optimism_goerli").chainId); - assertTrue( - addr < address(1) || (addr > address(9) && addr < address(0x4200000000000000000000000000000000000000)) - || addr > address(0x4200000000000000000000000000000000000800) - ); - } - - function testAssumePayable() external { - // all should revert since these addresses are not payable - - // VM address - vm.expectRevert(); - assumePayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); - - // Console address - vm.expectRevert(); - assumePayable(0x000000000000000000636F6e736F6c652e6c6f67); - - // Create2Deployer - vm.expectRevert(); - assumePayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); - } - - function testAssumePayable(address addr) external { - assumePayable(addr); - assertTrue( - addr != 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D && addr != 0x000000000000000000636F6e736F6c652e6c6f67 - && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C - ); - } -} - -contract Bar { - constructor() payable { - /// `DEAL` STDCHEAT - totalSupply = 10000e18; - balanceOf[address(this)] = totalSupply; - } - - /// `HOAX` and `CHANGEPRANK` STDCHEATS - function bar(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - } - - function origin(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - require(tx.origin == expectedSender, "!prank"); - } - - function origin(address expectedSender, address expectedOrigin) public payable { - require(msg.sender == expectedSender, "!prank"); - require(tx.origin == expectedOrigin, "!prank"); - } - - /// `DEAL` STDCHEAT - mapping(address => uint256) public balanceOf; - uint256 public totalSupply; -} - -contract BarERC1155 { - constructor() payable { - /// `DEALERC1155` STDCHEAT - _totalSupply[0] = 10000e18; - _balances[0][address(this)] = _totalSupply[0]; - } - - function balanceOf(address account, uint256 id) public view virtual returns (uint256) { - return _balances[id][account]; - } - - function totalSupply(uint256 id) public view virtual returns (uint256) { - return _totalSupply[id]; - } - - /// `DEALERC1155` STDCHEAT - mapping(uint256 => mapping(address => uint256)) private _balances; - mapping(uint256 => uint256) private _totalSupply; -} - -contract BarERC721 { - constructor() payable { - /// `DEALERC721` STDCHEAT - _owners[1] = address(1); - _balances[address(1)] = 1; - _owners[2] = address(this); - _owners[3] = address(this); - _balances[address(this)] = 2; - } - - function balanceOf(address owner) public view virtual returns (uint256) { - return _balances[owner]; - } - - function ownerOf(uint256 tokenId) public view virtual returns (address) { - address owner = _owners[tokenId]; - return owner; - } - - mapping(uint256 => address) private _owners; - mapping(address => uint256) private _balances; -} - -contract RevertingContract { - constructor() { - revert(); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/test/StdError.t.sol b/packages/wallet-contracts/lib/forge-std/test/StdError.t.sol deleted file mode 100644 index ccd3eface3..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/StdError.t.sol +++ /dev/null @@ -1,118 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import "../src/StdError.sol"; -import "../src/Test.sol"; - -contract StdErrorsTest is Test { - ErrorsTest test; - - function setUp() public { - test = new ErrorsTest(); - } - - function testExpectAssertion() public { - vm.expectRevert(stdError.assertionError); - test.assertionError(); - } - - function testExpectArithmetic() public { - vm.expectRevert(stdError.arithmeticError); - test.arithmeticError(10); - } - - function testExpectDiv() public { - vm.expectRevert(stdError.divisionError); - test.divError(0); - } - - function testExpectMod() public { - vm.expectRevert(stdError.divisionError); - test.modError(0); - } - - function testExpectEnum() public { - vm.expectRevert(stdError.enumConversionError); - test.enumConversion(1); - } - - function testExpectEncodeStg() public { - vm.expectRevert(stdError.encodeStorageError); - test.encodeStgError(); - } - - function testExpectPop() public { - vm.expectRevert(stdError.popError); - test.pop(); - } - - function testExpectOOB() public { - vm.expectRevert(stdError.indexOOBError); - test.indexOOBError(1); - } - - function testExpectMem() public { - vm.expectRevert(stdError.memOverflowError); - test.mem(); - } - - function testExpectIntern() public { - vm.expectRevert(stdError.zeroVarError); - test.intern(); - } -} - -contract ErrorsTest { - enum T {T1} - - uint256[] public someArr; - bytes someBytes; - - function assertionError() public pure { - assert(false); - } - - function arithmeticError(uint256 a) public pure { - a -= 100; - } - - function divError(uint256 a) public pure { - 100 / a; - } - - function modError(uint256 a) public pure { - 100 % a; - } - - function enumConversion(uint256 a) public pure { - T(a); - } - - function encodeStgError() public { - /// @solidity memory-safe-assembly - assembly { - sstore(someBytes.slot, 1) - } - keccak256(someBytes); - } - - function pop() public { - someArr.pop(); - } - - function indexOOBError(uint256 a) public pure { - uint256[] memory t = new uint256[](0); - t[a]; - } - - function mem() public pure { - uint256 l = 2 ** 256 / 32; - new uint256[](l); - } - - function intern() public returns (uint256) { - function(uint256) internal returns (uint256) x; - x(2); - return 7; - } -} diff --git a/packages/wallet-contracts/lib/forge-std/test/StdMath.t.sol b/packages/wallet-contracts/lib/forge-std/test/StdMath.t.sol deleted file mode 100644 index 95037ea5d4..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/StdMath.t.sol +++ /dev/null @@ -1,197 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import "../src/StdMath.sol"; -import "../src/Test.sol"; - -contract StdMathTest is Test { - function testGetAbs() external { - assertEq(stdMath.abs(-50), 50); - assertEq(stdMath.abs(50), 50); - assertEq(stdMath.abs(-1337), 1337); - assertEq(stdMath.abs(0), 0); - - assertEq(stdMath.abs(type(int256).min), (type(uint256).max >> 1) + 1); - assertEq(stdMath.abs(type(int256).max), (type(uint256).max >> 1)); - } - - function testGetAbs_Fuzz(int256 a) external { - uint256 manualAbs = getAbs(a); - - uint256 abs = stdMath.abs(a); - - assertEq(abs, manualAbs); - } - - function testGetDelta_Uint() external { - assertEq(stdMath.delta(uint256(0), uint256(0)), 0); - assertEq(stdMath.delta(uint256(0), uint256(1337)), 1337); - assertEq(stdMath.delta(uint256(0), type(uint64).max), type(uint64).max); - assertEq(stdMath.delta(uint256(0), type(uint128).max), type(uint128).max); - assertEq(stdMath.delta(uint256(0), type(uint256).max), type(uint256).max); - - assertEq(stdMath.delta(0, uint256(0)), 0); - assertEq(stdMath.delta(1337, uint256(0)), 1337); - assertEq(stdMath.delta(type(uint64).max, uint256(0)), type(uint64).max); - assertEq(stdMath.delta(type(uint128).max, uint256(0)), type(uint128).max); - assertEq(stdMath.delta(type(uint256).max, uint256(0)), type(uint256).max); - - assertEq(stdMath.delta(1337, uint256(1337)), 0); - assertEq(stdMath.delta(type(uint256).max, type(uint256).max), 0); - assertEq(stdMath.delta(5000, uint256(1250)), 3750); - } - - function testGetDelta_Uint_Fuzz(uint256 a, uint256 b) external { - uint256 manualDelta; - if (a > b) { - manualDelta = a - b; - } else { - manualDelta = b - a; - } - - uint256 delta = stdMath.delta(a, b); - - assertEq(delta, manualDelta); - } - - function testGetDelta_Int() external { - assertEq(stdMath.delta(int256(0), int256(0)), 0); - assertEq(stdMath.delta(int256(0), int256(1337)), 1337); - assertEq(stdMath.delta(int256(0), type(int64).max), type(uint64).max >> 1); - assertEq(stdMath.delta(int256(0), type(int128).max), type(uint128).max >> 1); - assertEq(stdMath.delta(int256(0), type(int256).max), type(uint256).max >> 1); - - assertEq(stdMath.delta(0, int256(0)), 0); - assertEq(stdMath.delta(1337, int256(0)), 1337); - assertEq(stdMath.delta(type(int64).max, int256(0)), type(uint64).max >> 1); - assertEq(stdMath.delta(type(int128).max, int256(0)), type(uint128).max >> 1); - assertEq(stdMath.delta(type(int256).max, int256(0)), type(uint256).max >> 1); - - assertEq(stdMath.delta(-0, int256(0)), 0); - assertEq(stdMath.delta(-1337, int256(0)), 1337); - assertEq(stdMath.delta(type(int64).min, int256(0)), (type(uint64).max >> 1) + 1); - assertEq(stdMath.delta(type(int128).min, int256(0)), (type(uint128).max >> 1) + 1); - assertEq(stdMath.delta(type(int256).min, int256(0)), (type(uint256).max >> 1) + 1); - - assertEq(stdMath.delta(int256(0), -0), 0); - assertEq(stdMath.delta(int256(0), -1337), 1337); - assertEq(stdMath.delta(int256(0), type(int64).min), (type(uint64).max >> 1) + 1); - assertEq(stdMath.delta(int256(0), type(int128).min), (type(uint128).max >> 1) + 1); - assertEq(stdMath.delta(int256(0), type(int256).min), (type(uint256).max >> 1) + 1); - - assertEq(stdMath.delta(1337, int256(1337)), 0); - assertEq(stdMath.delta(type(int256).max, type(int256).max), 0); - assertEq(stdMath.delta(type(int256).min, type(int256).min), 0); - assertEq(stdMath.delta(type(int256).min, type(int256).max), type(uint256).max); - assertEq(stdMath.delta(5000, int256(1250)), 3750); - } - - function testGetDelta_Int_Fuzz(int256 a, int256 b) external { - uint256 absA = getAbs(a); - uint256 absB = getAbs(b); - uint256 absDelta = absA > absB ? absA - absB : absB - absA; - - uint256 manualDelta; - if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { - manualDelta = absDelta; - } - // (a < 0 && b >= 0) || (a >= 0 && b < 0) - else { - manualDelta = absA + absB; - } - - uint256 delta = stdMath.delta(a, b); - - assertEq(delta, manualDelta); - } - - function testGetPercentDelta_Uint() external { - assertEq(stdMath.percentDelta(uint256(0), uint256(1337)), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint64).max), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint128).max), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint192).max), 1e18); - - assertEq(stdMath.percentDelta(1337, uint256(1337)), 0); - assertEq(stdMath.percentDelta(type(uint192).max, type(uint192).max), 0); - assertEq(stdMath.percentDelta(0, uint256(2500)), 1e18); - assertEq(stdMath.percentDelta(2500, uint256(2500)), 0); - assertEq(stdMath.percentDelta(5000, uint256(2500)), 1e18); - assertEq(stdMath.percentDelta(7500, uint256(2500)), 2e18); - - vm.expectRevert(stdError.divisionError); - stdMath.percentDelta(uint256(1), 0); - } - - function testGetPercentDelta_Uint_Fuzz(uint192 a, uint192 b) external { - vm.assume(b != 0); - uint256 manualDelta; - if (a > b) { - manualDelta = a - b; - } else { - manualDelta = b - a; - } - - uint256 manualPercentDelta = manualDelta * 1e18 / b; - uint256 percentDelta = stdMath.percentDelta(a, b); - - assertEq(percentDelta, manualPercentDelta); - } - - function testGetPercentDelta_Int() external { - assertEq(stdMath.percentDelta(int256(0), int256(1337)), 1e18); - assertEq(stdMath.percentDelta(int256(0), -1337), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int64).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int128).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int192).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int64).max), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int128).max), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int192).max), 1e18); - - assertEq(stdMath.percentDelta(1337, int256(1337)), 0); - assertEq(stdMath.percentDelta(type(int192).max, type(int192).max), 0); - assertEq(stdMath.percentDelta(type(int192).min, type(int192).min), 0); - - assertEq(stdMath.percentDelta(type(int192).min, type(int192).max), 2e18); // rounds the 1 wei diff down - assertEq(stdMath.percentDelta(type(int192).max, type(int192).min), 2e18 - 1); // rounds the 1 wei diff down - assertEq(stdMath.percentDelta(0, int256(2500)), 1e18); - assertEq(stdMath.percentDelta(2500, int256(2500)), 0); - assertEq(stdMath.percentDelta(5000, int256(2500)), 1e18); - assertEq(stdMath.percentDelta(7500, int256(2500)), 2e18); - - vm.expectRevert(stdError.divisionError); - stdMath.percentDelta(int256(1), 0); - } - - function testGetPercentDelta_Int_Fuzz(int192 a, int192 b) external { - vm.assume(b != 0); - uint256 absA = getAbs(a); - uint256 absB = getAbs(b); - uint256 absDelta = absA > absB ? absA - absB : absB - absA; - - uint256 manualDelta; - if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { - manualDelta = absDelta; - } - // (a < 0 && b >= 0) || (a >= 0 && b < 0) - else { - manualDelta = absA + absB; - } - - uint256 manualPercentDelta = manualDelta * 1e18 / absB; - uint256 percentDelta = stdMath.percentDelta(a, b); - - assertEq(percentDelta, manualPercentDelta); - } - - /*////////////////////////////////////////////////////////////////////////// - HELPERS - //////////////////////////////////////////////////////////////////////////*/ - - function getAbs(int256 a) private pure returns (uint256) { - if (a < 0) { - return a == type(int256).min ? uint256(type(int256).max) + 1 : uint256(-a); - } - - return uint256(a); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/test/StdStorage.t.sol b/packages/wallet-contracts/lib/forge-std/test/StdStorage.t.sol deleted file mode 100644 index d4c563a04b..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/StdStorage.t.sol +++ /dev/null @@ -1,283 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/StdStorage.sol"; -import "../src/Test.sol"; - -contract StdStorageTest is Test { - using stdStorage for StdStorage; - - StorageTest internal test; - - function setUp() public { - test = new StorageTest(); - } - - function testStorageHidden() public { - assertEq(uint256(keccak256("my.random.var")), stdstore.target(address(test)).sig("hidden()").find()); - } - - function testStorageObvious() public { - assertEq(uint256(0), stdstore.target(address(test)).sig("exists()").find()); - } - - function testStorageCheckedWriteHidden() public { - stdstore.target(address(test)).sig(test.hidden.selector).checked_write(100); - assertEq(uint256(test.hidden()), 100); - } - - function testStorageCheckedWriteObvious() public { - stdstore.target(address(test)).sig(test.exists.selector).checked_write(100); - assertEq(test.exists(), 100); - } - - function testStorageMapStructA() public { - uint256 slot = - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).find(); - assertEq(uint256(keccak256(abi.encode(address(this), 4))), slot); - } - - function testStorageMapStructB() public { - uint256 slot = - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).find(); - assertEq(uint256(keccak256(abi.encode(address(this), 4))) + 1, slot); - } - - function testStorageDeepMap() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key( - address(this) - ).find(); - assertEq(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(5)))))), slot); - } - - function testStorageCheckedWriteDeepMap() public { - stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key(address(this)) - .checked_write(100); - assertEq(100, test.deep_map(address(this), address(this))); - } - - function testStorageDeepMapStructA() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) - .with_key(address(this)).depth(0).find(); - assertEq( - bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 0), - bytes32(slot) - ); - } - - function testStorageDeepMapStructB() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) - .with_key(address(this)).depth(1).find(); - assertEq( - bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 1), - bytes32(slot) - ); - } - - function testStorageCheckedWriteDeepMapStructA() public { - stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( - address(this) - ).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); - assertEq(100, a); - assertEq(0, b); - } - - function testStorageCheckedWriteDeepMapStructB() public { - stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( - address(this) - ).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); - assertEq(0, a); - assertEq(100, b); - } - - function testStorageCheckedWriteMapStructA() public { - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.map_struct(address(this)); - assertEq(a, 100); - assertEq(b, 0); - } - - function testStorageCheckedWriteMapStructB() public { - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.map_struct(address(this)); - assertEq(a, 0); - assertEq(b, 100); - } - - function testStorageStructA() public { - uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(0).find(); - assertEq(uint256(7), slot); - } - - function testStorageStructB() public { - uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(1).find(); - assertEq(uint256(7) + 1, slot); - } - - function testStorageCheckedWriteStructA() public { - stdstore.target(address(test)).sig(test.basic.selector).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.basic(); - assertEq(a, 100); - assertEq(b, 1337); - } - - function testStorageCheckedWriteStructB() public { - stdstore.target(address(test)).sig(test.basic.selector).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.basic(); - assertEq(a, 1337); - assertEq(b, 100); - } - - function testStorageMapAddrFound() public { - uint256 slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).find(); - assertEq(uint256(keccak256(abi.encode(address(this), uint256(1)))), slot); - } - - function testStorageMapUintFound() public { - uint256 slot = stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).find(); - assertEq(uint256(keccak256(abi.encode(100, uint256(2)))), slot); - } - - function testStorageCheckedWriteMapUint() public { - stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).checked_write(100); - assertEq(100, test.map_uint(100)); - } - - function testStorageCheckedWriteMapAddr() public { - stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).checked_write(100); - assertEq(100, test.map_addr(address(this))); - } - - function testStorageCheckedWriteMapBool() public { - stdstore.target(address(test)).sig(test.map_bool.selector).with_key(address(this)).checked_write(true); - assertTrue(test.map_bool(address(this))); - } - - function testFailStorageCheckedWriteMapPacked() public { - // expect PackedSlot error but not external call so cant expectRevert - stdstore.target(address(test)).sig(test.read_struct_lower.selector).with_key(address(uint160(1337))) - .checked_write(100); - } - - function testStorageCheckedWriteMapPackedSuccess() public { - uint256 full = test.map_packed(address(1337)); - // keep upper 128, set lower 128 to 1337 - full = (full & (uint256((1 << 128) - 1) << 128)) | 1337; - stdstore.target(address(test)).sig(test.map_packed.selector).with_key(address(uint160(1337))).checked_write( - full - ); - assertEq(1337, test.read_struct_lower(address(1337))); - } - - function testFailStorageConst() public { - // vm.expectRevert(abi.encodeWithSignature("NotStorage(bytes4)", bytes4(keccak256("const()")))); - stdstore.target(address(test)).sig("const()").find(); - } - - function testFailStorageNativePack() public { - stdstore.target(address(test)).sig(test.tA.selector).find(); - stdstore.target(address(test)).sig(test.tB.selector).find(); - - // these both would fail - stdstore.target(address(test)).sig(test.tC.selector).find(); - stdstore.target(address(test)).sig(test.tD.selector).find(); - } - - function testStorageReadBytes32() public { - bytes32 val = stdstore.target(address(test)).sig(test.tE.selector).read_bytes32(); - assertEq(val, hex"1337"); - } - - function testStorageReadBool_False() public { - bool val = stdstore.target(address(test)).sig(test.tB.selector).read_bool(); - assertEq(val, false); - } - - function testStorageReadBool_True() public { - bool val = stdstore.target(address(test)).sig(test.tH.selector).read_bool(); - assertEq(val, true); - } - - function testStorageReadBool_Revert() public { - vm.expectRevert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); - this.readNonBoolValue(); - } - - function readNonBoolValue() public { - stdstore.target(address(test)).sig(test.tE.selector).read_bool(); - } - - function testStorageReadAddress() public { - address val = stdstore.target(address(test)).sig(test.tF.selector).read_address(); - assertEq(val, address(1337)); - } - - function testStorageReadUint() public { - uint256 val = stdstore.target(address(test)).sig(test.exists.selector).read_uint(); - assertEq(val, 1); - } - - function testStorageReadInt() public { - int256 val = stdstore.target(address(test)).sig(test.tG.selector).read_int(); - assertEq(val, type(int256).min); - } -} - -contract StorageTest { - uint256 public exists = 1; - mapping(address => uint256) public map_addr; - mapping(uint256 => uint256) public map_uint; - mapping(address => uint256) public map_packed; - mapping(address => UnpackedStruct) public map_struct; - mapping(address => mapping(address => uint256)) public deep_map; - mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; - UnpackedStruct public basic; - - uint248 public tA; - bool public tB; - - bool public tC = false; - uint248 public tD = 1; - - struct UnpackedStruct { - uint256 a; - uint256 b; - } - - mapping(address => bool) public map_bool; - - bytes32 public tE = hex"1337"; - address public tF = address(1337); - int256 public tG = type(int256).min; - bool public tH = true; - - constructor() { - basic = UnpackedStruct({a: 1337, b: 1337}); - - uint256 two = (1 << 128) | 1; - map_packed[msg.sender] = two; - map_packed[address(uint160(1337))] = 1 << 128; - } - - function read_struct_upper(address who) public view returns (uint256) { - return map_packed[who] >> 128; - } - - function read_struct_lower(address who) public view returns (uint256) { - return map_packed[who] & ((1 << 128) - 1); - } - - function hidden() public view returns (bytes32 t) { - bytes32 slot = keccak256("my.random.var"); - /// @solidity memory-safe-assembly - assembly { - t := sload(slot) - } - } - - function const() public pure returns (bytes32 t) { - t = bytes32(hex"1337"); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/test/StdStyle.t.sol b/packages/wallet-contracts/lib/forge-std/test/StdStyle.t.sol deleted file mode 100644 index e63ed68e39..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/StdStyle.t.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdStyleTest is Test { - function testStyleColor() public view { - console2.log(StdStyle.red("StdStyle.red String Test")); - console2.log(StdStyle.red(uint256(10e18))); - console2.log(StdStyle.red(int256(-10e18))); - console2.log(StdStyle.red(true)); - console2.log(StdStyle.red(address(0))); - console2.log(StdStyle.redBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.redBytes32("StdStyle.redBytes32")); - console2.log(StdStyle.green("StdStyle.green String Test")); - console2.log(StdStyle.green(uint256(10e18))); - console2.log(StdStyle.green(int256(-10e18))); - console2.log(StdStyle.green(true)); - console2.log(StdStyle.green(address(0))); - console2.log(StdStyle.greenBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.greenBytes32("StdStyle.greenBytes32")); - console2.log(StdStyle.yellow("StdStyle.yellow String Test")); - console2.log(StdStyle.yellow(uint256(10e18))); - console2.log(StdStyle.yellow(int256(-10e18))); - console2.log(StdStyle.yellow(true)); - console2.log(StdStyle.yellow(address(0))); - console2.log(StdStyle.yellowBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.yellowBytes32("StdStyle.yellowBytes32")); - console2.log(StdStyle.blue("StdStyle.blue String Test")); - console2.log(StdStyle.blue(uint256(10e18))); - console2.log(StdStyle.blue(int256(-10e18))); - console2.log(StdStyle.blue(true)); - console2.log(StdStyle.blue(address(0))); - console2.log(StdStyle.blueBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.blueBytes32("StdStyle.blueBytes32")); - console2.log(StdStyle.magenta("StdStyle.magenta String Test")); - console2.log(StdStyle.magenta(uint256(10e18))); - console2.log(StdStyle.magenta(int256(-10e18))); - console2.log(StdStyle.magenta(true)); - console2.log(StdStyle.magenta(address(0))); - console2.log(StdStyle.magentaBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.magentaBytes32("StdStyle.magentaBytes32")); - console2.log(StdStyle.cyan("StdStyle.cyan String Test")); - console2.log(StdStyle.cyan(uint256(10e18))); - console2.log(StdStyle.cyan(int256(-10e18))); - console2.log(StdStyle.cyan(true)); - console2.log(StdStyle.cyan(address(0))); - console2.log(StdStyle.cyanBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.cyanBytes32("StdStyle.cyanBytes32")); - } - - function testStyleFontWeight() public view { - console2.log(StdStyle.bold("StdStyle.bold String Test")); - console2.log(StdStyle.bold(uint256(10e18))); - console2.log(StdStyle.bold(int256(-10e18))); - console2.log(StdStyle.bold(address(0))); - console2.log(StdStyle.bold(true)); - console2.log(StdStyle.boldBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.boldBytes32("StdStyle.boldBytes32")); - console2.log(StdStyle.dim("StdStyle.dim String Test")); - console2.log(StdStyle.dim(uint256(10e18))); - console2.log(StdStyle.dim(int256(-10e18))); - console2.log(StdStyle.dim(address(0))); - console2.log(StdStyle.dim(true)); - console2.log(StdStyle.dimBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.dimBytes32("StdStyle.dimBytes32")); - console2.log(StdStyle.italic("StdStyle.italic String Test")); - console2.log(StdStyle.italic(uint256(10e18))); - console2.log(StdStyle.italic(int256(-10e18))); - console2.log(StdStyle.italic(address(0))); - console2.log(StdStyle.italic(true)); - console2.log(StdStyle.italicBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.italicBytes32("StdStyle.italicBytes32")); - console2.log(StdStyle.underline("StdStyle.underline String Test")); - console2.log(StdStyle.underline(uint256(10e18))); - console2.log(StdStyle.underline(int256(-10e18))); - console2.log(StdStyle.underline(address(0))); - console2.log(StdStyle.underline(true)); - console2.log(StdStyle.underlineBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.underlineBytes32("StdStyle.underlineBytes32")); - console2.log(StdStyle.inverse("StdStyle.inverse String Test")); - console2.log(StdStyle.inverse(uint256(10e18))); - console2.log(StdStyle.inverse(int256(-10e18))); - console2.log(StdStyle.inverse(address(0))); - console2.log(StdStyle.inverse(true)); - console2.log(StdStyle.inverseBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.inverseBytes32("StdStyle.inverseBytes32")); - } - - function testStyleCombined() public view { - console2.log(StdStyle.red(StdStyle.bold("Red Bold String Test"))); - console2.log(StdStyle.green(StdStyle.dim(uint256(10e18)))); - console2.log(StdStyle.yellow(StdStyle.italic(int256(-10e18)))); - console2.log(StdStyle.blue(StdStyle.underline(address(0)))); - console2.log(StdStyle.magenta(StdStyle.inverse(true))); - } - - function testStyleCustom() public view { - console2.log(h1("Custom Style 1")); - console2.log(h2("Custom Style 2")); - } - - function h1(string memory a) private pure returns (string memory) { - return StdStyle.cyan(StdStyle.inverse(StdStyle.bold(a))); - } - - function h2(string memory a) private pure returns (string memory) { - return StdStyle.magenta(StdStyle.bold(StdStyle.underline(a))); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/test/StdUtils.t.sol b/packages/wallet-contracts/lib/forge-std/test/StdUtils.t.sol deleted file mode 100644 index a085b19e65..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/StdUtils.t.sol +++ /dev/null @@ -1,297 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdUtilsMock is StdUtils { - // We deploy a mock version so we can properly test expected reverts. - function getTokenBalances_(address token, address[] memory addresses) - external - returns (uint256[] memory balances) - { - return getTokenBalances(token, addresses); - } -} - -contract StdUtilsTest is Test { - /*////////////////////////////////////////////////////////////////////////// - BOUND UINT - //////////////////////////////////////////////////////////////////////////*/ - - function testBound() public { - assertEq(bound(uint256(5), 0, 4), 0); - assertEq(bound(uint256(0), 69, 69), 69); - assertEq(bound(uint256(0), 68, 69), 68); - assertEq(bound(uint256(10), 150, 190), 174); - assertEq(bound(uint256(300), 2800, 3200), 3107); - assertEq(bound(uint256(9999), 1337, 6666), 4669); - } - - function testBound_WithinRange() public { - assertEq(bound(uint256(51), 50, 150), 51); - assertEq(bound(uint256(51), 50, 150), bound(bound(uint256(51), 50, 150), 50, 150)); - assertEq(bound(uint256(149), 50, 150), 149); - assertEq(bound(uint256(149), 50, 150), bound(bound(uint256(149), 50, 150), 50, 150)); - } - - function testBound_EdgeCoverage() public { - assertEq(bound(uint256(0), 50, 150), 50); - assertEq(bound(uint256(1), 50, 150), 51); - assertEq(bound(uint256(2), 50, 150), 52); - assertEq(bound(uint256(3), 50, 150), 53); - assertEq(bound(type(uint256).max, 50, 150), 150); - assertEq(bound(type(uint256).max - 1, 50, 150), 149); - assertEq(bound(type(uint256).max - 2, 50, 150), 148); - assertEq(bound(type(uint256).max - 3, 50, 150), 147); - } - - function testBound_DistributionIsEven(uint256 min, uint256 size) public { - size = size % 100 + 1; - min = bound(min, UINT256_MAX / 2, UINT256_MAX / 2 + size); - uint256 max = min + size - 1; - uint256 result; - - for (uint256 i = 1; i <= size * 4; ++i) { - // x > max - result = bound(max + i, min, max); - assertEq(result, min + (i - 1) % size); - // x < min - result = bound(min - i, min, max); - assertEq(result, max - (i - 1) % size); - } - } - - function testBound(uint256 num, uint256 min, uint256 max) public { - if (min > max) (min, max) = (max, min); - - uint256 result = bound(num, min, max); - - assertGe(result, min); - assertLe(result, max); - assertEq(result, bound(result, min, max)); - if (num >= min && num <= max) assertEq(result, num); - } - - function testBoundUint256Max() public { - assertEq(bound(0, type(uint256).max - 1, type(uint256).max), type(uint256).max - 1); - assertEq(bound(1, type(uint256).max - 1, type(uint256).max), type(uint256).max); - } - - function testCannotBoundMaxLessThanMin() public { - vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); - bound(uint256(5), 100, 10); - } - - function testCannotBoundMaxLessThanMin(uint256 num, uint256 min, uint256 max) public { - vm.assume(min > max); - vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); - bound(num, min, max); - } - - /*////////////////////////////////////////////////////////////////////////// - BOUND INT - //////////////////////////////////////////////////////////////////////////*/ - - function testBoundInt() public { - assertEq(bound(-3, 0, 4), 2); - assertEq(bound(0, -69, -69), -69); - assertEq(bound(0, -69, -68), -68); - assertEq(bound(-10, 150, 190), 154); - assertEq(bound(-300, 2800, 3200), 2908); - assertEq(bound(9999, -1337, 6666), 1995); - } - - function testBoundInt_WithinRange() public { - assertEq(bound(51, -50, 150), 51); - assertEq(bound(51, -50, 150), bound(bound(51, -50, 150), -50, 150)); - assertEq(bound(149, -50, 150), 149); - assertEq(bound(149, -50, 150), bound(bound(149, -50, 150), -50, 150)); - } - - function testBoundInt_EdgeCoverage() public { - assertEq(bound(type(int256).min, -50, 150), -50); - assertEq(bound(type(int256).min + 1, -50, 150), -49); - assertEq(bound(type(int256).min + 2, -50, 150), -48); - assertEq(bound(type(int256).min + 3, -50, 150), -47); - assertEq(bound(type(int256).min, 10, 150), 10); - assertEq(bound(type(int256).min + 1, 10, 150), 11); - assertEq(bound(type(int256).min + 2, 10, 150), 12); - assertEq(bound(type(int256).min + 3, 10, 150), 13); - - assertEq(bound(type(int256).max, -50, 150), 150); - assertEq(bound(type(int256).max - 1, -50, 150), 149); - assertEq(bound(type(int256).max - 2, -50, 150), 148); - assertEq(bound(type(int256).max - 3, -50, 150), 147); - assertEq(bound(type(int256).max, -50, -10), -10); - assertEq(bound(type(int256).max - 1, -50, -10), -11); - assertEq(bound(type(int256).max - 2, -50, -10), -12); - assertEq(bound(type(int256).max - 3, -50, -10), -13); - } - - function testBoundInt_DistributionIsEven(int256 min, uint256 size) public { - size = size % 100 + 1; - min = bound(min, -int256(size / 2), int256(size - size / 2)); - int256 max = min + int256(size) - 1; - int256 result; - - for (uint256 i = 1; i <= size * 4; ++i) { - // x > max - result = bound(max + int256(i), min, max); - assertEq(result, min + int256((i - 1) % size)); - // x < min - result = bound(min - int256(i), min, max); - assertEq(result, max - int256((i - 1) % size)); - } - } - - function testBoundInt(int256 num, int256 min, int256 max) public { - if (min > max) (min, max) = (max, min); - - int256 result = bound(num, min, max); - - assertGe(result, min); - assertLe(result, max); - assertEq(result, bound(result, min, max)); - if (num >= min && num <= max) assertEq(result, num); - } - - function testBoundIntInt256Max() public { - assertEq(bound(0, type(int256).max - 1, type(int256).max), type(int256).max - 1); - assertEq(bound(1, type(int256).max - 1, type(int256).max), type(int256).max); - } - - function testBoundIntInt256Min() public { - assertEq(bound(0, type(int256).min, type(int256).min + 1), type(int256).min); - assertEq(bound(1, type(int256).min, type(int256).min + 1), type(int256).min + 1); - } - - function testCannotBoundIntMaxLessThanMin() public { - vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); - bound(-5, 100, 10); - } - - function testCannotBoundIntMaxLessThanMin(int256 num, int256 min, int256 max) public { - vm.assume(min > max); - vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); - bound(num, min, max); - } - - /*////////////////////////////////////////////////////////////////////////// - BYTES TO UINT - //////////////////////////////////////////////////////////////////////////*/ - - function testBytesToUint() external { - bytes memory maxUint = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; - bytes memory two = hex"02"; - bytes memory millionEther = hex"d3c21bcecceda1000000"; - - assertEq(bytesToUint(maxUint), type(uint256).max); - assertEq(bytesToUint(two), 2); - assertEq(bytesToUint(millionEther), 1_000_000 ether); - } - - function testCannotConvertGT32Bytes() external { - bytes memory thirty3Bytes = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; - vm.expectRevert("StdUtils bytesToUint(bytes): Bytes length exceeds 32."); - bytesToUint(thirty3Bytes); - } - - /*////////////////////////////////////////////////////////////////////////// - COMPUTE CREATE ADDRESS - //////////////////////////////////////////////////////////////////////////*/ - - function testComputeCreateAddress() external { - address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; - uint256 nonce = 14; - address createAddress = computeCreateAddress(deployer, nonce); - assertEq(createAddress, 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); - } - - /*////////////////////////////////////////////////////////////////////////// - COMPUTE CREATE2 ADDRESS - //////////////////////////////////////////////////////////////////////////*/ - - function testComputeCreate2Address() external { - bytes32 salt = bytes32(uint256(31415)); - bytes32 initcodeHash = keccak256(abi.encode(0x6080)); - address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; - address create2Address = computeCreate2Address(salt, initcodeHash, deployer); - assertEq(create2Address, 0xB147a5d25748fda14b463EB04B111027C290f4d3); - } - - function testComputeCreate2AddressWithDefaultDeployer() external { - bytes32 salt = 0xc290c670fde54e5ef686f9132cbc8711e76a98f0333a438a92daa442c71403c0; - bytes32 initcodeHash = hashInitCode(hex"6080", ""); - assertEq(initcodeHash, 0x1a578b7a4b0b5755db6d121b4118d4bc68fe170dca840c59bc922f14175a76b0); - address create2Address = computeCreate2Address(salt, initcodeHash); - assertEq(create2Address, 0xc0ffEe2198a06235aAbFffe5Db0CacF1717f5Ac6); - } -} - -contract StdUtilsForkTest is Test { - /*////////////////////////////////////////////////////////////////////////// - GET TOKEN BALANCES - //////////////////////////////////////////////////////////////////////////*/ - - address internal SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE; - address internal SHIB_HOLDER_0 = 0x855F5981e831D83e6A4b4EBFCAdAa68D92333170; - address internal SHIB_HOLDER_1 = 0x8F509A90c2e47779cA408Fe00d7A72e359229AdA; - address internal SHIB_HOLDER_2 = 0x0e3bbc0D04fF62211F71f3e4C45d82ad76224385; - - address internal USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; - address internal USDC_HOLDER_0 = 0xDa9CE944a37d218c3302F6B82a094844C6ECEb17; - address internal USDC_HOLDER_1 = 0x3e67F4721E6d1c41a015f645eFa37BEd854fcf52; - - function setUp() public { - // All tests of the `getTokenBalances` method are fork tests using live contracts. - vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900}); - } - - function testCannotGetTokenBalances_NonTokenContract() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - // The UniswapV2Factory contract has neither a `balanceOf` function nor a fallback function, - // so the `balanceOf` call should revert. - address token = address(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); - address[] memory addresses = new address[](1); - addresses[0] = USDC_HOLDER_0; - - vm.expectRevert("Multicall3: call failed"); - stdUtils.getTokenBalances_(token, addresses); - } - - function testCannotGetTokenBalances_EOA() external { - address eoa = vm.addr({privateKey: 1}); - address[] memory addresses = new address[](1); - addresses[0] = USDC_HOLDER_0; - vm.expectRevert("StdUtils getTokenBalances(address,address[]): Token address is not a contract."); - getTokenBalances(eoa, addresses); - } - - function testGetTokenBalances_Empty() external { - address[] memory addresses = new address[](0); - uint256[] memory balances = getTokenBalances(USDC, addresses); - assertEq(balances.length, 0); - } - - function testGetTokenBalances_USDC() external { - address[] memory addresses = new address[](2); - addresses[0] = USDC_HOLDER_0; - addresses[1] = USDC_HOLDER_1; - uint256[] memory balances = getTokenBalances(USDC, addresses); - assertEq(balances[0], 159_000_000_000_000); - assertEq(balances[1], 131_350_000_000_000); - } - - function testGetTokenBalances_SHIB() external { - address[] memory addresses = new address[](3); - addresses[0] = SHIB_HOLDER_0; - addresses[1] = SHIB_HOLDER_1; - addresses[2] = SHIB_HOLDER_2; - uint256[] memory balances = getTokenBalances(SHIB, addresses); - assertEq(balances[0], 3_323_256_285_484.42e18); - assertEq(balances[1], 1_271_702_771_149.99999928e18); - assertEq(balances[2], 606_357_106_247e18); - } -} diff --git a/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationScript.sol b/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationScript.sol deleted file mode 100644 index e205cfff3c..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationScript.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Script.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationScript is Script {} diff --git a/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol b/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol deleted file mode 100644 index ce8e0e9545..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Script.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationScriptBase is ScriptBase {} diff --git a/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationTest.sol b/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationTest.sol deleted file mode 100644 index 9beeafeb7d..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationTest.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Test.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationTest is Test {} diff --git a/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol b/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol deleted file mode 100644 index e993535bc0..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Test.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationTestBase is TestBase {} diff --git a/packages/wallet-contracts/lib/forge-std/test/fixtures/broadcast.log.json b/packages/wallet-contracts/lib/forge-std/test/fixtures/broadcast.log.json deleted file mode 100644 index 0a0200bca9..0000000000 --- a/packages/wallet-contracts/lib/forge-std/test/fixtures/broadcast.log.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": "multiple_arguments(uint256,address,uint256[]):(uint256)", - "arguments": ["1", "0000000000000000000000000000000000001337", "[3,4]"], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "gas": "0x73b9", - "value": "0x0", - "data": "0x23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004", - "nonce": "0x3", - "accessList": [] - } - }, - { - "hash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": "inc():(uint256)", - "arguments": [], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "gas": "0xdcb2", - "value": "0x0", - "data": "0x371303c0", - "nonce": "0x4", - "accessList": [] - } - }, - { - "hash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "function": "t(uint256):(uint256)", - "arguments": ["1"], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "gas": "0x8599", - "value": "0x0", - "data": "0xafe29f710000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x5", - "accessList": [] - } - } - ], - "receipts": [ - { - "transactionHash": "0x481dc86e40bba90403c76f8e144aa9ff04c1da2164299d0298573835f0991181", - "transactionIndex": "0x0", - "blockHash": "0xef0730448490304e5403be0fa8f8ce64f118e9adcca60c07a2ae1ab921d748af", - "blockNumber": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "cumulativeGasUsed": "0x13f3a", - "gasUsed": "0x13f3a", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x6a187183545b8a9e7f1790e847139379bf5622baff2cb43acf3f5c79470af782", - "transactionIndex": "0x0", - "blockHash": "0xf3acb96a90071640c2a8c067ae4e16aad87e634ea8d8bbbb5b352fba86ba0148", - "blockNumber": "0x2", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "cumulativeGasUsed": "0x45d80", - "gasUsed": "0x45d80", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x064ad173b4867bdef2fb60060bbdaf01735fbf10414541ea857772974e74ea9d", - "transactionIndex": "0x0", - "blockHash": "0x8373d02109d3ee06a0225f23da4c161c656ccc48fe0fcee931d325508ae73e58", - "blockNumber": "0x3", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "cumulativeGasUsed": "0x45feb", - "gasUsed": "0x45feb", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", - "transactionIndex": "0x0", - "blockHash": "0x16712fae5c0e18f75045f84363fb6b4d9a9fe25e660c4ce286833a533c97f629", - "blockNumber": "0x4", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "cumulativeGasUsed": "0x5905", - "gasUsed": "0x5905", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", - "transactionIndex": "0x0", - "blockHash": "0x156b88c3eb9a1244ba00a1834f3f70de735b39e3e59006dd03af4fe7d5480c11", - "blockNumber": "0x5", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "cumulativeGasUsed": "0xa9c4", - "gasUsed": "0xa9c4", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "transactionIndex": "0x0", - "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", - "blockNumber": "0x6", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "cumulativeGasUsed": "0x66c5", - "gasUsed": "0x66c5", - "contractAddress": null, - "logs": [ - { - "address": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "topics": [ - "0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000046865726500000000000000000000000000000000000000000000000000000000", - "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", - "blockNumber": "0x6", - "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "transactionIndex": "0x1", - "logIndex": "0x0", - "transactionLogIndex": "0x0", - "removed": false - } - ], - "status": "0x1", - "logsBloom": "0x00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x11fbb10230c168ca1e36a7e5c69a6dbcd04fd9e64ede39d10a83e36ee8065c16", - "transactionIndex": "0x0", - "blockHash": "0xf1e0ed2eda4e923626ec74621006ed50b3fc27580dc7b4cf68a07ca77420e29c", - "blockNumber": "0x7", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x0000000000000000000000000000000000001337", - "cumulativeGasUsed": "0x5208", - "gasUsed": "0x5208", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - } - ], - "libraries": [ - "src/Broadcast.t.sol:F:0x5fbdb2315678afecb367f032d93f642f64180aa3" - ], - "pending": [], - "path": "broadcast/Broadcast.t.sol/31337/run-latest.json", - "returns": {}, - "timestamp": 1655140035 -} diff --git a/packages/wallet-contracts/lib/foundry-huff/.git-blame-ignore-revs b/packages/wallet-contracts/lib/foundry-huff/.git-blame-ignore-revs deleted file mode 100644 index 18678bfe43..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/.git-blame-ignore-revs +++ /dev/null @@ -1,2 +0,0 @@ -# run forge fmt -a41faeb366790c4bda74fef8b70ecda3c285641d diff --git a/packages/wallet-contracts/lib/foundry-huff/.github/workflows/tests.yaml b/packages/wallet-contracts/lib/foundry-huff/.github/workflows/tests.yaml deleted file mode 100644 index f92f508253..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/.github/workflows/tests.yaml +++ /dev/null @@ -1,31 +0,0 @@ -name: Tests - -on: [push] - -jobs: - tests: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Install Huff - uses: huff-language/huff-toolchain@v2 - with: - version: nightly - - - name: Print the Bytecode for fun - run: huffc -b src/test/contracts/Number.huff - - - name: Print the Scripts - run: ls -lsa lib/foundry-huff/scripts/ - - - name: Run Tests - run: forge test -vvv diff --git a/packages/wallet-contracts/lib/foundry-huff/.gitmodules b/packages/wallet-contracts/lib/foundry-huff/.gitmodules deleted file mode 100644 index 7d10038b4c..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "lib/solidity-stringutils"] - path = lib/solidity-stringutils - url = https://github.com/Arachnid/solidity-stringutils -[submodule "lib/forge-std"] - path = lib/forge-std - url = https://github.com/foundry-rs/forge-std diff --git a/packages/wallet-contracts/lib/foundry-huff/LICENSE b/packages/wallet-contracts/lib/foundry-huff/LICENSE deleted file mode 100644 index 261eeb9e9f..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/wallet-contracts/lib/foundry-huff/README.md b/packages/wallet-contracts/lib/foundry-huff/README.md deleted file mode 100644 index 7a461b9119..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/README.md +++ /dev/null @@ -1,167 +0,0 @@ - - - -# Foundry x Huff - -[![ci](https://github.com/huff-language/huff-rs/actions/workflows/ci.yaml/badge.svg)](https://github.com/huff-language/huff-rs/actions/workflows/ci.yaml) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![Discord](https://img.shields.io/discord/980519274600882306) - -A [foundry](https://github.com/foundry-rs/foundry) library for working with [huff](https://github.com/huff-language/huff-rs) contracts. Take a look at our [project template](https://github.com/huff-language/huff-project-template) to see an example project that uses this library. - - -## Installing - -First, install the [huff compiler](https://github.com/huff-language/huff-rs) by running: -``` -curl -L get.huff.sh | bash -``` - -Then, install this library with [forge](https://github.com/foundry-rs/foundry): -``` -forge install huff-language/foundry-huff -``` - - -## Usage - -The HuffDeployer is a Solidity library that takes a filename and deploys the corresponding Huff contract, returning the address that the bytecode was deployed to. To use it, simply import it into your file by doing: - -```js -import {HuffDeployer} from "foundry-huff/HuffDeployer.sol"; -``` - -To compile contracts, you can use `HuffDeployer.deploy(string fileName)`, which takes in a single string representing the filename's path relative to the `src` directory. Note that the file ending, i.e. `.huff`, must be omitted. -Here is an example deployment (where the contract is located in [`src/test/contracts/Number.huff`](./src/test/contracts/Number.huff)): - -```solidity -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -import {HuffDeployer} from "foundry-huff/HuffDeployer"; - -interface Number { - function setNumber(uint256) external; - function getNumber() external returns (uint256); -} - -contract HuffDeployerExample { - function deploy() public { - // Deploy a new instance of src/test/contracts/Number.huff - address addr = HuffDeployer.deploy("test/contracts/Number"); - - // To call a function on the deployed contract, create an interface and wrap the address like so - Number number = Number(addr); - } -} -``` - -To deploy a Huff contract with constructor arguments, you can _chain_ commands onto the HuffDeployer. - -For example, to deploy the contract [`src/test/contracts/Constructor.huff`](src/test/contracts/Constructor.huff) with arguments `(uint256(0x420), uint256(0x420))`, you are encouraged to follow the logic defined in the `deploy` function of the `HuffDeployerArguments` contract below. - -```solidity -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -import {HuffDeployer} from "foundry-huff/HuffDeployer"; - -interface Constructor { - function getArgOne() external returns (address); - function getArgTwo() external returns (uint256); -} - -contract HuffDeployerArguments { - function deploy() public { - // Deploy the contract with arguments - address addr = HuffDeployer - .config() - .with_args(bytes.concat(abi.encode(uint256(0x420)), abi.encode(uint256(0x420)))) - .deploy("test/contracts/Constructor"); - - // To call a function on the deployed contract, create an interface and wrap the address - Constructor construct = Constructor(addr); - - // Validate we deployed the Constructor with the correct arguments - assert(construct.getArgOne() == address(0x420)); - assert(construct.getArgTwo() == uint256(0x420)); - } - - function depreciated_deploy() public { - address addr = HuffDeployer.deploy_with_args( - "test/contracts/Constructor", - bytes.concat(abi.encode(uint256(0x420)), abi.encode(uint256(0x420))) - ); - - // ... - } -} -``` - -HuffDeployer also enables you to instantiate contracts, from the test file, even if they have _no constructor macro_! - -This is possible by using [Foundry](https://github.com/foundry-rs/foundry)'s [ffi](https://book.getfoundry.sh/cheatcodes/ffi.html) cheatcode. - -_NOTE: It is highly recommended that you read the foundry book, or at least familiarize yourself with foundry, before using this library to avoid easily susceptible footguns._ - -Let's use the huff contract [`src/test/contracts/NoConstructor.huff`](./src/test/contracts/NoConstructor.huff), which has no defined constructor macro. The inline-instantiation defined in the `deploy` function of the `HuffDeployerCode` contract below is recommended. - -```solidity -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -import {HuffDeployer} from "foundry-huff/HuffDeployer"; - -interface Constructor { - function getArgOne() external returns (address); - function getArgTwo() external returns (uint256); -} - -contract HuffDeployerCode { - - function deploy() public { - // Define a new constructor macro as a string - string memory constructor_macro = "#define macro CONSTRUCTOR() = takes(0) returns (0) {" - " // Copy the first argument into memory \n" - " 0x20 // [size] - byte size to copy \n" - " 0x40 codesize sub // [offset, size] - offset in the code to copy from\n " - " 0x00 // [mem, offset, size] - offset in memory to copy to \n" - " codecopy // [] \n" - " // Store the first argument in storage\n" - " 0x00 mload // [arg] \n" - " [CONSTRUCTOR_ARG_ONE] // [CONSTRUCTOR_ARG_ONE, arg] \n" - " sstore // [] \n" - " // Copy the second argument into memory \n" - " 0x20 // [size] - byte size to copy \n" - " 0x20 codesize sub // [offset, size] - offset in the code to copy from \n" - " 0x00 // [mem, offset, size] - offset in memory to copy to \n" - " codecopy // [] \n" - " // Store the second argument in storage \n" - " 0x00 mload // [arg] \n" - " [CONSTRUCTOR_ARG_TWO] // [CONSTRUCTOR_ARG_TWO, arg] \n" - " sstore // [] \n" - "}"; - - // Deploy the contract with arguments - address addr = HuffDeployer - .config() - .with_args(bytes.concat(abi.encode(uint256(0x420)), abi.encode(uint256(0x420)))) - .with_code(constructor_macro) - .deploy("test/contracts/NoConstructor"); - - // To call a function on the deployed contract, create an interface and wrap the address - Constructor construct = Constructor(addr); - - // Validate we deployed the Constructor with the correct arguments - assert(construct.getArgOne() == address(0x420)); - assert(construct.getArgTwo() == uint256(0x420)); - } - - function depreciated_deploy_with_code() public { - address addr = HuffDeployer.deploy_with_code( - "test/contracts/Constructor", - constructor_macro - ); - - // ... - } -} -``` diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/Group 1.png b/packages/wallet-contracts/lib/foundry-huff/assets/Group 1.png deleted file mode 100644 index 15a5d9ef6c..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/Group 1.png and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/banner.jpg b/packages/wallet-contracts/lib/foundry-huff/assets/banner.jpg deleted file mode 100644 index ce74a95da5..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/banner.jpg and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/black_white_huff-removebg-preview.png b/packages/wallet-contracts/lib/foundry-huff/assets/black_white_huff-removebg-preview.png deleted file mode 100644 index 4118c8edc3..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/black_white_huff-removebg-preview.png and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/black_white_huff.png b/packages/wallet-contracts/lib/foundry-huff/assets/black_white_huff.png deleted file mode 100644 index 89ecb96150..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/black_white_huff.png and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/foundry.png b/packages/wallet-contracts/lib/foundry-huff/assets/foundry.png deleted file mode 100644 index 8e24b87ef6..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/foundry.png and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/foundry_huff_banner.jpg b/packages/wallet-contracts/lib/foundry-huff/assets/foundry_huff_banner.jpg deleted file mode 100644 index b2b7596485..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/foundry_huff_banner.jpg and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/foundry_huff_banner.png b/packages/wallet-contracts/lib/foundry-huff/assets/foundry_huff_banner.png deleted file mode 100644 index 4eb243bdf8..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/foundry_huff_banner.png and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/huff.png b/packages/wallet-contracts/lib/foundry-huff/assets/huff.png deleted file mode 100644 index d572798843..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/huff.png and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/inverted_huff.png b/packages/wallet-contracts/lib/foundry-huff/assets/inverted_huff.png deleted file mode 100644 index e3ed658cec..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/inverted_huff.png and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/x-removebg-preview.png b/packages/wallet-contracts/lib/foundry-huff/assets/x-removebg-preview.png deleted file mode 100644 index ab40629b63..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/x-removebg-preview.png and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/assets/x.jpg b/packages/wallet-contracts/lib/foundry-huff/assets/x.jpg deleted file mode 100644 index 1da702c0d4..0000000000 Binary files a/packages/wallet-contracts/lib/foundry-huff/assets/x.jpg and /dev/null differ diff --git a/packages/wallet-contracts/lib/foundry-huff/foundry.toml b/packages/wallet-contracts/lib/foundry-huff/foundry.toml deleted file mode 100644 index 0d63687ca5..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/foundry.toml +++ /dev/null @@ -1,10 +0,0 @@ -[profile.default] -src = 'src' -out = 'out' -libs = ['lib'] -ffi = true -fuzz_runs = 2_000 -solc_version = '0.8.20' -evm_version = 'shanghai' -[fmt] -line_length = 100 diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.github/workflows/ci.yml b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.github/workflows/ci.yml deleted file mode 100644 index cb241ae746..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.github/workflows/ci.yml +++ /dev/null @@ -1,134 +0,0 @@ -name: CI - -on: - workflow_dispatch: - pull_request: - push: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install Foundry - uses: onbjerg/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - # Backwards compatibility checks: - # - the oldest and newest version of each supported minor version - # - versions with specific issues - - name: Check compatibility with latest - if: always() - run: | - output=$(forge build --skip test) - - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.8.0 - if: always() - run: | - output=$(forge build --skip test --use solc:0.8.0) - - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.7.6 - if: always() - run: | - output=$(forge build --skip test --use solc:0.7.6) - - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.7.0 - if: always() - run: | - output=$(forge build --skip test --use solc:0.7.0) - - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.6.12 - if: always() - run: | - output=$(forge build --skip test --use solc:0.6.12) - - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - - name: Check compatibility with 0.6.2 - if: always() - run: | - output=$(forge build --skip test --use solc:0.6.2) - - if echo "$output" | grep -q "Warning"; then - echo "$output" - exit 1 - fi - - # via-ir compilation time checks. - - name: Measure compilation time of Test with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationTest.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of TestBase with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationTestBase.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of Script with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationScript.sol --use solc:0.8.17 --via-ir - - - name: Measure compilation time of ScriptBase with 0.8.17 --via-ir - if: always() - run: forge build --skip test --contracts test/compilation/CompilationScriptBase.sol --use solc:0.8.17 --via-ir - - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install Foundry - uses: onbjerg/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - - name: Run tests - run: forge test -vvv - - fmt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install Foundry - uses: onbjerg/foundry-toolchain@v1 - with: - version: nightly - - - name: Print forge version - run: forge --version - - - name: Check formatting - run: forge fmt --check diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.github/workflows/sync.yml b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.github/workflows/sync.yml deleted file mode 100644 index 5a9e9d5913..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.github/workflows/sync.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Sync Release Branch - -on: - release: - types: - - created - -jobs: - sync-release-branch: - runs-on: ubuntu-latest - if: startsWith(github.event.release.tag_name, 'v1') - steps: - - name: Check out the repo - uses: actions/checkout@v3 - with: - fetch-depth: 0 - ref: v1 - - - name: Configure Git - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - - name: Sync Release Branch - run: | - git fetch --tags - git checkout v1 - git reset --hard ${GITHUB_REF} - git push --force diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.gitmodules b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.gitmodules deleted file mode 100644 index e12471968b..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "lib/ds-test"] - path = lib/ds-test - url = https://github.com/dapphub/ds-test diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/LICENSE-APACHE b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/LICENSE-APACHE deleted file mode 100644 index cf01a499fb..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/LICENSE-APACHE +++ /dev/null @@ -1,203 +0,0 @@ -Copyright Contributors to Forge Standard Library - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/LICENSE-MIT b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/LICENSE-MIT deleted file mode 100644 index 28f98304ac..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/LICENSE-MIT +++ /dev/null @@ -1,25 +0,0 @@ -Copyright Contributors to Forge Standard Library - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE O THE USE OR OTHER -DEALINGS IN THE SOFTWARE.R diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/README.md b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/README.md deleted file mode 100644 index 8494a7dd5e..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/README.md +++ /dev/null @@ -1,250 +0,0 @@ -# Forge Standard Library • [![CI status](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml/badge.svg)](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml) - -Forge Standard Library is a collection of helpful contracts and libraries for use with [Forge and Foundry](https://github.com/foundry-rs/foundry). It leverages Forge's cheatcodes to make writing tests easier and faster, while improving the UX of cheatcodes. - -**Learn how to use Forge-Std with the [📖 Foundry Book (Forge-Std Guide)](https://book.getfoundry.sh/forge/forge-std.html).** - -## Install - -```bash -forge install foundry-rs/forge-std -``` - -## Contracts -### stdError - -This is a helper contract for errors and reverts. In Forge, this contract is particularly helpful for the `expectRevert` cheatcode, as it provides all compiler builtin errors. - -See the contract itself for all error codes. - -#### Example usage - -```solidity - -import "forge-std/Test.sol"; - -contract TestContract is Test { - ErrorsTest test; - - function setUp() public { - test = new ErrorsTest(); - } - - function testExpectArithmetic() public { - vm.expectRevert(stdError.arithmeticError); - test.arithmeticError(10); - } -} - -contract ErrorsTest { - function arithmeticError(uint256 a) public { - uint256 a = a - 100; - } -} -``` - -### stdStorage - -This is a rather large contract due to all of the overloading to make the UX decent. Primarily, it is a wrapper around the `record` and `accesses` cheatcodes. It can *always* find and write the storage slot(s) associated with a particular variable without knowing the storage layout. The one _major_ caveat to this is while a slot can be found for packed storage variables, we can't write to that variable safely. If a user tries to write to a packed slot, the execution throws an error, unless it is uninitialized (`bytes32(0)`). - -This works by recording all `SLOAD`s and `SSTORE`s during a function call. If there is a single slot read or written to, it immediately returns the slot. Otherwise, behind the scenes, we iterate through and check each one (assuming the user passed in a `depth` parameter). If the variable is a struct, you can pass in a `depth` parameter which is basically the field depth. - -I.e.: -```solidity -struct T { - // depth 0 - uint256 a; - // depth 1 - uint256 b; -} -``` - -#### Example usage - -```solidity -import "forge-std/Test.sol"; - -contract TestContract is Test { - using stdStorage for StdStorage; - - Storage test; - - function setUp() public { - test = new Storage(); - } - - function testFindExists() public { - // Lets say we want to find the slot for the public - // variable `exists`. We just pass in the function selector - // to the `find` command - uint256 slot = stdstore.target(address(test)).sig("exists()").find(); - assertEq(slot, 0); - } - - function testWriteExists() public { - // Lets say we want to write to the slot for the public - // variable `exists`. We just pass in the function selector - // to the `checked_write` command - stdstore.target(address(test)).sig("exists()").checked_write(100); - assertEq(test.exists(), 100); - } - - // It supports arbitrary storage layouts, like assembly based storage locations - function testFindHidden() public { - // `hidden` is a random hash of a bytes, iteration through slots would - // not find it. Our mechanism does - // Also, you can use the selector instead of a string - uint256 slot = stdstore.target(address(test)).sig(test.hidden.selector).find(); - assertEq(slot, uint256(keccak256("my.random.var"))); - } - - // If targeting a mapping, you have to pass in the keys necessary to perform the find - // i.e.: - function testFindMapping() public { - uint256 slot = stdstore - .target(address(test)) - .sig(test.map_addr.selector) - .with_key(address(this)) - .find(); - // in the `Storage` constructor, we wrote that this address' value was 1 in the map - // so when we load the slot, we expect it to be 1 - assertEq(uint(vm.load(address(test), bytes32(slot))), 1); - } - - // If the target is a struct, you can specify the field depth: - function testFindStruct() public { - // NOTE: see the depth parameter - 0 means 0th field, 1 means 1st field, etc. - uint256 slot_for_a_field = stdstore - .target(address(test)) - .sig(test.basicStruct.selector) - .depth(0) - .find(); - - uint256 slot_for_b_field = stdstore - .target(address(test)) - .sig(test.basicStruct.selector) - .depth(1) - .find(); - - assertEq(uint(vm.load(address(test), bytes32(slot_for_a_field))), 1); - assertEq(uint(vm.load(address(test), bytes32(slot_for_b_field))), 2); - } -} - -// A complex storage contract -contract Storage { - struct UnpackedStruct { - uint256 a; - uint256 b; - } - - constructor() { - map_addr[msg.sender] = 1; - } - - uint256 public exists = 1; - mapping(address => uint256) public map_addr; - // mapping(address => Packed) public map_packed; - mapping(address => UnpackedStruct) public map_struct; - mapping(address => mapping(address => uint256)) public deep_map; - mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; - UnpackedStruct public basicStruct = UnpackedStruct({ - a: 1, - b: 2 - }); - - function hidden() public view returns (bytes32 t) { - // an extremely hidden storage slot - bytes32 slot = keccak256("my.random.var"); - assembly { - t := sload(slot) - } - } -} -``` - -### stdCheats - -This is a wrapper over miscellaneous cheatcodes that need wrappers to be more dev friendly. Currently there are only functions related to `prank`. In general, users may expect ETH to be put into an address on `prank`, but this is not the case for safety reasons. Explicitly this `hoax` function should only be used for address that have expected balances as it will get overwritten. If an address already has ETH, you should just use `prank`. If you want to change that balance explicitly, just use `deal`. If you want to do both, `hoax` is also right for you. - - -#### Example usage: -```solidity - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "forge-std/Test.sol"; - -// Inherit the stdCheats -contract StdCheatsTest is Test { - Bar test; - function setUp() public { - test = new Bar(); - } - - function testHoax() public { - // we call `hoax`, which gives the target address - // eth and then calls `prank` - hoax(address(1337)); - test.bar{value: 100}(address(1337)); - - // overloaded to allow you to specify how much eth to - // initialize the address with - hoax(address(1337), 1); - test.bar{value: 1}(address(1337)); - } - - function testStartHoax() public { - // we call `startHoax`, which gives the target address - // eth and then calls `startPrank` - // - // it is also overloaded so that you can specify an eth amount - startHoax(address(1337)); - test.bar{value: 100}(address(1337)); - test.bar{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } -} - -contract Bar { - function bar(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - } -} -``` - -### Std Assertions - -Expand upon the assertion functions from the `DSTest` library. - -### `console.log` - -Usage follows the same format as [Hardhat](https://hardhat.org/hardhat-network/reference/#console-log). -It's recommended to use `console2.sol` as shown below, as this will show the decoded logs in Forge traces. - -```solidity -// import it indirectly via Test.sol -import "forge-std/Test.sol"; -// or directly import it -import "forge-std/console2.sol"; -... -console2.log(someValue); -``` - -If you need compatibility with Hardhat, you must use the standard `console.sol` instead. -Due to a bug in `console.sol`, logs that use `uint256` or `int256` types will not be properly decoded in Forge traces. - -```solidity -// import it indirectly via Test.sol -import "forge-std/Test.sol"; -// or directly import it -import "forge-std/console.sol"; -... -console.log(someValue); -``` - -## License - -Forge Standard Library is offered under either [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) license. diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/foundry.toml b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/foundry.toml deleted file mode 100644 index f9679ee61a..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/foundry.toml +++ /dev/null @@ -1,21 +0,0 @@ -[profile.default] -fs_permissions = [{ access = "read-write", path = "./"}] - -[rpc_endpoints] -# The RPC URLs are modified versions of the default for testing initialization. -mainnet = "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3" # Different API key. -optimism_goerli = "https://goerli.optimism.io/" # Adds a trailing slash. -arbitrum_one_goerli = "https://goerli-rollup.arbitrum.io/rpc/" # Adds a trailing slash. -needs_undefined_env_var = "${UNDEFINED_RPC_URL_PLACEHOLDER}" - -[fmt] -# These are all the `forge fmt` defaults. -line_length = 120 -tab_width = 4 -bracket_spacing = false -int_types = 'long' -multiline_func_header = 'attributes_first' -quote_style = 'double' -number_underscore = 'preserve' -single_line_statement_blocks = 'preserve' -ignore = ["src/console.sol", "src/console2.sol"] \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/.github/workflows/build.yml b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/.github/workflows/build.yml deleted file mode 100644 index d2ff97db70..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/.github/workflows/build.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: "Build" -on: - pull_request: - push: -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v20 - with: - nix_path: nixpkgs=channel:nixos-unstable - extra_nix_config: | - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - - name: setup dapp binary cache - uses: cachix/cachix-action@v12 - with: - name: dapp - - - name: install dapptools - run: nix profile install github:dapphub/dapptools#dapp --accept-flake-config - - - name: install foundry - uses: foundry-rs/foundry-toolchain@v1 - - - name: test with solc-0.5.17 - run: dapp --use solc-0.5.17 test -v - - - name: test with solc-0.6.11 - run: dapp --use solc-0.6.11 test -v - - - name: test with solc-0.7.6 - run: dapp --use solc-0.7.6 test -v - - - name: test with solc-0.8.18 - run: dapp --use solc-0.8.18 test -v - - - name: Run tests with foundry - run: forge test -vvv - diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/LICENSE b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/LICENSE deleted file mode 100644 index 94a9ed024d..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/Makefile b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/Makefile deleted file mode 100644 index 661dac4868..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -all:; dapp build - -test: - -dapp --use solc:0.4.23 build - -dapp --use solc:0.4.26 build - -dapp --use solc:0.5.17 build - -dapp --use solc:0.6.12 build - -dapp --use solc:0.7.5 build - -demo: - DAPP_SRC=demo dapp --use solc:0.7.5 build - -hevm dapp-test --verbose 3 - -.PHONY: test demo diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/default.nix b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/default.nix deleted file mode 100644 index cf65419ab4..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ solidityPackage, dappsys }: solidityPackage { - name = "ds-test"; - src = ./src; -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/demo/demo.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/demo/demo.sol deleted file mode 100644 index f3bb48e701..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/demo/demo.sol +++ /dev/null @@ -1,222 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity >=0.5.0; - -import "../src/test.sol"; - -contract DemoTest is DSTest { - function test_this() public pure { - require(true); - } - function test_logs() public { - emit log("-- log(string)"); - emit log("a string"); - - emit log("-- log_named_uint(string, uint)"); - emit log_named_uint("uint", 512); - - emit log("-- log_named_int(string, int)"); - emit log_named_int("int", -512); - - emit log("-- log_named_address(string, address)"); - emit log_named_address("address", address(this)); - - emit log("-- log_named_bytes32(string, bytes32)"); - emit log_named_bytes32("bytes32", "a string"); - - emit log("-- log_named_bytes(string, bytes)"); - emit log_named_bytes("bytes", hex"cafefe"); - - emit log("-- log_named_string(string, string)"); - emit log_named_string("string", "a string"); - - emit log("-- log_named_decimal_uint(string, uint, uint)"); - emit log_named_decimal_uint("decimal uint", 1.0e18, 18); - - emit log("-- log_named_decimal_int(string, int, uint)"); - emit log_named_decimal_int("decimal int", -1.0e18, 18); - } - event log_old_named_uint(bytes32,uint); - function test_old_logs() public { - emit log_old_named_uint("key", 500); - emit log_named_bytes32("bkey", "val"); - } - function test_trace() public view { - this.echo("string 1", "string 2"); - } - function test_multiline() public { - emit log("a multiline\\nstring"); - emit log("a multiline string"); - emit log_bytes("a string"); - emit log_bytes("a multiline\nstring"); - emit log_bytes("a multiline\\nstring"); - emit logs(hex"0000"); - emit log_named_bytes("0x0000", hex"0000"); - emit logs(hex"ff"); - } - function echo(string memory s1, string memory s2) public pure - returns (string memory, string memory) - { - return (s1, s2); - } - - function prove_this(uint x) public { - emit log_named_uint("sym x", x); - assertGt(x + 1, 0); - } - - function test_logn() public { - assembly { - log0(0x01, 0x02) - log1(0x01, 0x02, 0x03) - log2(0x01, 0x02, 0x03, 0x04) - log3(0x01, 0x02, 0x03, 0x04, 0x05) - } - } - - event MyEvent(uint, uint indexed, uint, uint indexed); - function test_events() public { - emit MyEvent(1, 2, 3, 4); - } - - function test_asserts() public { - string memory err = "this test has failed!"; - emit log("## assertTrue(bool)\n"); - assertTrue(false); - emit log("\n"); - assertTrue(false, err); - - emit log("\n## assertEq(address,address)\n"); - assertEq(address(this), msg.sender); - emit log("\n"); - assertEq(address(this), msg.sender, err); - - emit log("\n## assertEq32(bytes32,bytes32)\n"); - assertEq32("bytes 1", "bytes 2"); - emit log("\n"); - assertEq32("bytes 1", "bytes 2", err); - - emit log("\n## assertEq(bytes32,bytes32)\n"); - assertEq32("bytes 1", "bytes 2"); - emit log("\n"); - assertEq32("bytes 1", "bytes 2", err); - - emit log("\n## assertEq(uint,uint)\n"); - assertEq(uint(0), 1); - emit log("\n"); - assertEq(uint(0), 1, err); - - emit log("\n## assertEq(int,int)\n"); - assertEq(-1, -2); - emit log("\n"); - assertEq(-1, -2, err); - - emit log("\n## assertEqDecimal(int,int,uint)\n"); - assertEqDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertEqDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertEqDecimal(uint,uint,uint)\n"); - assertEqDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertEqDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertGt(uint,uint)\n"); - assertGt(uint(0), 0); - emit log("\n"); - assertGt(uint(0), 0, err); - - emit log("\n## assertGt(int,int)\n"); - assertGt(-1, -1); - emit log("\n"); - assertGt(-1, -1, err); - - emit log("\n## assertGtDecimal(int,int,uint)\n"); - assertGtDecimal(-2.0e18, -1.1e18, 18); - emit log("\n"); - assertGtDecimal(-2.0e18, -1.1e18, 18, err); - - emit log("\n## assertGtDecimal(uint,uint,uint)\n"); - assertGtDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertGtDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertGe(uint,uint)\n"); - assertGe(uint(0), 1); - emit log("\n"); - assertGe(uint(0), 1, err); - - emit log("\n## assertGe(int,int)\n"); - assertGe(-1, 0); - emit log("\n"); - assertGe(-1, 0, err); - - emit log("\n## assertGeDecimal(int,int,uint)\n"); - assertGeDecimal(-2.0e18, -1.1e18, 18); - emit log("\n"); - assertGeDecimal(-2.0e18, -1.1e18, 18, err); - - emit log("\n## assertGeDecimal(uint,uint,uint)\n"); - assertGeDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertGeDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertLt(uint,uint)\n"); - assertLt(uint(0), 0); - emit log("\n"); - assertLt(uint(0), 0, err); - - emit log("\n## assertLt(int,int)\n"); - assertLt(-1, -1); - emit log("\n"); - assertLt(-1, -1, err); - - emit log("\n## assertLtDecimal(int,int,uint)\n"); - assertLtDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertLtDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertLtDecimal(uint,uint,uint)\n"); - assertLtDecimal(uint(2.0e18), 1.1e18, 18); - emit log("\n"); - assertLtDecimal(uint(2.0e18), 1.1e18, 18, err); - - emit log("\n## assertLe(uint,uint)\n"); - assertLe(uint(1), 0); - emit log("\n"); - assertLe(uint(1), 0, err); - - emit log("\n## assertLe(int,int)\n"); - assertLe(0, -1); - emit log("\n"); - assertLe(0, -1, err); - - emit log("\n## assertLeDecimal(int,int,uint)\n"); - assertLeDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertLeDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertLeDecimal(uint,uint,uint)\n"); - assertLeDecimal(uint(2.0e18), 1.1e18, 18); - emit log("\n"); - assertLeDecimal(uint(2.0e18), 1.1e18, 18, err); - - emit log("\n## assertEq(string,string)\n"); - string memory s1 = "string 1"; - string memory s2 = "string 2"; - assertEq(s1, s2); - emit log("\n"); - assertEq(s1, s2, err); - - emit log("\n## assertEq0(bytes,bytes)\n"); - assertEq0(hex"abcdef01", hex"abcdef02"); - emit log("\n"); - assertEq0(hex"abcdef01", hex"abcdef02", err); - } -} - -contract DemoTestWithSetUp { - function setUp() public { - } - function test_pass() public pure { - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/package.json b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/package.json deleted file mode 100644 index 4802adaa32..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ds-test", - "version": "1.0.0", - "description": "Assertions, equality checks and other test helpers ", - "bugs": "https://github.com/dapphub/ds-test/issues", - "license": "GPL-3.0", - "author": "Contributors to ds-test", - "files": [ - "src/*" - ], - "repository": { - "type": "git", - "url": "https://github.com/dapphub/ds-test.git" - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/src/test.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/src/test.sol deleted file mode 100644 index 2bf337567f..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/src/test.sol +++ /dev/null @@ -1,592 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -pragma solidity >=0.5.0; - -contract DSTest { - event log (string); - event logs (bytes); - - event log_address (address); - event log_bytes32 (bytes32); - event log_int (int); - event log_uint (uint); - event log_bytes (bytes); - event log_string (string); - - event log_named_address (string key, address val); - event log_named_bytes32 (string key, bytes32 val); - event log_named_decimal_int (string key, int val, uint decimals); - event log_named_decimal_uint (string key, uint val, uint decimals); - event log_named_int (string key, int val); - event log_named_uint (string key, uint val); - event log_named_bytes (string key, bytes val); - event log_named_string (string key, string val); - - bool public IS_TEST = true; - bool private _failed; - - address constant HEVM_ADDRESS = - address(bytes20(uint160(uint256(keccak256('hevm cheat code'))))); - - modifier mayRevert() { _; } - modifier testopts(string memory) { _; } - - function failed() public returns (bool) { - if (_failed) { - return _failed; - } else { - bool globalFailed = false; - if (hasHEVMContext()) { - (, bytes memory retdata) = HEVM_ADDRESS.call( - abi.encodePacked( - bytes4(keccak256("load(address,bytes32)")), - abi.encode(HEVM_ADDRESS, bytes32("failed")) - ) - ); - globalFailed = abi.decode(retdata, (bool)); - } - return globalFailed; - } - } - - function fail() internal virtual { - if (hasHEVMContext()) { - (bool status, ) = HEVM_ADDRESS.call( - abi.encodePacked( - bytes4(keccak256("store(address,bytes32,bytes32)")), - abi.encode(HEVM_ADDRESS, bytes32("failed"), bytes32(uint256(0x01))) - ) - ); - status; // Silence compiler warnings - } - _failed = true; - } - - function hasHEVMContext() internal view returns (bool) { - uint256 hevmCodeSize = 0; - assembly { - hevmCodeSize := extcodesize(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D) - } - return hevmCodeSize > 0; - } - - modifier logs_gas() { - uint startGas = gasleft(); - _; - uint endGas = gasleft(); - emit log_named_uint("gas", startGas - endGas); - } - - function assertTrue(bool condition) internal { - if (!condition) { - emit log("Error: Assertion Failed"); - fail(); - } - } - - function assertTrue(bool condition, string memory err) internal { - if (!condition) { - emit log_named_string("Error", err); - assertTrue(condition); - } - } - - function assertEq(address a, address b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [address]"); - emit log_named_address(" Left", a); - emit log_named_address(" Right", b); - fail(); - } - } - function assertEq(address a, address b, string memory err) internal { - if (a != b) { - emit log_named_string ("Error", err); - assertEq(a, b); - } - } - - function assertEq(bytes32 a, bytes32 b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [bytes32]"); - emit log_named_bytes32(" Left", a); - emit log_named_bytes32(" Right", b); - fail(); - } - } - function assertEq(bytes32 a, bytes32 b, string memory err) internal { - if (a != b) { - emit log_named_string ("Error", err); - assertEq(a, b); - } - } - function assertEq32(bytes32 a, bytes32 b) internal { - assertEq(a, b); - } - function assertEq32(bytes32 a, bytes32 b, string memory err) internal { - assertEq(a, b, err); - } - - function assertEq(int a, int b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [int]"); - emit log_named_int(" Left", a); - emit log_named_int(" Right", b); - fail(); - } - } - function assertEq(int a, int b, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - function assertEq(uint a, uint b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [uint]"); - emit log_named_uint(" Left", a); - emit log_named_uint(" Right", b); - fail(); - } - } - function assertEq(uint a, uint b, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - function assertEqDecimal(int a, int b, uint decimals) internal { - if (a != b) { - emit log("Error: a == b not satisfied [decimal int]"); - emit log_named_decimal_int(" Left", a, decimals); - emit log_named_decimal_int(" Right", b, decimals); - fail(); - } - } - function assertEqDecimal(int a, int b, uint decimals, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEqDecimal(a, b, decimals); - } - } - function assertEqDecimal(uint a, uint b, uint decimals) internal { - if (a != b) { - emit log("Error: a == b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Left", a, decimals); - emit log_named_decimal_uint(" Right", b, decimals); - fail(); - } - } - function assertEqDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEqDecimal(a, b, decimals); - } - } - - function assertNotEq(address a, address b) internal { - if (a == b) { - emit log("Error: a != b not satisfied [address]"); - emit log_named_address(" Left", a); - emit log_named_address(" Right", b); - fail(); - } - } - function assertNotEq(address a, address b, string memory err) internal { - if (a == b) { - emit log_named_string ("Error", err); - assertNotEq(a, b); - } - } - - function assertNotEq(bytes32 a, bytes32 b) internal { - if (a == b) { - emit log("Error: a != b not satisfied [bytes32]"); - emit log_named_bytes32(" Left", a); - emit log_named_bytes32(" Right", b); - fail(); - } - } - function assertNotEq(bytes32 a, bytes32 b, string memory err) internal { - if (a == b) { - emit log_named_string ("Error", err); - assertNotEq(a, b); - } - } - function assertNotEq32(bytes32 a, bytes32 b) internal { - assertNotEq(a, b); - } - function assertNotEq32(bytes32 a, bytes32 b, string memory err) internal { - assertNotEq(a, b, err); - } - - function assertNotEq(int a, int b) internal { - if (a == b) { - emit log("Error: a != b not satisfied [int]"); - emit log_named_int(" Left", a); - emit log_named_int(" Right", b); - fail(); - } - } - function assertNotEq(int a, int b, string memory err) internal { - if (a == b) { - emit log_named_string("Error", err); - assertNotEq(a, b); - } - } - function assertNotEq(uint a, uint b) internal { - if (a == b) { - emit log("Error: a != b not satisfied [uint]"); - emit log_named_uint(" Left", a); - emit log_named_uint(" Right", b); - fail(); - } - } - function assertNotEq(uint a, uint b, string memory err) internal { - if (a == b) { - emit log_named_string("Error", err); - assertNotEq(a, b); - } - } - function assertNotEqDecimal(int a, int b, uint decimals) internal { - if (a == b) { - emit log("Error: a != b not satisfied [decimal int]"); - emit log_named_decimal_int(" Left", a, decimals); - emit log_named_decimal_int(" Right", b, decimals); - fail(); - } - } - function assertNotEqDecimal(int a, int b, uint decimals, string memory err) internal { - if (a == b) { - emit log_named_string("Error", err); - assertNotEqDecimal(a, b, decimals); - } - } - function assertNotEqDecimal(uint a, uint b, uint decimals) internal { - if (a == b) { - emit log("Error: a != b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Left", a, decimals); - emit log_named_decimal_uint(" Right", b, decimals); - fail(); - } - } - function assertNotEqDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a == b) { - emit log_named_string("Error", err); - assertNotEqDecimal(a, b, decimals); - } - } - - function assertGt(uint a, uint b) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertGt(uint a, uint b, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGt(a, b); - } - } - function assertGt(int a, int b) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertGt(int a, int b, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGt(a, b); - } - } - function assertGtDecimal(int a, int b, uint decimals) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertGtDecimal(int a, int b, uint decimals, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGtDecimal(a, b, decimals); - } - } - function assertGtDecimal(uint a, uint b, uint decimals) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertGtDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGtDecimal(a, b, decimals); - } - } - - function assertGe(uint a, uint b) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertGe(uint a, uint b, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGe(a, b); - } - } - function assertGe(int a, int b) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertGe(int a, int b, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGe(a, b); - } - } - function assertGeDecimal(int a, int b, uint decimals) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertGeDecimal(int a, int b, uint decimals, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGeDecimal(a, b, decimals); - } - } - function assertGeDecimal(uint a, uint b, uint decimals) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertGeDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGeDecimal(a, b, decimals); - } - } - - function assertLt(uint a, uint b) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertLt(uint a, uint b, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLt(a, b); - } - } - function assertLt(int a, int b) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertLt(int a, int b, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLt(a, b); - } - } - function assertLtDecimal(int a, int b, uint decimals) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertLtDecimal(int a, int b, uint decimals, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLtDecimal(a, b, decimals); - } - } - function assertLtDecimal(uint a, uint b, uint decimals) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertLtDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLtDecimal(a, b, decimals); - } - } - - function assertLe(uint a, uint b) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertLe(uint a, uint b, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLe(a, b); - } - } - function assertLe(int a, int b) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertLe(int a, int b, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLe(a, b); - } - } - function assertLeDecimal(int a, int b, uint decimals) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertLeDecimal(int a, int b, uint decimals, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLeDecimal(a, b, decimals); - } - } - function assertLeDecimal(uint a, uint b, uint decimals) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertLeDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLeDecimal(a, b, decimals); - } - } - - function assertEq(string memory a, string memory b) internal { - if (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))) { - emit log("Error: a == b not satisfied [string]"); - emit log_named_string(" Left", a); - emit log_named_string(" Right", b); - fail(); - } - } - function assertEq(string memory a, string memory b, string memory err) internal { - if (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function assertNotEq(string memory a, string memory b) internal { - if (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))) { - emit log("Error: a != b not satisfied [string]"); - emit log_named_string(" Left", a); - emit log_named_string(" Right", b); - fail(); - } - } - function assertNotEq(string memory a, string memory b, string memory err) internal { - if (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))) { - emit log_named_string("Error", err); - assertNotEq(a, b); - } - } - - function checkEq0(bytes memory a, bytes memory b) internal pure returns (bool ok) { - ok = true; - if (a.length == b.length) { - for (uint i = 0; i < a.length; i++) { - if (a[i] != b[i]) { - ok = false; - } - } - } else { - ok = false; - } - } - function assertEq0(bytes memory a, bytes memory b) internal { - if (!checkEq0(a, b)) { - emit log("Error: a == b not satisfied [bytes]"); - emit log_named_bytes(" Left", a); - emit log_named_bytes(" Right", b); - fail(); - } - } - function assertEq0(bytes memory a, bytes memory b, string memory err) internal { - if (!checkEq0(a, b)) { - emit log_named_string("Error", err); - assertEq0(a, b); - } - } - - function assertNotEq0(bytes memory a, bytes memory b) internal { - if (checkEq0(a, b)) { - emit log("Error: a != b not satisfied [bytes]"); - emit log_named_bytes(" Left", a); - emit log_named_bytes(" Right", b); - fail(); - } - } - function assertNotEq0(bytes memory a, bytes memory b, string memory err) internal { - if (checkEq0(a, b)) { - emit log_named_string("Error", err); - assertNotEq0(a, b); - } - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/src/test.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/src/test.t.sol deleted file mode 100644 index d277a30945..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/lib/ds-test/src/test.t.sol +++ /dev/null @@ -1,417 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity >=0.5.0; - -import {DSTest} from "./test.sol"; - -contract DemoTest is DSTest { - - // --- assertTrue --- - - function testAssertTrue() public { - assertTrue(true, "msg"); - assertTrue(true); - } - function testFailAssertTrue() public { - assertTrue(false); - } - function testFailAssertTrueWithMsg() public { - assertTrue(false, "msg"); - } - - // --- assertEq (Addr) --- - - function testAssertEqAddr() public { - assertEq(address(0x0), address(0x0), "msg"); - assertEq(address(0x0), address(0x0)); - } - function testFailAssertEqAddr() public { - assertEq(address(0x0), address(0x1)); - } - function testFailAssertEqAddrWithMsg() public { - assertEq(address(0x0), address(0x1), "msg"); - } - - // --- assertEq (Bytes32) --- - - function testAssertEqBytes32() public { - assertEq(bytes32("hi"), bytes32("hi"), "msg"); - assertEq(bytes32("hi"), bytes32("hi")); - } - function testFailAssertEqBytes32() public { - assertEq(bytes32("hi"), bytes32("ho")); - } - function testFailAssertEqBytes32WithMsg() public { - assertEq(bytes32("hi"), bytes32("ho"), "msg"); - } - - // --- assertEq (Int) --- - - function testAssertEqInt() public { - assertEq(-1, -1, "msg"); - assertEq(-1, -1); - } - function testFailAssertEqInt() public { - assertEq(-1, -2); - } - function testFailAssertEqIntWithMsg() public { - assertEq(-1, -2, "msg"); - } - - // --- assertEq (UInt) --- - - function testAssertEqUInt() public { - assertEq(uint(1), uint(1), "msg"); - assertEq(uint(1), uint(1)); - } - function testFailAssertEqUInt() public { - assertEq(uint(1), uint(2)); - } - function testFailAssertEqUIntWithMsg() public { - assertEq(uint(1), uint(2), "msg"); - } - - // --- assertEqDecimal (Int) --- - - function testAssertEqDecimalInt() public { - assertEqDecimal(-1, -1, 18, "msg"); - assertEqDecimal(-1, -1, 18); - } - function testFailAssertEqDecimalInt() public { - assertEqDecimal(-1, -2, 18); - } - function testFailAssertEqDecimalIntWithMsg() public { - assertEqDecimal(-1, -2, 18, "msg"); - } - - // --- assertEqDecimal (UInt) --- - - function testAssertEqDecimalUInt() public { - assertEqDecimal(uint(1), uint(1), 18, "msg"); - assertEqDecimal(uint(1), uint(1), 18); - } - function testFailAssertEqDecimalUInt() public { - assertEqDecimal(uint(1), uint(2), 18); - } - function testFailAssertEqDecimalUIntWithMsg() public { - assertEqDecimal(uint(1), uint(2), 18, "msg"); - } - - // --- assertNotEq (Addr) --- - - function testAssertNotEqAddr() public { - assertNotEq(address(0x0), address(0x1), "msg"); - assertNotEq(address(0x0), address(0x1)); - } - function testFailAssertNotEqAddr() public { - assertNotEq(address(0x0), address(0x0)); - } - function testFailAssertNotEqAddrWithMsg() public { - assertNotEq(address(0x0), address(0x0), "msg"); - } - - // --- assertNotEq (Bytes32) --- - - function testAssertNotEqBytes32() public { - assertNotEq(bytes32("hi"), bytes32("ho"), "msg"); - assertNotEq(bytes32("hi"), bytes32("ho")); - } - function testFailAssertNotEqBytes32() public { - assertNotEq(bytes32("hi"), bytes32("hi")); - } - function testFailAssertNotEqBytes32WithMsg() public { - assertNotEq(bytes32("hi"), bytes32("hi"), "msg"); - } - - // --- assertNotEq (Int) --- - - function testAssertNotEqInt() public { - assertNotEq(-1, -2, "msg"); - assertNotEq(-1, -2); - } - function testFailAssertNotEqInt() public { - assertNotEq(-1, -1); - } - function testFailAssertNotEqIntWithMsg() public { - assertNotEq(-1, -1, "msg"); - } - - // --- assertNotEq (UInt) --- - - function testAssertNotEqUInt() public { - assertNotEq(uint(1), uint(2), "msg"); - assertNotEq(uint(1), uint(2)); - } - function testFailAssertNotEqUInt() public { - assertNotEq(uint(1), uint(1)); - } - function testFailAssertNotEqUIntWithMsg() public { - assertNotEq(uint(1), uint(1), "msg"); - } - - // --- assertNotEqDecimal (Int) --- - - function testAssertNotEqDecimalInt() public { - assertNotEqDecimal(-1, -2, 18, "msg"); - assertNotEqDecimal(-1, -2, 18); - } - function testFailAssertNotEqDecimalInt() public { - assertNotEqDecimal(-1, -1, 18); - } - function testFailAssertNotEqDecimalIntWithMsg() public { - assertNotEqDecimal(-1, -1, 18, "msg"); - } - - // --- assertNotEqDecimal (UInt) --- - - function testAssertNotEqDecimalUInt() public { - assertNotEqDecimal(uint(1), uint(2), 18, "msg"); - assertNotEqDecimal(uint(1), uint(2), 18); - } - function testFailAssertNotEqDecimalUInt() public { - assertNotEqDecimal(uint(1), uint(1), 18); - } - function testFailAssertNotEqDecimalUIntWithMsg() public { - assertNotEqDecimal(uint(1), uint(1), 18, "msg"); - } - - // --- assertGt (UInt) --- - - function testAssertGtUInt() public { - assertGt(uint(2), uint(1), "msg"); - assertGt(uint(3), uint(2)); - } - function testFailAssertGtUInt() public { - assertGt(uint(1), uint(2)); - } - function testFailAssertGtUIntWithMsg() public { - assertGt(uint(1), uint(2), "msg"); - } - - // --- assertGt (Int) --- - - function testAssertGtInt() public { - assertGt(-1, -2, "msg"); - assertGt(-1, -3); - } - function testFailAssertGtInt() public { - assertGt(-2, -1); - } - function testFailAssertGtIntWithMsg() public { - assertGt(-2, -1, "msg"); - } - - // --- assertGtDecimal (UInt) --- - - function testAssertGtDecimalUInt() public { - assertGtDecimal(uint(2), uint(1), 18, "msg"); - assertGtDecimal(uint(3), uint(2), 18); - } - function testFailAssertGtDecimalUInt() public { - assertGtDecimal(uint(1), uint(2), 18); - } - function testFailAssertGtDecimalUIntWithMsg() public { - assertGtDecimal(uint(1), uint(2), 18, "msg"); - } - - // --- assertGtDecimal (Int) --- - - function testAssertGtDecimalInt() public { - assertGtDecimal(-1, -2, 18, "msg"); - assertGtDecimal(-1, -3, 18); - } - function testFailAssertGtDecimalInt() public { - assertGtDecimal(-2, -1, 18); - } - function testFailAssertGtDecimalIntWithMsg() public { - assertGtDecimal(-2, -1, 18, "msg"); - } - - // --- assertGe (UInt) --- - - function testAssertGeUInt() public { - assertGe(uint(2), uint(1), "msg"); - assertGe(uint(2), uint(2)); - } - function testFailAssertGeUInt() public { - assertGe(uint(1), uint(2)); - } - function testFailAssertGeUIntWithMsg() public { - assertGe(uint(1), uint(2), "msg"); - } - - // --- assertGe (Int) --- - - function testAssertGeInt() public { - assertGe(-1, -2, "msg"); - assertGe(-1, -1); - } - function testFailAssertGeInt() public { - assertGe(-2, -1); - } - function testFailAssertGeIntWithMsg() public { - assertGe(-2, -1, "msg"); - } - - // --- assertGeDecimal (UInt) --- - - function testAssertGeDecimalUInt() public { - assertGeDecimal(uint(2), uint(1), 18, "msg"); - assertGeDecimal(uint(2), uint(2), 18); - } - function testFailAssertGeDecimalUInt() public { - assertGeDecimal(uint(1), uint(2), 18); - } - function testFailAssertGeDecimalUIntWithMsg() public { - assertGeDecimal(uint(1), uint(2), 18, "msg"); - } - - // --- assertGeDecimal (Int) --- - - function testAssertGeDecimalInt() public { - assertGeDecimal(-1, -2, 18, "msg"); - assertGeDecimal(-1, -2, 18); - } - function testFailAssertGeDecimalInt() public { - assertGeDecimal(-2, -1, 18); - } - function testFailAssertGeDecimalIntWithMsg() public { - assertGeDecimal(-2, -1, 18, "msg"); - } - - // --- assertLt (UInt) --- - - function testAssertLtUInt() public { - assertLt(uint(1), uint(2), "msg"); - assertLt(uint(1), uint(3)); - } - function testFailAssertLtUInt() public { - assertLt(uint(2), uint(2)); - } - function testFailAssertLtUIntWithMsg() public { - assertLt(uint(3), uint(2), "msg"); - } - - // --- assertLt (Int) --- - - function testAssertLtInt() public { - assertLt(-2, -1, "msg"); - assertLt(-1, 0); - } - function testFailAssertLtInt() public { - assertLt(-1, -2); - } - function testFailAssertLtIntWithMsg() public { - assertLt(-1, -1, "msg"); - } - - // --- assertLtDecimal (UInt) --- - - function testAssertLtDecimalUInt() public { - assertLtDecimal(uint(1), uint(2), 18, "msg"); - assertLtDecimal(uint(2), uint(3), 18); - } - function testFailAssertLtDecimalUInt() public { - assertLtDecimal(uint(1), uint(1), 18); - } - function testFailAssertLtDecimalUIntWithMsg() public { - assertLtDecimal(uint(2), uint(1), 18, "msg"); - } - - // --- assertLtDecimal (Int) --- - - function testAssertLtDecimalInt() public { - assertLtDecimal(-2, -1, 18, "msg"); - assertLtDecimal(-2, -1, 18); - } - function testFailAssertLtDecimalInt() public { - assertLtDecimal(-2, -2, 18); - } - function testFailAssertLtDecimalIntWithMsg() public { - assertLtDecimal(-1, -2, 18, "msg"); - } - - // --- assertLe (UInt) --- - - function testAssertLeUInt() public { - assertLe(uint(1), uint(2), "msg"); - assertLe(uint(1), uint(1)); - } - function testFailAssertLeUInt() public { - assertLe(uint(4), uint(2)); - } - function testFailAssertLeUIntWithMsg() public { - assertLe(uint(3), uint(2), "msg"); - } - - // --- assertLe (Int) --- - - function testAssertLeInt() public { - assertLe(-2, -1, "msg"); - assertLe(-1, -1); - } - function testFailAssertLeInt() public { - assertLe(-1, -2); - } - function testFailAssertLeIntWithMsg() public { - assertLe(-1, -3, "msg"); - } - - // --- assertLeDecimal (UInt) --- - - function testAssertLeDecimalUInt() public { - assertLeDecimal(uint(1), uint(2), 18, "msg"); - assertLeDecimal(uint(2), uint(2), 18); - } - function testFailAssertLeDecimalUInt() public { - assertLeDecimal(uint(1), uint(0), 18); - } - function testFailAssertLeDecimalUIntWithMsg() public { - assertLeDecimal(uint(1), uint(0), 18, "msg"); - } - - // --- assertLeDecimal (Int) --- - - function testAssertLeDecimalInt() public { - assertLeDecimal(-2, -1, 18, "msg"); - assertLeDecimal(-2, -2, 18); - } - function testFailAssertLeDecimalInt() public { - assertLeDecimal(-2, -3, 18); - } - function testFailAssertLeDecimalIntWithMsg() public { - assertLeDecimal(-1, -2, 18, "msg"); - } - - // --- assertNotEq (String) --- - - function testAssertNotEqString() public { - assertNotEq(new string(1), new string(2), "msg"); - assertNotEq(new string(1), new string(2)); - } - function testFailAssertNotEqString() public { - assertNotEq(new string(1), new string(1)); - } - function testFailAssertNotEqStringWithMsg() public { - assertNotEq(new string(1), new string(1), "msg"); - } - - // --- assertNotEq0 (Bytes) --- - - function testAssertNotEq0Bytes() public { - assertNotEq0(bytes("hi"), bytes("ho"), "msg"); - assertNotEq0(bytes("hi"), bytes("ho")); - } - function testFailAssertNotEq0Bytes() public { - assertNotEq0(bytes("hi"), bytes("hi")); - } - function testFailAssertNotEq0BytesWithMsg() public { - assertNotEq0(bytes("hi"), bytes("hi"), "msg"); - } - - // --- fail override --- - - // ensure that fail can be overridden - function fail() internal override { - super.fail(); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/package.json b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/package.json deleted file mode 100644 index 310d46c8c8..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "forge-std", - "version": "1.6.0", - "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.", - "homepage": "https://book.getfoundry.sh/forge/forge-std", - "bugs": "https://github.com/foundry-rs/forge-std/issues", - "license": "(Apache-2.0 OR MIT)", - "author": "Contributors to Forge Standard Library", - "files": [ - "src/**/*" - ], - "repository": { - "type": "git", - "url": "https://github.com/foundry-rs/forge-std.git" - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Base.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Base.sol deleted file mode 100644 index 851ac0cd2b..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Base.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {StdStorage} from "./StdStorage.sol"; -import {Vm, VmSafe} from "./Vm.sol"; - -abstract contract CommonBase { - // Cheat code address, 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D. - address internal constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code")))); - // console.sol and console2.sol work by executing a staticcall to this address. - address internal constant CONSOLE = 0x000000000000000000636F6e736F6c652e6c6f67; - // Used when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. - address internal constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - // Default address for tx.origin and msg.sender, 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38. - address internal constant DEFAULT_SENDER = address(uint160(uint256(keccak256("foundry default caller")))); - // Address of the test contract, deployed by the DEFAULT_SENDER. - address internal constant DEFAULT_TEST_CONTRACT = 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f; - // Deterministic deployment address of the Multicall3 contract. - address internal constant MULTICALL3_ADDRESS = 0xcA11bde05977b3631167028862bE2a173976CA11; - // The order of the secp256k1 curve. - uint256 internal constant SECP256K1_ORDER = - 115792089237316195423570985008687907852837564279074904382605163141518161494337; - - uint256 internal constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - Vm internal constant vm = Vm(VM_ADDRESS); - StdStorage internal stdstore; -} - -abstract contract TestBase is CommonBase {} - -abstract contract ScriptBase is CommonBase { - VmSafe internal constant vmSafe = VmSafe(VM_ADDRESS); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Script.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Script.sol deleted file mode 100644 index 94e75f6cbc..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Script.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -// 💬 ABOUT -// Forge Std's default Script. - -// 🧩 MODULES -import {console} from "./console.sol"; -import {console2} from "./console2.sol"; -import {safeconsole} from "./safeconsole.sol"; -import {StdChains} from "./StdChains.sol"; -import {StdCheatsSafe} from "./StdCheats.sol"; -import {stdJson} from "./StdJson.sol"; -import {stdMath} from "./StdMath.sol"; -import {StdStorage, stdStorageSafe} from "./StdStorage.sol"; -import {StdStyle} from "./StdStyle.sol"; -import {StdUtils} from "./StdUtils.sol"; -import {VmSafe} from "./Vm.sol"; - -// 📦 BOILERPLATE -import {ScriptBase} from "./Base.sol"; - -// ⭐️ SCRIPT -abstract contract Script is ScriptBase, StdChains, StdCheatsSafe, StdUtils { - // Note: IS_SCRIPT() must return true. - bool public IS_SCRIPT = true; -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdAssertions.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdAssertions.sol deleted file mode 100644 index 2778b3a0e8..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdAssertions.sol +++ /dev/null @@ -1,376 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {DSTest} from "ds-test/test.sol"; -import {stdMath} from "./StdMath.sol"; - -abstract contract StdAssertions is DSTest { - event log_array(uint256[] val); - event log_array(int256[] val); - event log_array(address[] val); - event log_named_array(string key, uint256[] val); - event log_named_array(string key, int256[] val); - event log_named_array(string key, address[] val); - - function fail(string memory err) internal virtual { - emit log_named_string("Error", err); - fail(); - } - - function assertFalse(bool data) internal virtual { - assertTrue(!data); - } - - function assertFalse(bool data, string memory err) internal virtual { - assertTrue(!data, err); - } - - function assertEq(bool a, bool b) internal virtual { - if (a != b) { - emit log("Error: a == b not satisfied [bool]"); - emit log_named_string(" Left", a ? "true" : "false"); - emit log_named_string(" Right", b ? "true" : "false"); - fail(); - } - } - - function assertEq(bool a, bool b, string memory err) internal virtual { - if (a != b) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function assertEq(bytes memory a, bytes memory b) internal virtual { - assertEq0(a, b); - } - - function assertEq(bytes memory a, bytes memory b, string memory err) internal virtual { - assertEq0(a, b, err); - } - - function assertEq(uint256[] memory a, uint256[] memory b) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log("Error: a == b not satisfied [uint[]]"); - emit log_named_array(" Left", a); - emit log_named_array(" Right", b); - fail(); - } - } - - function assertEq(int256[] memory a, int256[] memory b) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log("Error: a == b not satisfied [int[]]"); - emit log_named_array(" Left", a); - emit log_named_array(" Right", b); - fail(); - } - } - - function assertEq(address[] memory a, address[] memory b) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log("Error: a == b not satisfied [address[]]"); - emit log_named_array(" Left", a); - emit log_named_array(" Right", b); - fail(); - } - } - - function assertEq(uint256[] memory a, uint256[] memory b, string memory err) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function assertEq(int256[] memory a, int256[] memory b, string memory err) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function assertEq(address[] memory a, address[] memory b, string memory err) internal virtual { - if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - // Legacy helper - function assertEqUint(uint256 a, uint256 b) internal virtual { - assertEq(uint256(a), uint256(b)); - } - - function assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log("Error: a ~= b not satisfied [uint]"); - emit log_named_uint(" Left", a); - emit log_named_uint(" Right", b); - emit log_named_uint(" Max Delta", maxDelta); - emit log_named_uint(" Delta", delta); - fail(); - } - } - - function assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, string memory err) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log_named_string("Error", err); - assertApproxEqAbs(a, b, maxDelta); - } - } - - function assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log("Error: a ~= b not satisfied [uint]"); - emit log_named_decimal_uint(" Left", a, decimals); - emit log_named_decimal_uint(" Right", b, decimals); - emit log_named_decimal_uint(" Max Delta", maxDelta, decimals); - emit log_named_decimal_uint(" Delta", delta, decimals); - fail(); - } - } - - function assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals, string memory err) - internal - virtual - { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log_named_string("Error", err); - assertApproxEqAbsDecimal(a, b, maxDelta, decimals); - } - } - - function assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log("Error: a ~= b not satisfied [int]"); - emit log_named_int(" Left", a); - emit log_named_int(" Right", b); - emit log_named_uint(" Max Delta", maxDelta); - emit log_named_uint(" Delta", delta); - fail(); - } - } - - function assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, string memory err) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log_named_string("Error", err); - assertApproxEqAbs(a, b, maxDelta); - } - } - - function assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals) internal virtual { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log("Error: a ~= b not satisfied [int]"); - emit log_named_decimal_int(" Left", a, decimals); - emit log_named_decimal_int(" Right", b, decimals); - emit log_named_decimal_uint(" Max Delta", maxDelta, decimals); - emit log_named_decimal_uint(" Delta", delta, decimals); - fail(); - } - } - - function assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals, string memory err) - internal - virtual - { - uint256 delta = stdMath.delta(a, b); - - if (delta > maxDelta) { - emit log_named_string("Error", err); - assertApproxEqAbsDecimal(a, b, maxDelta, decimals); - } - } - - function assertApproxEqRel( - uint256 a, - uint256 b, - uint256 maxPercentDelta // An 18 decimal fixed point number, where 1e18 == 100% - ) internal virtual { - if (b == 0) return assertEq(a, b); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log("Error: a ~= b not satisfied [uint]"); - emit log_named_uint(" Left", a); - emit log_named_uint(" Right", b); - emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18); - emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18); - fail(); - } - } - - function assertApproxEqRel( - uint256 a, - uint256 b, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - string memory err - ) internal virtual { - if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log_named_string("Error", err); - assertApproxEqRel(a, b, maxPercentDelta); - } - } - - function assertApproxEqRelDecimal( - uint256 a, - uint256 b, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals - ) internal virtual { - if (b == 0) return assertEq(a, b); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log("Error: a ~= b not satisfied [uint]"); - emit log_named_decimal_uint(" Left", a, decimals); - emit log_named_decimal_uint(" Right", b, decimals); - emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18); - emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18); - fail(); - } - } - - function assertApproxEqRelDecimal( - uint256 a, - uint256 b, - uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% - uint256 decimals, - string memory err - ) internal virtual { - if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log_named_string("Error", err); - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals); - } - } - - function assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta) internal virtual { - if (b == 0) return assertEq(a, b); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log("Error: a ~= b not satisfied [int]"); - emit log_named_int(" Left", a); - emit log_named_int(" Right", b); - emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18); - emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18); - fail(); - } - } - - function assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, string memory err) internal virtual { - if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log_named_string("Error", err); - assertApproxEqRel(a, b, maxPercentDelta); - } - } - - function assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals) internal virtual { - if (b == 0) return assertEq(a, b); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log("Error: a ~= b not satisfied [int]"); - emit log_named_decimal_int(" Left", a, decimals); - emit log_named_decimal_int(" Right", b, decimals); - emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18); - emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18); - fail(); - } - } - - function assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals, string memory err) - internal - virtual - { - if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too. - - uint256 percentDelta = stdMath.percentDelta(a, b); - - if (percentDelta > maxPercentDelta) { - emit log_named_string("Error", err); - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals); - } - } - - function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB) internal virtual { - assertEqCall(target, callDataA, target, callDataB, true); - } - - function assertEqCall(address targetA, bytes memory callDataA, address targetB, bytes memory callDataB) - internal - virtual - { - assertEqCall(targetA, callDataA, targetB, callDataB, true); - } - - function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB, bool strictRevertData) - internal - virtual - { - assertEqCall(target, callDataA, target, callDataB, strictRevertData); - } - - function assertEqCall( - address targetA, - bytes memory callDataA, - address targetB, - bytes memory callDataB, - bool strictRevertData - ) internal virtual { - (bool successA, bytes memory returnDataA) = address(targetA).call(callDataA); - (bool successB, bytes memory returnDataB) = address(targetB).call(callDataB); - - if (successA && successB) { - assertEq(returnDataA, returnDataB, "Call return data does not match"); - } - - if (!successA && !successB && strictRevertData) { - assertEq(returnDataA, returnDataB, "Call revert data does not match"); - } - - if (!successA && successB) { - emit log("Error: Calls were not equal"); - emit log_named_bytes(" Left call revert data", returnDataA); - emit log_named_bytes(" Right call return data", returnDataB); - fail(); - } - - if (successA && !successB) { - emit log("Error: Calls were not equal"); - emit log_named_bytes(" Left call return data", returnDataA); - emit log_named_bytes(" Right call revert data", returnDataB); - fail(); - } - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdChains.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdChains.sol deleted file mode 100644 index 79a88d09a0..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdChains.sol +++ /dev/null @@ -1,234 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {VmSafe} from "./Vm.sol"; - -/** - * StdChains provides information about EVM compatible chains that can be used in scripts/tests. - * For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are - * identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of - * the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the - * alias used in this contract, which can be found as the first argument to the - * `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. - * - * There are two main ways to use this contract: - * 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or - * `setChain(string memory chainAlias, Chain memory chain)` - * 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. - * - * The first time either of those are used, chains are initialized with the default set of RPC URLs. - * This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in - * `defaultRpcUrls`. - * - * The `setChain` function is straightforward, and it simply saves off the given chain data. - * - * The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say - * we want to retrieve the RPC URL for `mainnet`: - * - If you have specified data with `setChain`, it will return that. - * - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it - * is valid (e.g. a URL is specified, or an environment variable is given and exists). - * - If neither of the above conditions is met, the default data is returned. - * - * Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults. - */ -abstract contract StdChains { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - bool private stdChainsInitialized; - - struct ChainData { - string name; - uint256 chainId; - string rpcUrl; - } - - struct Chain { - // The chain name. - string name; - // The chain's Chain ID. - uint256 chainId; - // The chain's alias. (i.e. what gets specified in `foundry.toml`). - string chainAlias; - // A default RPC endpoint for this chain. - // NOTE: This default RPC URL is included for convenience to facilitate quick tests and - // experimentation. Do not use this RPC URL for production test suites, CI, or other heavy - // usage as you will be throttled and this is a disservice to others who need this endpoint. - string rpcUrl; - } - - // Maps from the chain's alias (matching the alias in the `foundry.toml` file) to chain data. - mapping(string => Chain) private chains; - // Maps from the chain's alias to it's default RPC URL. - mapping(string => string) private defaultRpcUrls; - // Maps from a chain ID to it's alias. - mapping(uint256 => string) private idToAlias; - - bool private fallbackToDefaultRpcUrls = true; - - // The RPC URL will be fetched from config or defaultRpcUrls if possible. - function getChain(string memory chainAlias) internal virtual returns (Chain memory chain) { - require(bytes(chainAlias).length != 0, "StdChains getChain(string): Chain alias cannot be the empty string."); - - initializeStdChains(); - chain = chains[chainAlias]; - require( - chain.chainId != 0, - string(abi.encodePacked("StdChains getChain(string): Chain with alias \"", chainAlias, "\" not found.")) - ); - - chain = getChainWithUpdatedRpcUrl(chainAlias, chain); - } - - function getChain(uint256 chainId) internal virtual returns (Chain memory chain) { - require(chainId != 0, "StdChains getChain(uint256): Chain ID cannot be 0."); - initializeStdChains(); - string memory chainAlias = idToAlias[chainId]; - - chain = chains[chainAlias]; - - require( - chain.chainId != 0, - string(abi.encodePacked("StdChains getChain(uint256): Chain with ID ", vm.toString(chainId), " not found.")) - ); - - chain = getChainWithUpdatedRpcUrl(chainAlias, chain); - } - - // set chain info, with priority to argument's rpcUrl field. - function setChain(string memory chainAlias, ChainData memory chain) internal virtual { - require( - bytes(chainAlias).length != 0, - "StdChains setChain(string,ChainData): Chain alias cannot be the empty string." - ); - - require(chain.chainId != 0, "StdChains setChain(string,ChainData): Chain ID cannot be 0."); - - initializeStdChains(); - string memory foundAlias = idToAlias[chain.chainId]; - - require( - bytes(foundAlias).length == 0 || keccak256(bytes(foundAlias)) == keccak256(bytes(chainAlias)), - string( - abi.encodePacked( - "StdChains setChain(string,ChainData): Chain ID ", - vm.toString(chain.chainId), - " already used by \"", - foundAlias, - "\"." - ) - ) - ); - - uint256 oldChainId = chains[chainAlias].chainId; - delete idToAlias[oldChainId]; - - chains[chainAlias] = - Chain({name: chain.name, chainId: chain.chainId, chainAlias: chainAlias, rpcUrl: chain.rpcUrl}); - idToAlias[chain.chainId] = chainAlias; - } - - // set chain info, with priority to argument's rpcUrl field. - function setChain(string memory chainAlias, Chain memory chain) internal virtual { - setChain(chainAlias, ChainData({name: chain.name, chainId: chain.chainId, rpcUrl: chain.rpcUrl})); - } - - function _toUpper(string memory str) private pure returns (string memory) { - bytes memory strb = bytes(str); - bytes memory copy = new bytes(strb.length); - for (uint256 i = 0; i < strb.length; i++) { - bytes1 b = strb[i]; - if (b >= 0x61 && b <= 0x7A) { - copy[i] = bytes1(uint8(b) - 32); - } else { - copy[i] = b; - } - } - return string(copy); - } - - // lookup rpcUrl, in descending order of priority: - // current -> config (foundry.toml) -> environment variable -> default - function getChainWithUpdatedRpcUrl(string memory chainAlias, Chain memory chain) private returns (Chain memory) { - if (bytes(chain.rpcUrl).length == 0) { - try vm.rpcUrl(chainAlias) returns (string memory configRpcUrl) { - chain.rpcUrl = configRpcUrl; - } catch (bytes memory err) { - string memory envName = string(abi.encodePacked(_toUpper(chainAlias), "_RPC_URL")); - if (fallbackToDefaultRpcUrls) { - chain.rpcUrl = vm.envOr(envName, defaultRpcUrls[chainAlias]); - } else { - chain.rpcUrl = vm.envString(envName); - } - // distinguish 'not found' from 'cannot read' - bytes memory notFoundError = - abi.encodeWithSignature("CheatCodeError", string(abi.encodePacked("invalid rpc url ", chainAlias))); - if (keccak256(notFoundError) != keccak256(err) || bytes(chain.rpcUrl).length == 0) { - /// @solidity memory-safe-assembly - assembly { - revert(add(32, err), mload(err)) - } - } - } - } - return chain; - } - - function setFallbackToDefaultRpcUrls(bool useDefault) internal { - fallbackToDefaultRpcUrls = useDefault; - } - - function initializeStdChains() private { - if (stdChainsInitialized) return; - - stdChainsInitialized = true; - - // If adding an RPC here, make sure to test the default RPC URL in `testRpcs` - setChainWithDefaultRpcUrl("anvil", ChainData("Anvil", 31337, "http://127.0.0.1:8545")); - setChainWithDefaultRpcUrl( - "mainnet", ChainData("Mainnet", 1, "https://mainnet.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") - ); - setChainWithDefaultRpcUrl( - "goerli", ChainData("Goerli", 5, "https://goerli.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") - ); - setChainWithDefaultRpcUrl( - "sepolia", ChainData("Sepolia", 11155111, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001") - ); - setChainWithDefaultRpcUrl("optimism", ChainData("Optimism", 10, "https://mainnet.optimism.io")); - setChainWithDefaultRpcUrl("optimism_goerli", ChainData("Optimism Goerli", 420, "https://goerli.optimism.io")); - setChainWithDefaultRpcUrl("arbitrum_one", ChainData("Arbitrum One", 42161, "https://arb1.arbitrum.io/rpc")); - setChainWithDefaultRpcUrl( - "arbitrum_one_goerli", ChainData("Arbitrum One Goerli", 421613, "https://goerli-rollup.arbitrum.io/rpc") - ); - setChainWithDefaultRpcUrl("arbitrum_nova", ChainData("Arbitrum Nova", 42170, "https://nova.arbitrum.io/rpc")); - setChainWithDefaultRpcUrl("polygon", ChainData("Polygon", 137, "https://polygon-rpc.com")); - setChainWithDefaultRpcUrl( - "polygon_mumbai", ChainData("Polygon Mumbai", 80001, "https://rpc-mumbai.maticvigil.com") - ); - setChainWithDefaultRpcUrl("avalanche", ChainData("Avalanche", 43114, "https://api.avax.network/ext/bc/C/rpc")); - setChainWithDefaultRpcUrl( - "avalanche_fuji", ChainData("Avalanche Fuji", 43113, "https://api.avax-test.network/ext/bc/C/rpc") - ); - setChainWithDefaultRpcUrl( - "bnb_smart_chain", ChainData("BNB Smart Chain", 56, "https://bsc-dataseed1.binance.org") - ); - setChainWithDefaultRpcUrl( - "bnb_smart_chain_testnet", - ChainData("BNB Smart Chain Testnet", 97, "https://rpc.ankr.com/bsc_testnet_chapel") - ); - setChainWithDefaultRpcUrl("gnosis_chain", ChainData("Gnosis Chain", 100, "https://rpc.gnosischain.com")); - setChainWithDefaultRpcUrl("moonbeam", ChainData("Moonbeam", 1284, "https://rpc.api.moonbeam.network")); - setChainWithDefaultRpcUrl( - "moonriver", ChainData("Moonriver", 1285, "https://rpc.api.moonriver.moonbeam.network") - ); - setChainWithDefaultRpcUrl("moonbase", ChainData("Moonbase", 1287, "https://rpc.testnet.moonbeam.network")); - } - - // set chain info, with priority to chainAlias' rpc url in foundry.toml - function setChainWithDefaultRpcUrl(string memory chainAlias, ChainData memory chain) private { - string memory rpcUrl = chain.rpcUrl; - defaultRpcUrls[chainAlias] = rpcUrl; - chain.rpcUrl = ""; - setChain(chainAlias, chain); - chain.rpcUrl = rpcUrl; // restore argument - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdCheats.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdCheats.sol deleted file mode 100644 index 008b743147..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdCheats.sol +++ /dev/null @@ -1,817 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {StdStorage, stdStorage} from "./StdStorage.sol"; -import {console2} from "./console2.sol"; -import {Vm} from "./Vm.sol"; - -abstract contract StdCheatsSafe { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - uint256 private constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - bool private gasMeteringOff; - - // Data structures to parse Transaction objects from the broadcast artifact - // that conform to EIP1559. The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct RawTx1559 { - string[] arguments; - address contractAddress; - string contractName; - // json value name = function - string functionSig; - bytes32 hash; - // json value name = tx - RawTx1559Detail txDetail; - // json value name = type - string opcode; - } - - struct RawTx1559Detail { - AccessList[] accessList; - bytes data; - address from; - bytes gas; - bytes nonce; - address to; - bytes txType; - bytes value; - } - - struct Tx1559 { - string[] arguments; - address contractAddress; - string contractName; - string functionSig; - bytes32 hash; - Tx1559Detail txDetail; - string opcode; - } - - struct Tx1559Detail { - AccessList[] accessList; - bytes data; - address from; - uint256 gas; - uint256 nonce; - address to; - uint256 txType; - uint256 value; - } - - // Data structures to parse Transaction objects from the broadcast artifact - // that DO NOT conform to EIP1559. The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct TxLegacy { - string[] arguments; - address contractAddress; - string contractName; - string functionSig; - string hash; - string opcode; - TxDetailLegacy transaction; - } - - struct TxDetailLegacy { - AccessList[] accessList; - uint256 chainId; - bytes data; - address from; - uint256 gas; - uint256 gasPrice; - bytes32 hash; - uint256 nonce; - bytes1 opcode; - bytes32 r; - bytes32 s; - uint256 txType; - address to; - uint8 v; - uint256 value; - } - - struct AccessList { - address accessAddress; - bytes32[] storageKeys; - } - - // Data structures to parse Receipt objects from the broadcast artifact. - // The Raw structs is what is parsed from the JSON - // and then converted to the one that is used by the user for better UX. - - struct RawReceipt { - bytes32 blockHash; - bytes blockNumber; - address contractAddress; - bytes cumulativeGasUsed; - bytes effectiveGasPrice; - address from; - bytes gasUsed; - RawReceiptLog[] logs; - bytes logsBloom; - bytes status; - address to; - bytes32 transactionHash; - bytes transactionIndex; - } - - struct Receipt { - bytes32 blockHash; - uint256 blockNumber; - address contractAddress; - uint256 cumulativeGasUsed; - uint256 effectiveGasPrice; - address from; - uint256 gasUsed; - ReceiptLog[] logs; - bytes logsBloom; - uint256 status; - address to; - bytes32 transactionHash; - uint256 transactionIndex; - } - - // Data structures to parse the entire broadcast artifact, assuming the - // transactions conform to EIP1559. - - struct EIP1559ScriptArtifact { - string[] libraries; - string path; - string[] pending; - Receipt[] receipts; - uint256 timestamp; - Tx1559[] transactions; - TxReturn[] txReturns; - } - - struct RawEIP1559ScriptArtifact { - string[] libraries; - string path; - string[] pending; - RawReceipt[] receipts; - TxReturn[] txReturns; - uint256 timestamp; - RawTx1559[] transactions; - } - - struct RawReceiptLog { - // json value = address - address logAddress; - bytes32 blockHash; - bytes blockNumber; - bytes data; - bytes logIndex; - bool removed; - bytes32[] topics; - bytes32 transactionHash; - bytes transactionIndex; - bytes transactionLogIndex; - } - - struct ReceiptLog { - // json value = address - address logAddress; - bytes32 blockHash; - uint256 blockNumber; - bytes data; - uint256 logIndex; - bytes32[] topics; - uint256 transactionIndex; - uint256 transactionLogIndex; - bool removed; - } - - struct TxReturn { - string internalType; - string value; - } - - struct Account { - address addr; - uint256 key; - } - - enum AddressType { - Payable, - NonPayable, - ZeroAddress, - Precompile, - ForgeAddress - } - - // Checks that `addr` is not blacklisted by token contracts that have a blacklist. - function assumeNotBlacklisted(address token, address addr) internal view virtual { - // Nothing to check if `token` is not a contract. - uint256 tokenCodeSize; - assembly { - tokenCodeSize := extcodesize(token) - } - require(tokenCodeSize > 0, "StdCheats assumeNotBlacklisted(address,address): Token address is not a contract."); - - bool success; - bytes memory returnData; - - // 4-byte selector for `isBlacklisted(address)`, used by USDC. - (success, returnData) = token.staticcall(abi.encodeWithSelector(0xfe575a87, addr)); - vm.assume(!success || abi.decode(returnData, (bool)) == false); - - // 4-byte selector for `isBlackListed(address)`, used by USDT. - (success, returnData) = token.staticcall(abi.encodeWithSelector(0xe47d6060, addr)); - vm.assume(!success || abi.decode(returnData, (bool)) == false); - } - - // Checks that `addr` is not blacklisted by token contracts that have a blacklist. - // This is identical to `assumeNotBlacklisted(address,address)` but with a different name, for - // backwards compatibility, since this name was used in the original PR which has already has - // a release. This function can be removed in a future release once we want a breaking change. - function assumeNoBlacklisted(address token, address addr) internal view virtual { - assumeNotBlacklisted(token, addr); - } - - function assumeAddressIsNot(address addr, AddressType addressType) internal virtual { - if (addressType == AddressType.Payable) { - assumeNotPayable(addr); - } else if (addressType == AddressType.NonPayable) { - assumePayable(addr); - } else if (addressType == AddressType.ZeroAddress) { - assumeNotZeroAddress(addr); - } else if (addressType == AddressType.Precompile) { - assumeNotPrecompile(addr); - } else if (addressType == AddressType.ForgeAddress) { - assumeNotForgeAddress(addr); - } - } - - function assumeAddressIsNot(address addr, AddressType addressType1, AddressType addressType2) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - } - - function assumeAddressIsNot( - address addr, - AddressType addressType1, - AddressType addressType2, - AddressType addressType3 - ) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - assumeAddressIsNot(addr, addressType3); - } - - function assumeAddressIsNot( - address addr, - AddressType addressType1, - AddressType addressType2, - AddressType addressType3, - AddressType addressType4 - ) internal virtual { - assumeAddressIsNot(addr, addressType1); - assumeAddressIsNot(addr, addressType2); - assumeAddressIsNot(addr, addressType3); - assumeAddressIsNot(addr, addressType4); - } - - // This function checks whether an address, `addr`, is payable. It works by sending 1 wei to - // `addr` and checking the `success` return value. - // NOTE: This function may result in state changes depending on the fallback/receive logic - // implemented by `addr`, which should be taken into account when this function is used. - function _isPayable(address addr) private returns (bool) { - require( - addr.balance < UINT256_MAX, - "StdCheats _isPayable(address): Balance equals max uint256, so it cannot receive any more funds" - ); - uint256 origBalanceTest = address(this).balance; - uint256 origBalanceAddr = address(addr).balance; - - vm.deal(address(this), 1); - (bool success,) = payable(addr).call{value: 1}(""); - - // reset balances - vm.deal(address(this), origBalanceTest); - vm.deal(addr, origBalanceAddr); - - return success; - } - - // NOTE: This function may result in state changes depending on the fallback/receive logic - // implemented by `addr`, which should be taken into account when this function is used. See the - // `_isPayable` method for more information. - function assumePayable(address addr) internal virtual { - vm.assume(_isPayable(addr)); - } - - function assumeNotPayable(address addr) internal virtual { - vm.assume(!_isPayable(addr)); - } - - function assumeNotZeroAddress(address addr) internal pure virtual { - vm.assume(addr != address(0)); - } - - function assumeNotPrecompile(address addr) internal pure virtual { - assumeNotPrecompile(addr, _pureChainId()); - } - - function assumeNotPrecompile(address addr, uint256 chainId) internal pure virtual { - // Note: For some chains like Optimism these are technically predeploys (i.e. bytecode placed at a specific - // address), but the same rationale for excluding them applies so we include those too. - - // These should be present on all EVM-compatible chains. - vm.assume(addr < address(0x1) || addr > address(0x9)); - - // forgefmt: disable-start - if (chainId == 10 || chainId == 420) { - // https://github.com/ethereum-optimism/optimism/blob/eaa371a0184b56b7ca6d9eb9cb0a2b78b2ccd864/op-bindings/predeploys/addresses.go#L6-L21 - vm.assume(addr < address(0x4200000000000000000000000000000000000000) || addr > address(0x4200000000000000000000000000000000000800)); - } else if (chainId == 42161 || chainId == 421613) { - // https://developer.arbitrum.io/useful-addresses#arbitrum-precompiles-l2-same-on-all-arb-chains - vm.assume(addr < address(0x0000000000000000000000000000000000000064) || addr > address(0x0000000000000000000000000000000000000068)); - } else if (chainId == 43114 || chainId == 43113) { - // https://github.com/ava-labs/subnet-evm/blob/47c03fd007ecaa6de2c52ea081596e0a88401f58/precompile/params.go#L18-L59 - vm.assume(addr < address(0x0100000000000000000000000000000000000000) || addr > address(0x01000000000000000000000000000000000000ff)); - vm.assume(addr < address(0x0200000000000000000000000000000000000000) || addr > address(0x02000000000000000000000000000000000000FF)); - vm.assume(addr < address(0x0300000000000000000000000000000000000000) || addr > address(0x03000000000000000000000000000000000000Ff)); - } - // forgefmt: disable-end - } - - function assumeNotForgeAddress(address addr) internal pure virtual { - // vm, console, and Create2Deployer addresses - vm.assume( - addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67 - && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C - ); - } - - function readEIP1559ScriptArtifact(string memory path) - internal - view - virtual - returns (EIP1559ScriptArtifact memory) - { - string memory data = vm.readFile(path); - bytes memory parsedData = vm.parseJson(data); - RawEIP1559ScriptArtifact memory rawArtifact = abi.decode(parsedData, (RawEIP1559ScriptArtifact)); - EIP1559ScriptArtifact memory artifact; - artifact.libraries = rawArtifact.libraries; - artifact.path = rawArtifact.path; - artifact.timestamp = rawArtifact.timestamp; - artifact.pending = rawArtifact.pending; - artifact.txReturns = rawArtifact.txReturns; - artifact.receipts = rawToConvertedReceipts(rawArtifact.receipts); - artifact.transactions = rawToConvertedEIPTx1559s(rawArtifact.transactions); - return artifact; - } - - function rawToConvertedEIPTx1559s(RawTx1559[] memory rawTxs) internal pure virtual returns (Tx1559[] memory) { - Tx1559[] memory txs = new Tx1559[](rawTxs.length); - for (uint256 i; i < rawTxs.length; i++) { - txs[i] = rawToConvertedEIPTx1559(rawTxs[i]); - } - return txs; - } - - function rawToConvertedEIPTx1559(RawTx1559 memory rawTx) internal pure virtual returns (Tx1559 memory) { - Tx1559 memory transaction; - transaction.arguments = rawTx.arguments; - transaction.contractName = rawTx.contractName; - transaction.functionSig = rawTx.functionSig; - transaction.hash = rawTx.hash; - transaction.txDetail = rawToConvertedEIP1559Detail(rawTx.txDetail); - transaction.opcode = rawTx.opcode; - return transaction; - } - - function rawToConvertedEIP1559Detail(RawTx1559Detail memory rawDetail) - internal - pure - virtual - returns (Tx1559Detail memory) - { - Tx1559Detail memory txDetail; - txDetail.data = rawDetail.data; - txDetail.from = rawDetail.from; - txDetail.to = rawDetail.to; - txDetail.nonce = _bytesToUint(rawDetail.nonce); - txDetail.txType = _bytesToUint(rawDetail.txType); - txDetail.value = _bytesToUint(rawDetail.value); - txDetail.gas = _bytesToUint(rawDetail.gas); - txDetail.accessList = rawDetail.accessList; - return txDetail; - } - - function readTx1559s(string memory path) internal view virtual returns (Tx1559[] memory) { - string memory deployData = vm.readFile(path); - bytes memory parsedDeployData = vm.parseJson(deployData, ".transactions"); - RawTx1559[] memory rawTxs = abi.decode(parsedDeployData, (RawTx1559[])); - return rawToConvertedEIPTx1559s(rawTxs); - } - - function readTx1559(string memory path, uint256 index) internal view virtual returns (Tx1559 memory) { - string memory deployData = vm.readFile(path); - string memory key = string(abi.encodePacked(".transactions[", vm.toString(index), "]")); - bytes memory parsedDeployData = vm.parseJson(deployData, key); - RawTx1559 memory rawTx = abi.decode(parsedDeployData, (RawTx1559)); - return rawToConvertedEIPTx1559(rawTx); - } - - // Analogous to readTransactions, but for receipts. - function readReceipts(string memory path) internal view virtual returns (Receipt[] memory) { - string memory deployData = vm.readFile(path); - bytes memory parsedDeployData = vm.parseJson(deployData, ".receipts"); - RawReceipt[] memory rawReceipts = abi.decode(parsedDeployData, (RawReceipt[])); - return rawToConvertedReceipts(rawReceipts); - } - - function readReceipt(string memory path, uint256 index) internal view virtual returns (Receipt memory) { - string memory deployData = vm.readFile(path); - string memory key = string(abi.encodePacked(".receipts[", vm.toString(index), "]")); - bytes memory parsedDeployData = vm.parseJson(deployData, key); - RawReceipt memory rawReceipt = abi.decode(parsedDeployData, (RawReceipt)); - return rawToConvertedReceipt(rawReceipt); - } - - function rawToConvertedReceipts(RawReceipt[] memory rawReceipts) internal pure virtual returns (Receipt[] memory) { - Receipt[] memory receipts = new Receipt[](rawReceipts.length); - for (uint256 i; i < rawReceipts.length; i++) { - receipts[i] = rawToConvertedReceipt(rawReceipts[i]); - } - return receipts; - } - - function rawToConvertedReceipt(RawReceipt memory rawReceipt) internal pure virtual returns (Receipt memory) { - Receipt memory receipt; - receipt.blockHash = rawReceipt.blockHash; - receipt.to = rawReceipt.to; - receipt.from = rawReceipt.from; - receipt.contractAddress = rawReceipt.contractAddress; - receipt.effectiveGasPrice = _bytesToUint(rawReceipt.effectiveGasPrice); - receipt.cumulativeGasUsed = _bytesToUint(rawReceipt.cumulativeGasUsed); - receipt.gasUsed = _bytesToUint(rawReceipt.gasUsed); - receipt.status = _bytesToUint(rawReceipt.status); - receipt.transactionIndex = _bytesToUint(rawReceipt.transactionIndex); - receipt.blockNumber = _bytesToUint(rawReceipt.blockNumber); - receipt.logs = rawToConvertedReceiptLogs(rawReceipt.logs); - receipt.logsBloom = rawReceipt.logsBloom; - receipt.transactionHash = rawReceipt.transactionHash; - return receipt; - } - - function rawToConvertedReceiptLogs(RawReceiptLog[] memory rawLogs) - internal - pure - virtual - returns (ReceiptLog[] memory) - { - ReceiptLog[] memory logs = new ReceiptLog[](rawLogs.length); - for (uint256 i; i < rawLogs.length; i++) { - logs[i].logAddress = rawLogs[i].logAddress; - logs[i].blockHash = rawLogs[i].blockHash; - logs[i].blockNumber = _bytesToUint(rawLogs[i].blockNumber); - logs[i].data = rawLogs[i].data; - logs[i].logIndex = _bytesToUint(rawLogs[i].logIndex); - logs[i].topics = rawLogs[i].topics; - logs[i].transactionIndex = _bytesToUint(rawLogs[i].transactionIndex); - logs[i].transactionLogIndex = _bytesToUint(rawLogs[i].transactionLogIndex); - logs[i].removed = rawLogs[i].removed; - } - return logs; - } - - // Deploy a contract by fetching the contract bytecode from - // the artifacts directory - // e.g. `deployCode(code, abi.encode(arg1,arg2,arg3))` - function deployCode(string memory what, bytes memory args) internal virtual returns (address addr) { - bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); - /// @solidity memory-safe-assembly - assembly { - addr := create(0, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,bytes): Deployment failed."); - } - - function deployCode(string memory what) internal virtual returns (address addr) { - bytes memory bytecode = vm.getCode(what); - /// @solidity memory-safe-assembly - assembly { - addr := create(0, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string): Deployment failed."); - } - - /// @dev deploy contract with value on construction - function deployCode(string memory what, bytes memory args, uint256 val) internal virtual returns (address addr) { - bytes memory bytecode = abi.encodePacked(vm.getCode(what), args); - /// @solidity memory-safe-assembly - assembly { - addr := create(val, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,bytes,uint256): Deployment failed."); - } - - function deployCode(string memory what, uint256 val) internal virtual returns (address addr) { - bytes memory bytecode = vm.getCode(what); - /// @solidity memory-safe-assembly - assembly { - addr := create(val, add(bytecode, 0x20), mload(bytecode)) - } - - require(addr != address(0), "StdCheats deployCode(string,uint256): Deployment failed."); - } - - // creates a labeled address and the corresponding private key - function makeAddrAndKey(string memory name) internal virtual returns (address addr, uint256 privateKey) { - privateKey = uint256(keccak256(abi.encodePacked(name))); - addr = vm.addr(privateKey); - vm.label(addr, name); - } - - // creates a labeled address - function makeAddr(string memory name) internal virtual returns (address addr) { - (addr,) = makeAddrAndKey(name); - } - - // Destroys an account immediately, sending the balance to beneficiary. - // Destroying means: balance will be zero, code will be empty, and nonce will be 0 - // This is similar to selfdestruct but not identical: selfdestruct destroys code and nonce - // only after tx ends, this will run immediately. - function destroyAccount(address who, address beneficiary) internal virtual { - uint256 currBalance = who.balance; - vm.etch(who, abi.encode()); - vm.deal(who, 0); - vm.resetNonce(who); - - uint256 beneficiaryBalance = beneficiary.balance; - vm.deal(beneficiary, currBalance + beneficiaryBalance); - } - - // creates a struct containing both a labeled address and the corresponding private key - function makeAccount(string memory name) internal virtual returns (Account memory account) { - (account.addr, account.key) = makeAddrAndKey(name); - } - - function deriveRememberKey(string memory mnemonic, uint32 index) - internal - virtual - returns (address who, uint256 privateKey) - { - privateKey = vm.deriveKey(mnemonic, index); - who = vm.rememberKey(privateKey); - } - - function _bytesToUint(bytes memory b) private pure returns (uint256) { - require(b.length <= 32, "StdCheats _bytesToUint(bytes): Bytes length exceeds 32."); - return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); - } - - function isFork() internal view virtual returns (bool status) { - try vm.activeFork() { - status = true; - } catch (bytes memory) {} - } - - modifier skipWhenForking() { - if (!isFork()) { - _; - } - } - - modifier skipWhenNotForking() { - if (isFork()) { - _; - } - } - - modifier noGasMetering() { - vm.pauseGasMetering(); - // To prevent turning gas monitoring back on with nested functions that use this modifier, - // we check if gasMetering started in the off position. If it did, we don't want to turn - // it back on until we exit the top level function that used the modifier - // - // i.e. funcA() noGasMetering { funcB() }, where funcB has noGasMetering as well. - // funcA will have `gasStartedOff` as false, funcB will have it as true, - // so we only turn metering back on at the end of the funcA - bool gasStartedOff = gasMeteringOff; - gasMeteringOff = true; - - _; - - // if gas metering was on when this modifier was called, turn it back on at the end - if (!gasStartedOff) { - gasMeteringOff = false; - vm.resumeGasMetering(); - } - } - - // We use this complex approach of `_viewChainId` and `_pureChainId` to ensure there are no - // compiler warnings when accessing chain ID in any solidity version supported by forge-std. We - // can't simply access the chain ID in a normal view or pure function because the solc View Pure - // Checker changed `chainid` from pure to view in 0.8.0. - function _viewChainId() private view returns (uint256 chainId) { - // Assembly required since `block.chainid` was introduced in 0.8.0. - assembly { - chainId := chainid() - } - - address(this); // Silence warnings in older Solc versions. - } - - function _pureChainId() private pure returns (uint256 chainId) { - function() internal view returns (uint256) fnIn = _viewChainId; - function() internal pure returns (uint256) pureChainId; - assembly { - pureChainId := fnIn - } - chainId = pureChainId(); - } -} - -// Wrappers around cheatcodes to avoid footguns -abstract contract StdCheats is StdCheatsSafe { - using stdStorage for StdStorage; - - StdStorage private stdstore; - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; - - // Skip forward or rewind time by the specified number of seconds - function skip(uint256 time) internal virtual { - vm.warp(block.timestamp + time); - } - - function rewind(uint256 time) internal virtual { - vm.warp(block.timestamp - time); - } - - // Setup a prank from an address that has some ether - function hoax(address msgSender) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.prank(msgSender); - } - - function hoax(address msgSender, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.prank(msgSender); - } - - function hoax(address msgSender, address origin) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.prank(msgSender, origin); - } - - function hoax(address msgSender, address origin, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.prank(msgSender, origin); - } - - // Start perpetual prank from an address that has some ether - function startHoax(address msgSender) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.startPrank(msgSender); - } - - function startHoax(address msgSender, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.startPrank(msgSender); - } - - // Start perpetual prank from an address that has some ether - // tx.origin is set to the origin parameter - function startHoax(address msgSender, address origin) internal virtual { - vm.deal(msgSender, 1 << 128); - vm.startPrank(msgSender, origin); - } - - function startHoax(address msgSender, address origin, uint256 give) internal virtual { - vm.deal(msgSender, give); - vm.startPrank(msgSender, origin); - } - - function changePrank(address msgSender) internal virtual { - console2_log("changePrank is deprecated. Please use vm.startPrank instead."); - vm.stopPrank(); - vm.startPrank(msgSender); - } - - function changePrank(address msgSender, address txOrigin) internal virtual { - vm.stopPrank(); - vm.startPrank(msgSender, txOrigin); - } - - // The same as Vm's `deal` - // Use the alternative signature for ERC20 tokens - function deal(address to, uint256 give) internal virtual { - vm.deal(to, give); - } - - // Set the balance of an account for any ERC20 token - // Use the alternative signature to update `totalSupply` - function deal(address token, address to, uint256 give) internal virtual { - deal(token, to, give, false); - } - - // Set the balance of an account for any ERC1155 token - // Use the alternative signature to update `totalSupply` - function dealERC1155(address token, address to, uint256 id, uint256 give) internal virtual { - dealERC1155(token, to, id, give, false); - } - - function deal(address token, address to, uint256 give, bool adjust) internal virtual { - // get current balance - (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to)); - uint256 prevBal = abi.decode(balData, (uint256)); - - // update balance - stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(give); - - // update total supply - if (adjust) { - (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0x18160ddd)); - uint256 totSup = abi.decode(totSupData, (uint256)); - if (give < prevBal) { - totSup -= (prevBal - give); - } else { - totSup += (give - prevBal); - } - stdstore.target(token).sig(0x18160ddd).checked_write(totSup); - } - } - - function dealERC1155(address token, address to, uint256 id, uint256 give, bool adjust) internal virtual { - // get current balance - (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x00fdd58e, to, id)); - uint256 prevBal = abi.decode(balData, (uint256)); - - // update balance - stdstore.target(token).sig(0x00fdd58e).with_key(to).with_key(id).checked_write(give); - - // update total supply - if (adjust) { - (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0xbd85b039, id)); - require( - totSupData.length != 0, - "StdCheats deal(address,address,uint,uint,bool): target contract is not ERC1155Supply." - ); - uint256 totSup = abi.decode(totSupData, (uint256)); - if (give < prevBal) { - totSup -= (prevBal - give); - } else { - totSup += (give - prevBal); - } - stdstore.target(token).sig(0xbd85b039).with_key(id).checked_write(totSup); - } - } - - function dealERC721(address token, address to, uint256 id) internal virtual { - // check if token id is already minted and the actual owner. - (bool successMinted, bytes memory ownerData) = token.staticcall(abi.encodeWithSelector(0x6352211e, id)); - require(successMinted, "StdCheats deal(address,address,uint,bool): id not minted."); - - // get owner current balance - (, bytes memory fromBalData) = - token.staticcall(abi.encodeWithSelector(0x70a08231, abi.decode(ownerData, (address)))); - uint256 fromPrevBal = abi.decode(fromBalData, (uint256)); - - // get new user current balance - (, bytes memory toBalData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to)); - uint256 toPrevBal = abi.decode(toBalData, (uint256)); - - // update balances - stdstore.target(token).sig(0x70a08231).with_key(abi.decode(ownerData, (address))).checked_write(--fromPrevBal); - stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(++toPrevBal); - - // update owner - stdstore.target(token).sig(0x6352211e).with_key(id).checked_write(to); - } - - function deployCodeTo(string memory what, address where) internal virtual { - deployCodeTo(what, "", 0, where); - } - - function deployCodeTo(string memory what, bytes memory args, address where) internal virtual { - deployCodeTo(what, args, 0, where); - } - - function deployCodeTo(string memory what, bytes memory args, uint256 value, address where) internal virtual { - bytes memory creationCode = vm.getCode(what); - vm.etch(where, abi.encodePacked(creationCode, args)); - (bool success, bytes memory runtimeBytecode) = where.call{value: value}(""); - require(success, "StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode."); - vm.etch(where, runtimeBytecode); - } - - // Used to prevent the compilation of console, which shortens the compilation time when console is not used elsewhere. - function console2_log(string memory p0) private view { - (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string)", p0)); - status; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdError.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdError.sol deleted file mode 100644 index a302191faa..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdError.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: MIT -// Panics work for versions >=0.8.0, but we lowered the pragma to make this compatible with Test -pragma solidity >=0.6.2 <0.9.0; - -library stdError { - bytes public constant assertionError = abi.encodeWithSignature("Panic(uint256)", 0x01); - bytes public constant arithmeticError = abi.encodeWithSignature("Panic(uint256)", 0x11); - bytes public constant divisionError = abi.encodeWithSignature("Panic(uint256)", 0x12); - bytes public constant enumConversionError = abi.encodeWithSignature("Panic(uint256)", 0x21); - bytes public constant encodeStorageError = abi.encodeWithSignature("Panic(uint256)", 0x22); - bytes public constant popError = abi.encodeWithSignature("Panic(uint256)", 0x31); - bytes public constant indexOOBError = abi.encodeWithSignature("Panic(uint256)", 0x32); - bytes public constant memOverflowError = abi.encodeWithSignature("Panic(uint256)", 0x41); - bytes public constant zeroVarError = abi.encodeWithSignature("Panic(uint256)", 0x51); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdInvariant.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdInvariant.sol deleted file mode 100644 index fd9d0a1dba..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdInvariant.sol +++ /dev/null @@ -1,92 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -abstract contract StdInvariant { - struct FuzzSelector { - address addr; - bytes4[] selectors; - } - - address[] private _excludedContracts; - address[] private _excludedSenders; - address[] private _targetedContracts; - address[] private _targetedSenders; - - string[] private _excludedArtifacts; - string[] private _targetedArtifacts; - - FuzzSelector[] private _targetedArtifactSelectors; - FuzzSelector[] private _targetedSelectors; - - // Functions for users: - // These are intended to be called in tests. - - function excludeContract(address newExcludedContract_) internal { - _excludedContracts.push(newExcludedContract_); - } - - function excludeSender(address newExcludedSender_) internal { - _excludedSenders.push(newExcludedSender_); - } - - function excludeArtifact(string memory newExcludedArtifact_) internal { - _excludedArtifacts.push(newExcludedArtifact_); - } - - function targetArtifact(string memory newTargetedArtifact_) internal { - _targetedArtifacts.push(newTargetedArtifact_); - } - - function targetArtifactSelector(FuzzSelector memory newTargetedArtifactSelector_) internal { - _targetedArtifactSelectors.push(newTargetedArtifactSelector_); - } - - function targetContract(address newTargetedContract_) internal { - _targetedContracts.push(newTargetedContract_); - } - - function targetSelector(FuzzSelector memory newTargetedSelector_) internal { - _targetedSelectors.push(newTargetedSelector_); - } - - function targetSender(address newTargetedSender_) internal { - _targetedSenders.push(newTargetedSender_); - } - - // Functions for forge: - // These are called by forge to run invariant tests and don't need to be called in tests. - - function excludeArtifacts() public view returns (string[] memory excludedArtifacts_) { - excludedArtifacts_ = _excludedArtifacts; - } - - function excludeContracts() public view returns (address[] memory excludedContracts_) { - excludedContracts_ = _excludedContracts; - } - - function excludeSenders() public view returns (address[] memory excludedSenders_) { - excludedSenders_ = _excludedSenders; - } - - function targetArtifacts() public view returns (string[] memory targetedArtifacts_) { - targetedArtifacts_ = _targetedArtifacts; - } - - function targetArtifactSelectors() public view returns (FuzzSelector[] memory targetedArtifactSelectors_) { - targetedArtifactSelectors_ = _targetedArtifactSelectors; - } - - function targetContracts() public view returns (address[] memory targetedContracts_) { - targetedContracts_ = _targetedContracts; - } - - function targetSelectors() public view returns (FuzzSelector[] memory targetedSelectors_) { - targetedSelectors_ = _targetedSelectors; - } - - function targetSenders() public view returns (address[] memory targetedSenders_) { - targetedSenders_ = _targetedSenders; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdJson.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdJson.sol deleted file mode 100644 index 014e6b15e5..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdJson.sol +++ /dev/null @@ -1,179 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.0 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {VmSafe} from "./Vm.sol"; - -// Helpers for parsing and writing JSON files -// To parse: -// ``` -// using stdJson for string; -// string memory json = vm.readFile("some_peth"); -// json.parseUint(""); -// ``` -// To write: -// ``` -// using stdJson for string; -// string memory json = "deploymentArtifact"; -// Contract contract = new Contract(); -// json.serialize("contractAddress", address(contract)); -// json = json.serialize("deploymentTimes", uint(1)); -// // store the stringified JSON to the 'json' variable we have been using as a key -// // as we won't need it any longer -// string memory json2 = "finalArtifact"; -// string memory final = json2.serialize("depArtifact", json); -// final.write(""); -// ``` - -library stdJson { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function parseRaw(string memory json, string memory key) internal pure returns (bytes memory) { - return vm.parseJson(json, key); - } - - function readUint(string memory json, string memory key) internal returns (uint256) { - return vm.parseJsonUint(json, key); - } - - function readUintArray(string memory json, string memory key) internal returns (uint256[] memory) { - return vm.parseJsonUintArray(json, key); - } - - function readInt(string memory json, string memory key) internal returns (int256) { - return vm.parseJsonInt(json, key); - } - - function readIntArray(string memory json, string memory key) internal returns (int256[] memory) { - return vm.parseJsonIntArray(json, key); - } - - function readBytes32(string memory json, string memory key) internal returns (bytes32) { - return vm.parseJsonBytes32(json, key); - } - - function readBytes32Array(string memory json, string memory key) internal returns (bytes32[] memory) { - return vm.parseJsonBytes32Array(json, key); - } - - function readString(string memory json, string memory key) internal returns (string memory) { - return vm.parseJsonString(json, key); - } - - function readStringArray(string memory json, string memory key) internal returns (string[] memory) { - return vm.parseJsonStringArray(json, key); - } - - function readAddress(string memory json, string memory key) internal returns (address) { - return vm.parseJsonAddress(json, key); - } - - function readAddressArray(string memory json, string memory key) internal returns (address[] memory) { - return vm.parseJsonAddressArray(json, key); - } - - function readBool(string memory json, string memory key) internal returns (bool) { - return vm.parseJsonBool(json, key); - } - - function readBoolArray(string memory json, string memory key) internal returns (bool[] memory) { - return vm.parseJsonBoolArray(json, key); - } - - function readBytes(string memory json, string memory key) internal returns (bytes memory) { - return vm.parseJsonBytes(json, key); - } - - function readBytesArray(string memory json, string memory key) internal returns (bytes[] memory) { - return vm.parseJsonBytesArray(json, key); - } - - function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bool[] memory value) - internal - returns (string memory) - { - return vm.serializeBool(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, uint256[] memory value) - internal - returns (string memory) - { - return vm.serializeUint(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, int256[] memory value) - internal - returns (string memory) - { - return vm.serializeInt(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, address[] memory value) - internal - returns (string memory) - { - return vm.serializeAddress(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes32[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes32(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, bytes[] memory value) - internal - returns (string memory) - { - return vm.serializeBytes(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function serialize(string memory jsonKey, string memory key, string[] memory value) - internal - returns (string memory) - { - return vm.serializeString(jsonKey, key, value); - } - - function write(string memory jsonKey, string memory path) internal { - vm.writeJson(jsonKey, path); - } - - function write(string memory jsonKey, string memory path, string memory valueKey) internal { - vm.writeJson(jsonKey, path, valueKey); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdMath.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdMath.sol deleted file mode 100644 index 459523bdac..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdMath.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -library stdMath { - int256 private constant INT256_MIN = -57896044618658097711785492504343953926634992332820282019728792003956564819968; - - function abs(int256 a) internal pure returns (uint256) { - // Required or it will fail when `a = type(int256).min` - if (a == INT256_MIN) { - return 57896044618658097711785492504343953926634992332820282019728792003956564819968; - } - - return uint256(a > 0 ? a : -a); - } - - function delta(uint256 a, uint256 b) internal pure returns (uint256) { - return a > b ? a - b : b - a; - } - - function delta(int256 a, int256 b) internal pure returns (uint256) { - // a and b are of the same sign - // this works thanks to two's complement, the left-most bit is the sign bit - if ((a ^ b) > -1) { - return delta(abs(a), abs(b)); - } - - // a and b are of opposite signs - return abs(a) + abs(b); - } - - function percentDelta(uint256 a, uint256 b) internal pure returns (uint256) { - uint256 absDelta = delta(a, b); - - return absDelta * 1e18 / b; - } - - function percentDelta(int256 a, int256 b) internal pure returns (uint256) { - uint256 absDelta = delta(a, b); - uint256 absB = abs(b); - - return absDelta * 1e18 / absB; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdStorage.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdStorage.sol deleted file mode 100644 index 708db32cdf..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdStorage.sol +++ /dev/null @@ -1,331 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -import {Vm} from "./Vm.sol"; - -struct StdStorage { - mapping(address => mapping(bytes4 => mapping(bytes32 => uint256))) slots; - mapping(address => mapping(bytes4 => mapping(bytes32 => bool))) finds; - bytes32[] _keys; - bytes4 _sig; - uint256 _depth; - address _target; - bytes32 _set; -} - -library stdStorageSafe { - event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot); - event WARNING_UninitedSlot(address who, uint256 slot); - - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function sigs(string memory sigStr) internal pure returns (bytes4) { - return bytes4(keccak256(bytes(sigStr))); - } - - /// @notice find an arbitrary storage slot given a function sig, input data, address of the contract and a value to check against - // slot complexity: - // if flat, will be bytes32(uint256(uint)); - // if map, will be keccak256(abi.encode(key, uint(slot))); - // if deep map, will be keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot))))); - // if map struct, will be bytes32(uint256(keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot)))))) + structFieldDepth); - function find(StdStorage storage self) internal returns (uint256) { - address who = self._target; - bytes4 fsig = self._sig; - uint256 field_depth = self._depth; - bytes32[] memory ins = self._keys; - - // calldata to test against - if (self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]) { - return self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]; - } - bytes memory cald = abi.encodePacked(fsig, flatten(ins)); - vm.record(); - bytes32 fdat; - { - (, bytes memory rdat) = who.staticcall(cald); - fdat = bytesToBytes32(rdat, 32 * field_depth); - } - - (bytes32[] memory reads,) = vm.accesses(address(who)); - if (reads.length == 1) { - bytes32 curr = vm.load(who, reads[0]); - if (curr == bytes32(0)) { - emit WARNING_UninitedSlot(who, uint256(reads[0])); - } - if (fdat != curr) { - require( - false, - "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported." - ); - } - emit SlotFound(who, fsig, keccak256(abi.encodePacked(ins, field_depth)), uint256(reads[0])); - self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = uint256(reads[0]); - self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = true; - } else if (reads.length > 1) { - for (uint256 i = 0; i < reads.length; i++) { - bytes32 prev = vm.load(who, reads[i]); - if (prev == bytes32(0)) { - emit WARNING_UninitedSlot(who, uint256(reads[i])); - } - // store - vm.store(who, reads[i], bytes32(hex"1337")); - bool success; - bytes memory rdat; - { - (success, rdat) = who.staticcall(cald); - fdat = bytesToBytes32(rdat, 32 * field_depth); - } - - if (success && fdat == bytes32(hex"1337")) { - // we found which of the slots is the actual one - emit SlotFound(who, fsig, keccak256(abi.encodePacked(ins, field_depth)), uint256(reads[i])); - self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = uint256(reads[i]); - self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = true; - vm.store(who, reads[i], prev); - break; - } - vm.store(who, reads[i], prev); - } - } else { - revert("stdStorage find(StdStorage): No storage use detected for target."); - } - - require( - self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))], - "stdStorage find(StdStorage): Slot(s) not found." - ); - - delete self._target; - delete self._sig; - delete self._keys; - delete self._depth; - - return self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]; - } - - function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { - self._target = _target; - return self; - } - - function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { - self._sig = _sig; - return self; - } - - function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { - self._sig = sigs(_sig); - return self; - } - - function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { - self._keys.push(bytes32(uint256(uint160(who)))); - return self; - } - - function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { - self._keys.push(bytes32(amt)); - return self; - } - - function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { - self._keys.push(key); - return self; - } - - function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { - self._depth = _depth; - return self; - } - - function read(StdStorage storage self) private returns (bytes memory) { - address t = self._target; - uint256 s = find(self); - return abi.encode(vm.load(t, bytes32(s))); - } - - function read_bytes32(StdStorage storage self) internal returns (bytes32) { - return abi.decode(read(self), (bytes32)); - } - - function read_bool(StdStorage storage self) internal returns (bool) { - int256 v = read_int(self); - if (v == 0) return false; - if (v == 1) return true; - revert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); - } - - function read_address(StdStorage storage self) internal returns (address) { - return abi.decode(read(self), (address)); - } - - function read_uint(StdStorage storage self) internal returns (uint256) { - return abi.decode(read(self), (uint256)); - } - - function read_int(StdStorage storage self) internal returns (int256) { - return abi.decode(read(self), (int256)); - } - - function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) { - bytes32 out; - - uint256 max = b.length > 32 ? 32 : b.length; - for (uint256 i = 0; i < max; i++) { - out |= bytes32(b[offset + i] & 0xFF) >> (i * 8); - } - return out; - } - - function flatten(bytes32[] memory b) private pure returns (bytes memory) { - bytes memory result = new bytes(b.length * 32); - for (uint256 i = 0; i < b.length; i++) { - bytes32 k = b[i]; - /// @solidity memory-safe-assembly - assembly { - mstore(add(result, add(32, mul(32, i))), k) - } - } - - return result; - } -} - -library stdStorage { - Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - function sigs(string memory sigStr) internal pure returns (bytes4) { - return stdStorageSafe.sigs(sigStr); - } - - function find(StdStorage storage self) internal returns (uint256) { - return stdStorageSafe.find(self); - } - - function target(StdStorage storage self, address _target) internal returns (StdStorage storage) { - return stdStorageSafe.target(self, _target); - } - - function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) { - return stdStorageSafe.sig(self, _sig); - } - - function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) { - return stdStorageSafe.sig(self, _sig); - } - - function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, who); - } - - function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, amt); - } - - function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) { - return stdStorageSafe.with_key(self, key); - } - - function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) { - return stdStorageSafe.depth(self, _depth); - } - - function checked_write(StdStorage storage self, address who) internal { - checked_write(self, bytes32(uint256(uint160(who)))); - } - - function checked_write(StdStorage storage self, uint256 amt) internal { - checked_write(self, bytes32(amt)); - } - - function checked_write_int(StdStorage storage self, int256 val) internal { - checked_write(self, bytes32(uint256(val))); - } - - function checked_write(StdStorage storage self, bool write) internal { - bytes32 t; - /// @solidity memory-safe-assembly - assembly { - t := write - } - checked_write(self, t); - } - - function checked_write(StdStorage storage self, bytes32 set) internal { - address who = self._target; - bytes4 fsig = self._sig; - uint256 field_depth = self._depth; - bytes32[] memory ins = self._keys; - - bytes memory cald = abi.encodePacked(fsig, flatten(ins)); - if (!self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]) { - find(self); - } - bytes32 slot = bytes32(self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]); - - bytes32 fdat; - { - (, bytes memory rdat) = who.staticcall(cald); - fdat = bytesToBytes32(rdat, 32 * field_depth); - } - bytes32 curr = vm.load(who, slot); - - if (fdat != curr) { - require( - false, - "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported." - ); - } - vm.store(who, slot, set); - delete self._target; - delete self._sig; - delete self._keys; - delete self._depth; - } - - function read_bytes32(StdStorage storage self) internal returns (bytes32) { - return stdStorageSafe.read_bytes32(self); - } - - function read_bool(StdStorage storage self) internal returns (bool) { - return stdStorageSafe.read_bool(self); - } - - function read_address(StdStorage storage self) internal returns (address) { - return stdStorageSafe.read_address(self); - } - - function read_uint(StdStorage storage self) internal returns (uint256) { - return stdStorageSafe.read_uint(self); - } - - function read_int(StdStorage storage self) internal returns (int256) { - return stdStorageSafe.read_int(self); - } - - // Private function so needs to be copied over - function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) { - bytes32 out; - - uint256 max = b.length > 32 ? 32 : b.length; - for (uint256 i = 0; i < max; i++) { - out |= bytes32(b[offset + i] & 0xFF) >> (i * 8); - } - return out; - } - - // Private function so needs to be copied over - function flatten(bytes32[] memory b) private pure returns (bytes memory) { - bytes memory result = new bytes(b.length * 32); - for (uint256 i = 0; i < b.length; i++) { - bytes32 k = b[i]; - /// @solidity memory-safe-assembly - assembly { - mstore(add(result, add(32, mul(32, i))), k) - } - } - - return result; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdStyle.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdStyle.sol deleted file mode 100644 index d371e0c60a..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdStyle.sol +++ /dev/null @@ -1,333 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -import {VmSafe} from "./Vm.sol"; - -library StdStyle { - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - - string constant RED = "\u001b[91m"; - string constant GREEN = "\u001b[92m"; - string constant YELLOW = "\u001b[93m"; - string constant BLUE = "\u001b[94m"; - string constant MAGENTA = "\u001b[95m"; - string constant CYAN = "\u001b[96m"; - string constant BOLD = "\u001b[1m"; - string constant DIM = "\u001b[2m"; - string constant ITALIC = "\u001b[3m"; - string constant UNDERLINE = "\u001b[4m"; - string constant INVERSE = "\u001b[7m"; - string constant RESET = "\u001b[0m"; - - function styleConcat(string memory style, string memory self) private pure returns (string memory) { - return string(abi.encodePacked(style, self, RESET)); - } - - function red(string memory self) internal pure returns (string memory) { - return styleConcat(RED, self); - } - - function red(uint256 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(int256 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(address self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function red(bool self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function redBytes(bytes memory self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function redBytes32(bytes32 self) internal pure returns (string memory) { - return red(vm.toString(self)); - } - - function green(string memory self) internal pure returns (string memory) { - return styleConcat(GREEN, self); - } - - function green(uint256 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(int256 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(address self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function green(bool self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function greenBytes(bytes memory self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function greenBytes32(bytes32 self) internal pure returns (string memory) { - return green(vm.toString(self)); - } - - function yellow(string memory self) internal pure returns (string memory) { - return styleConcat(YELLOW, self); - } - - function yellow(uint256 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(int256 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(address self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellow(bool self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellowBytes(bytes memory self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function yellowBytes32(bytes32 self) internal pure returns (string memory) { - return yellow(vm.toString(self)); - } - - function blue(string memory self) internal pure returns (string memory) { - return styleConcat(BLUE, self); - } - - function blue(uint256 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(int256 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(address self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blue(bool self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blueBytes(bytes memory self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function blueBytes32(bytes32 self) internal pure returns (string memory) { - return blue(vm.toString(self)); - } - - function magenta(string memory self) internal pure returns (string memory) { - return styleConcat(MAGENTA, self); - } - - function magenta(uint256 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(int256 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(address self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magenta(bool self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magentaBytes(bytes memory self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function magentaBytes32(bytes32 self) internal pure returns (string memory) { - return magenta(vm.toString(self)); - } - - function cyan(string memory self) internal pure returns (string memory) { - return styleConcat(CYAN, self); - } - - function cyan(uint256 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(int256 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(address self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyan(bool self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyanBytes(bytes memory self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function cyanBytes32(bytes32 self) internal pure returns (string memory) { - return cyan(vm.toString(self)); - } - - function bold(string memory self) internal pure returns (string memory) { - return styleConcat(BOLD, self); - } - - function bold(uint256 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(int256 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(address self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function bold(bool self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function boldBytes(bytes memory self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function boldBytes32(bytes32 self) internal pure returns (string memory) { - return bold(vm.toString(self)); - } - - function dim(string memory self) internal pure returns (string memory) { - return styleConcat(DIM, self); - } - - function dim(uint256 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(int256 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(address self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dim(bool self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dimBytes(bytes memory self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function dimBytes32(bytes32 self) internal pure returns (string memory) { - return dim(vm.toString(self)); - } - - function italic(string memory self) internal pure returns (string memory) { - return styleConcat(ITALIC, self); - } - - function italic(uint256 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(int256 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(address self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italic(bool self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italicBytes(bytes memory self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function italicBytes32(bytes32 self) internal pure returns (string memory) { - return italic(vm.toString(self)); - } - - function underline(string memory self) internal pure returns (string memory) { - return styleConcat(UNDERLINE, self); - } - - function underline(uint256 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(int256 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(address self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underline(bool self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underlineBytes(bytes memory self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function underlineBytes32(bytes32 self) internal pure returns (string memory) { - return underline(vm.toString(self)); - } - - function inverse(string memory self) internal pure returns (string memory) { - return styleConcat(INVERSE, self); - } - - function inverse(uint256 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(int256 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(address self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverse(bool self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverseBytes(bytes memory self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } - - function inverseBytes32(bytes32 self) internal pure returns (string memory) { - return inverse(vm.toString(self)); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdUtils.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdUtils.sol deleted file mode 100644 index ad9566ecc9..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/StdUtils.sol +++ /dev/null @@ -1,198 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import {IMulticall3} from "./interfaces/IMulticall3.sol"; -import {VmSafe} from "./Vm.sol"; - -abstract contract StdUtils { - /*////////////////////////////////////////////////////////////////////////// - CONSTANTS - //////////////////////////////////////////////////////////////////////////*/ - - IMulticall3 private constant multicall = IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11); - VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); - address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; - uint256 private constant INT256_MIN_ABS = - 57896044618658097711785492504343953926634992332820282019728792003956564819968; - uint256 private constant SECP256K1_ORDER = - 115792089237316195423570985008687907852837564279074904382605163141518161494337; - uint256 private constant UINT256_MAX = - 115792089237316195423570985008687907853269984665640564039457584007913129639935; - - // Used by default when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy. - address private constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C; - - /*////////////////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////////////////*/ - - function _bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) { - require(min <= max, "StdUtils bound(uint256,uint256,uint256): Max is less than min."); - // If x is between min and max, return x directly. This is to ensure that dictionary values - // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188 - if (x >= min && x <= max) return x; - - uint256 size = max - min + 1; - - // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side. - // This helps ensure coverage of the min/max values. - if (x <= 3 && size > x) return min + x; - if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) return max - (UINT256_MAX - x); - - // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive. - if (x > max) { - uint256 diff = x - max; - uint256 rem = diff % size; - if (rem == 0) return max; - result = min + rem - 1; - } else if (x < min) { - uint256 diff = min - x; - uint256 rem = diff % size; - if (rem == 0) return min; - result = max - rem + 1; - } - } - - function bound(uint256 x, uint256 min, uint256 max) internal view virtual returns (uint256 result) { - result = _bound(x, min, max); - console2_log("Bound Result", result); - } - - function _bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) { - require(min <= max, "StdUtils bound(int256,int256,int256): Max is less than min."); - - // Shifting all int256 values to uint256 to use _bound function. The range of two types are: - // int256 : -(2**255) ~ (2**255 - 1) - // uint256: 0 ~ (2**256 - 1) - // So, add 2**255, INT256_MIN_ABS to the integer values. - // - // If the given integer value is -2**255, we cannot use `-uint256(-x)` because of the overflow. - // So, use `~uint256(x) + 1` instead. - uint256 _x = x < 0 ? (INT256_MIN_ABS - ~uint256(x) - 1) : (uint256(x) + INT256_MIN_ABS); - uint256 _min = min < 0 ? (INT256_MIN_ABS - ~uint256(min) - 1) : (uint256(min) + INT256_MIN_ABS); - uint256 _max = max < 0 ? (INT256_MIN_ABS - ~uint256(max) - 1) : (uint256(max) + INT256_MIN_ABS); - - uint256 y = _bound(_x, _min, _max); - - // To move it back to int256 value, subtract INT256_MIN_ABS at here. - result = y < INT256_MIN_ABS ? int256(~(INT256_MIN_ABS - y) + 1) : int256(y - INT256_MIN_ABS); - } - - function bound(int256 x, int256 min, int256 max) internal view virtual returns (int256 result) { - result = _bound(x, min, max); - console2_log("Bound result", vm.toString(result)); - } - - function boundPrivateKey(uint256 privateKey) internal pure virtual returns (uint256 result) { - result = _bound(privateKey, 1, SECP256K1_ORDER - 1); - } - - function bytesToUint(bytes memory b) internal pure virtual returns (uint256) { - require(b.length <= 32, "StdUtils bytesToUint(bytes): Bytes length exceeds 32."); - return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256)); - } - - /// @dev Compute the address a contract will be deployed at for a given deployer address and nonce - /// @notice adapted from Solmate implementation (https://github.com/Rari-Capital/solmate/blob/main/src/utils/LibRLP.sol) - function computeCreateAddress(address deployer, uint256 nonce) internal pure virtual returns (address) { - // forgefmt: disable-start - // The integer zero is treated as an empty byte string, and as a result it only has a length prefix, 0x80, computed via 0x80 + 0. - // A one byte integer uses its own value as its length prefix, there is no additional "0x80 + length" prefix that comes before it. - if (nonce == 0x00) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), deployer, bytes1(0x80)))); - if (nonce <= 0x7f) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), deployer, uint8(nonce)))); - - // Nonces greater than 1 byte all follow a consistent encoding scheme, where each value is preceded by a prefix of 0x80 + length. - if (nonce <= 2**8 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd7), bytes1(0x94), deployer, bytes1(0x81), uint8(nonce)))); - if (nonce <= 2**16 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd8), bytes1(0x94), deployer, bytes1(0x82), uint16(nonce)))); - if (nonce <= 2**24 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd9), bytes1(0x94), deployer, bytes1(0x83), uint24(nonce)))); - // forgefmt: disable-end - - // More details about RLP encoding can be found here: https://eth.wiki/fundamentals/rlp - // 0xda = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x84 ++ nonce) - // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex) - // 0x84 = 0x80 + 0x04 (0x04 = the bytes length of the nonce, 4 bytes, in hex) - // We assume nobody can have a nonce large enough to require more than 32 bytes. - return addressFromLast20Bytes( - keccak256(abi.encodePacked(bytes1(0xda), bytes1(0x94), deployer, bytes1(0x84), uint32(nonce))) - ); - } - - function computeCreate2Address(bytes32 salt, bytes32 initcodeHash, address deployer) - internal - pure - virtual - returns (address) - { - return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, initcodeHash))); - } - - /// @dev returns the address of a contract created with CREATE2 using the default CREATE2 deployer - function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) internal pure returns (address) { - return computeCreate2Address(salt, initCodeHash, CREATE2_FACTORY); - } - - /// @dev returns the hash of the init code (creation code + no args) used in CREATE2 with no constructor arguments - /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode - function hashInitCode(bytes memory creationCode) internal pure returns (bytes32) { - return hashInitCode(creationCode, ""); - } - - /// @dev returns the hash of the init code (creation code + ABI-encoded args) used in CREATE2 - /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode - /// @param args the ABI-encoded arguments to the constructor of C - function hashInitCode(bytes memory creationCode, bytes memory args) internal pure returns (bytes32) { - return keccak256(abi.encodePacked(creationCode, args)); - } - - // Performs a single call with Multicall3 to query the ERC-20 token balances of the given addresses. - function getTokenBalances(address token, address[] memory addresses) - internal - virtual - returns (uint256[] memory balances) - { - uint256 tokenCodeSize; - assembly { - tokenCodeSize := extcodesize(token) - } - require(tokenCodeSize > 0, "StdUtils getTokenBalances(address,address[]): Token address is not a contract."); - - // ABI encode the aggregate call to Multicall3. - uint256 length = addresses.length; - IMulticall3.Call[] memory calls = new IMulticall3.Call[](length); - for (uint256 i = 0; i < length; ++i) { - // 0x70a08231 = bytes4("balanceOf(address)")) - calls[i] = IMulticall3.Call({target: token, callData: abi.encodeWithSelector(0x70a08231, (addresses[i]))}); - } - - // Make the aggregate call. - (, bytes[] memory returnData) = multicall.aggregate(calls); - - // ABI decode the return data and return the balances. - balances = new uint256[](length); - for (uint256 i = 0; i < length; ++i) { - balances[i] = abi.decode(returnData[i], (uint256)); - } - } - - /*////////////////////////////////////////////////////////////////////////// - PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////////////////*/ - - function addressFromLast20Bytes(bytes32 bytesValue) private pure returns (address) { - return address(uint160(uint256(bytesValue))); - } - - // Used to prevent the compilation of console, which shortens the compilation time when console is not used elsewhere. - - function console2_log(string memory p0, uint256 p1) private view { - (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string,uint256)", p0, p1)); - status; - } - - function console2_log(string memory p0, string memory p1) private view { - (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string,string)", p0, p1)); - status; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Test.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Test.sol deleted file mode 100644 index 743c1834dd..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Test.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -// 💬 ABOUT -// Forge Std's default Test. - -// 🧩 MODULES -import {console} from "./console.sol"; -import {console2} from "./console2.sol"; -import {safeconsole} from "./safeconsole.sol"; -import {StdAssertions} from "./StdAssertions.sol"; -import {StdChains} from "./StdChains.sol"; -import {StdCheats} from "./StdCheats.sol"; -import {stdError} from "./StdError.sol"; -import {StdInvariant} from "./StdInvariant.sol"; -import {stdJson} from "./StdJson.sol"; -import {stdMath} from "./StdMath.sol"; -import {StdStorage, stdStorage} from "./StdStorage.sol"; -import {StdStyle} from "./StdStyle.sol"; -import {StdUtils} from "./StdUtils.sol"; -import {Vm} from "./Vm.sol"; - -// 📦 BOILERPLATE -import {TestBase} from "./Base.sol"; -import {DSTest} from "ds-test/test.sol"; - -// ⭐️ TEST -abstract contract Test is TestBase, DSTest, StdAssertions, StdChains, StdCheats, StdInvariant, StdUtils { -// Note: IS_TEST() must return true. -// Note: Must have failure system, https://github.com/dapphub/ds-test/blob/cd98eff28324bfac652e63a239a60632a761790b/src/test.sol#L39-L76. -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Vm.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Vm.sol deleted file mode 100644 index aa173f0b8e..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/Vm.sol +++ /dev/null @@ -1,542 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -// Cheatcodes are marked as view/pure/none using the following rules: -// 0. A call's observable behaviour includes its return value, logs, reverts and state writes, -// 1. If you can influence a later call's observable behaviour, you're neither `view` nor `pure (you are modifying some state be it the EVM, interpreter, filesystem, etc), -// 2. Otherwise if you can be influenced by an earlier call, or if reading some state, you're `view`, -// 3. Otherwise you're `pure`. - -interface VmSafe { - enum CallerMode { - None, - Broadcast, - RecurrentBroadcast, - Prank, - RecurrentPrank - } - - struct Log { - bytes32[] topics; - bytes data; - address emitter; - } - - struct Rpc { - string key; - string url; - } - - struct DirEntry { - string errorMessage; - string path; - uint64 depth; - bool isDir; - bool isSymlink; - } - - struct FsMetadata { - bool isDir; - bool isSymlink; - uint256 length; - bool readOnly; - uint256 modified; - uint256 accessed; - uint256 created; - } - - struct Wallet { - address addr; - uint256 publicKeyX; - uint256 publicKeyY; - uint256 privateKey; - } - - // Derives a private key from the name, labels the account with that name, and returns the wallet - function createWallet(string calldata walletLabel) external returns (Wallet memory wallet); - // Generates a wallet from the private key and returns the wallet - function createWallet(uint256 privateKey) external returns (Wallet memory wallet); - // Generates a wallet from the private key, labels the account with that name, and returns the wallet - function createWallet(uint256 privateKey, string calldata walletLabel) external returns (Wallet memory wallet); - // Signs data, (Wallet, digest) => (v, r, s) - function sign(Wallet calldata wallet, bytes32 digest) external returns (uint8 v, bytes32 r, bytes32 s); - // Get nonce for a Wallet - function getNonce(Wallet calldata wallet) external returns (uint64 nonce); - - // Loads a storage slot from an address - function load(address target, bytes32 slot) external view returns (bytes32 data); - // Signs data - function sign(uint256 privateKey, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s); - // Gets the address for a given private key - function addr(uint256 privateKey) external pure returns (address keyAddr); - // Gets the nonce of an account - function getNonce(address account) external view returns (uint64 nonce); - // Performs a foreign function call via the terminal - function ffi(string[] calldata commandInput) external returns (bytes memory result); - // Sets environment variables - function setEnv(string calldata name, string calldata value) external; - // Reads environment variables, (name) => (value) - function envBool(string calldata name) external view returns (bool value); - function envUint(string calldata name) external view returns (uint256 value); - function envInt(string calldata name) external view returns (int256 value); - function envAddress(string calldata name) external view returns (address value); - function envBytes32(string calldata name) external view returns (bytes32 value); - function envString(string calldata name) external view returns (string memory value); - function envBytes(string calldata name) external view returns (bytes memory value); - // Reads environment variables as arrays - function envBool(string calldata name, string calldata delim) external view returns (bool[] memory value); - function envUint(string calldata name, string calldata delim) external view returns (uint256[] memory value); - function envInt(string calldata name, string calldata delim) external view returns (int256[] memory value); - function envAddress(string calldata name, string calldata delim) external view returns (address[] memory value); - function envBytes32(string calldata name, string calldata delim) external view returns (bytes32[] memory value); - function envString(string calldata name, string calldata delim) external view returns (string[] memory value); - function envBytes(string calldata name, string calldata delim) external view returns (bytes[] memory value); - // Read environment variables with default value - function envOr(string calldata name, bool defaultValue) external returns (bool value); - function envOr(string calldata name, uint256 defaultValue) external returns (uint256 value); - function envOr(string calldata name, int256 defaultValue) external returns (int256 value); - function envOr(string calldata name, address defaultValue) external returns (address value); - function envOr(string calldata name, bytes32 defaultValue) external returns (bytes32 value); - function envOr(string calldata name, string calldata defaultValue) external returns (string memory value); - function envOr(string calldata name, bytes calldata defaultValue) external returns (bytes memory value); - // Read environment variables as arrays with default value - function envOr(string calldata name, string calldata delim, bool[] calldata defaultValue) - external - returns (bool[] memory value); - function envOr(string calldata name, string calldata delim, uint256[] calldata defaultValue) - external - returns (uint256[] memory value); - function envOr(string calldata name, string calldata delim, int256[] calldata defaultValue) - external - returns (int256[] memory value); - function envOr(string calldata name, string calldata delim, address[] calldata defaultValue) - external - returns (address[] memory value); - function envOr(string calldata name, string calldata delim, bytes32[] calldata defaultValue) - external - returns (bytes32[] memory value); - function envOr(string calldata name, string calldata delim, string[] calldata defaultValue) - external - returns (string[] memory value); - function envOr(string calldata name, string calldata delim, bytes[] calldata defaultValue) - external - returns (bytes[] memory value); - // Records all storage reads and writes - function record() external; - // Gets all accessed reads and write slot from a recording session, for a given address - function accesses(address target) external returns (bytes32[] memory readSlots, bytes32[] memory writeSlots); - // Gets the _creation_ bytecode from an artifact file. Takes in the relative path to the json file - function getCode(string calldata artifactPath) external view returns (bytes memory creationBytecode); - // Gets the _deployed_ bytecode from an artifact file. Takes in the relative path to the json file - function getDeployedCode(string calldata artifactPath) external view returns (bytes memory runtimeBytecode); - // Labels an address in call traces - function label(address account, string calldata newLabel) external; - // Gets the label for the specified address - function getLabel(address account) external returns (string memory currentLabel); - // Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain - function broadcast() external; - // Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain - function broadcast(address signer) external; - // Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain - function broadcast(uint256 privateKey) external; - // Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain - function startBroadcast() external; - // Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain - function startBroadcast(address signer) external; - // Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain - function startBroadcast(uint256 privateKey) external; - // Stops collecting onchain transactions - function stopBroadcast() external; - - // Get the path of the current project root. - function projectRoot() external view returns (string memory path); - // Reads the entire content of file to string. `path` is relative to the project root. - function readFile(string calldata path) external view returns (string memory data); - // Reads the entire content of file as binary. `path` is relative to the project root. - function readFileBinary(string calldata path) external view returns (bytes memory data); - // Reads next line of file to string. - function readLine(string calldata path) external view returns (string memory line); - // Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. - // `path` is relative to the project root. - function writeFile(string calldata path, string calldata data) external; - // Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. - // `path` is relative to the project root. - function writeFileBinary(string calldata path, bytes calldata data) external; - // Writes line to file, creating a file if it does not exist. - // `path` is relative to the project root. - function writeLine(string calldata path, string calldata data) external; - // Copies the contents of one file to another. This function will **overwrite** the contents of `to`. - // On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. - // Both `from` and `to` are relative to the project root. - function copyFile(string calldata from, string calldata to) external returns (uint64 copied); - // Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. - // `path` is relative to the project root. - function closeFile(string calldata path) external; - // Removes a file from the filesystem. - // This cheatcode will revert in the following situations, but is not limited to just these cases: - // - `path` points to a directory. - // - The file doesn't exist. - // - The user lacks permissions to remove the file. - // `path` is relative to the project root. - function removeFile(string calldata path) external; - // Creates a new, empty directory at the provided path. - // This cheatcode will revert in the following situations, but is not limited to just these cases: - // - User lacks permissions to modify `path`. - // - A parent of the given path doesn't exist and `recursive` is false. - // - `path` already exists and `recursive` is false. - // `path` is relative to the project root. - function createDir(string calldata path, bool recursive) external; - // Removes a directory at the provided path. - // This cheatcode will revert in the following situations, but is not limited to just these cases: - // - `path` doesn't exist. - // - `path` isn't a directory. - // - User lacks permissions to modify `path`. - // - The directory is not empty and `recursive` is false. - // `path` is relative to the project root. - function removeDir(string calldata path, bool recursive) external; - // Reads the directory at the given path recursively, up to `max_depth`. - // `max_depth` defaults to 1, meaning only the direct children of the given directory will be returned. - // Follows symbolic links if `follow_links` is true. - function readDir(string calldata path) external view returns (DirEntry[] memory entries); - function readDir(string calldata path, uint64 maxDepth) external view returns (DirEntry[] memory entries); - function readDir(string calldata path, uint64 maxDepth, bool followLinks) - external - view - returns (DirEntry[] memory entries); - // Reads a symbolic link, returning the path that the link points to. - // This cheatcode will revert in the following situations, but is not limited to just these cases: - // - `path` is not a symbolic link. - // - `path` does not exist. - function readLink(string calldata linkPath) external view returns (string memory targetPath); - // Given a path, query the file system to get information about a file, directory, etc. - function fsMetadata(string calldata path) external view returns (FsMetadata memory metadata); - - // Convert values to a string - function toString(address value) external pure returns (string memory stringifiedValue); - function toString(bytes calldata value) external pure returns (string memory stringifiedValue); - function toString(bytes32 value) external pure returns (string memory stringifiedValue); - function toString(bool value) external pure returns (string memory stringifiedValue); - function toString(uint256 value) external pure returns (string memory stringifiedValue); - function toString(int256 value) external pure returns (string memory stringifiedValue); - // Convert values from a string - function parseBytes(string calldata stringifiedValue) external pure returns (bytes memory parsedValue); - function parseAddress(string calldata stringifiedValue) external pure returns (address parsedValue); - function parseUint(string calldata stringifiedValue) external pure returns (uint256 parsedValue); - function parseInt(string calldata stringifiedValue) external pure returns (int256 parsedValue); - function parseBytes32(string calldata stringifiedValue) external pure returns (bytes32 parsedValue); - function parseBool(string calldata stringifiedValue) external pure returns (bool parsedValue); - // Record all the transaction logs - function recordLogs() external; - // Gets all the recorded logs - function getRecordedLogs() external returns (Log[] memory logs); - // Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path m/44'/60'/0'/0/{index} - function deriveKey(string calldata mnemonic, uint32 index) external pure returns (uint256 privateKey); - // Derive a private key from a provided mnenomic string (or mnenomic file path) at {derivationPath}{index} - function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index) - external - pure - returns (uint256 privateKey); - // Adds a private key to the local forge wallet and returns the address - function rememberKey(uint256 privateKey) external returns (address keyAddr); - // - // parseJson - // - // ---- - // In case the returned value is a JSON object, it's encoded as a ABI-encoded tuple. As JSON objects - // don't have the notion of ordered, but tuples do, they JSON object is encoded with it's fields ordered in - // ALPHABETICAL order. That means that in order to successfully decode the tuple, we need to define a tuple that - // encodes the fields in the same order, which is alphabetical. In the case of Solidity structs, they are encoded - // as tuples, with the attributes in the order in which they are defined. - // For example: json = { 'a': 1, 'b': 0xa4tb......3xs} - // a: uint256 - // b: address - // To decode that json, we need to define a struct or a tuple as follows: - // struct json = { uint256 a; address b; } - // If we defined a json struct with the opposite order, meaning placing the address b first, it would try to - // decode the tuple in that order, and thus fail. - // ---- - // Given a string of JSON, return it as ABI-encoded - function parseJson(string calldata json, string calldata key) external pure returns (bytes memory abiEncodedData); - function parseJson(string calldata json) external pure returns (bytes memory abiEncodedData); - - // The following parseJson cheatcodes will do type coercion, for the type that they indicate. - // For example, parseJsonUint will coerce all values to a uint256. That includes stringified numbers '12' - // and hex numbers '0xEF'. - // Type coercion works ONLY for discrete values or arrays. That means that the key must return a value or array, not - // a JSON object. - function parseJsonUint(string calldata json, string calldata key) external returns (uint256); - function parseJsonUintArray(string calldata json, string calldata key) external returns (uint256[] memory); - function parseJsonInt(string calldata json, string calldata key) external returns (int256); - function parseJsonIntArray(string calldata json, string calldata key) external returns (int256[] memory); - function parseJsonBool(string calldata json, string calldata key) external returns (bool); - function parseJsonBoolArray(string calldata json, string calldata key) external returns (bool[] memory); - function parseJsonAddress(string calldata json, string calldata key) external returns (address); - function parseJsonAddressArray(string calldata json, string calldata key) external returns (address[] memory); - function parseJsonString(string calldata json, string calldata key) external returns (string memory); - function parseJsonStringArray(string calldata json, string calldata key) external returns (string[] memory); - function parseJsonBytes(string calldata json, string calldata key) external returns (bytes memory); - function parseJsonBytesArray(string calldata json, string calldata key) external returns (bytes[] memory); - function parseJsonBytes32(string calldata json, string calldata key) external returns (bytes32); - function parseJsonBytes32Array(string calldata json, string calldata key) external returns (bytes32[] memory); - - // Checks if a key exists in a JSON or TOML object. - function keyExists(string calldata json, string calldata key) external view returns (bool); - - // Returns array of keys for a JSON object - function parseJsonKeys(string calldata json, string calldata key) external returns (string[] memory keys); - - // Serialize a key and value to a JSON object stored in-memory that can be later written to a file - // It returns the stringified version of the specific JSON file up to that moment. - function serializeBool(string calldata objectKey, string calldata valueKey, bool value) - external - returns (string memory json); - function serializeUint(string calldata objectKey, string calldata valueKey, uint256 value) - external - returns (string memory json); - function serializeInt(string calldata objectKey, string calldata valueKey, int256 value) - external - returns (string memory json); - function serializeAddress(string calldata objectKey, string calldata valueKey, address value) - external - returns (string memory json); - function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32 value) - external - returns (string memory json); - function serializeString(string calldata objectKey, string calldata valueKey, string calldata value) - external - returns (string memory json); - function serializeBytes(string calldata objectKey, string calldata valueKey, bytes calldata value) - external - returns (string memory json); - - function serializeBool(string calldata objectKey, string calldata valueKey, bool[] calldata values) - external - returns (string memory json); - function serializeUint(string calldata objectKey, string calldata valueKey, uint256[] calldata values) - external - returns (string memory json); - function serializeInt(string calldata objectKey, string calldata valueKey, int256[] calldata values) - external - returns (string memory json); - function serializeAddress(string calldata objectKey, string calldata valueKey, address[] calldata values) - external - returns (string memory json); - function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32[] calldata values) - external - returns (string memory json); - function serializeString(string calldata objectKey, string calldata valueKey, string[] calldata values) - external - returns (string memory json); - function serializeBytes(string calldata objectKey, string calldata valueKey, bytes[] calldata values) - external - returns (string memory json); - - // - // writeJson - // - // ---- - // Write a serialized JSON object to a file. If the file exists, it will be overwritten. - // Let's assume we want to write the following JSON to a file: - // - // { "boolean": true, "number": 342, "object": { "title": "finally json serialization" } } - // - // ``` - // string memory json1 = "some key"; - // vm.serializeBool(json1, "boolean", true); - // vm.serializeBool(json1, "number", uint256(342)); - // json2 = "some other key"; - // string memory output = vm.serializeString(json2, "title", "finally json serialization"); - // string memory finalJson = vm.serialize(json1, "object", output); - // vm.writeJson(finalJson, "./output/example.json"); - // ``` - // The critical insight is that every invocation of serialization will return the stringified version of the JSON - // up to that point. That means we can construct arbitrary JSON objects and then use the return stringified version - // to serialize them as values to another JSON object. - // - // json1 and json2 are simply keys used by the backend to keep track of the objects. So vm.serializeJson(json1,..) - // will find the object in-memory that is keyed by "some key". - function writeJson(string calldata json, string calldata path) external; - // Write a serialized JSON object to an **existing** JSON file, replacing a value with key = - // This is useful to replace a specific value of a JSON file, without having to parse the entire thing - function writeJson(string calldata json, string calldata path, string calldata valueKey) external; - // Returns the RPC url for the given alias - function rpcUrl(string calldata rpcAlias) external view returns (string memory json); - // Returns all rpc urls and their aliases `[alias, url][]` - function rpcUrls() external view returns (string[2][] memory urls); - // Returns all rpc urls and their aliases as structs. - function rpcUrlStructs() external view returns (Rpc[] memory urls); - // If the condition is false, discard this run's fuzz inputs and generate new ones. - function assume(bool condition) external pure; - // Pauses gas metering (i.e. gas usage is not counted). Noop if already paused. - function pauseGasMetering() external; - // Resumes gas metering (i.e. gas usage is counted again). Noop if already on. - function resumeGasMetering() external; - // Writes a breakpoint to jump to in the debugger - function breakpoint(string calldata char) external; - // Writes a conditional breakpoint to jump to in the debugger - function breakpoint(string calldata char, bool value) external; -} - -interface Vm is VmSafe { - // Sets block.timestamp - function warp(uint256 newTimestamp) external; - // Sets block.height - function roll(uint256 newHeight) external; - // Sets block.basefee - function fee(uint256 newBasefee) external; - // Sets block.difficulty - // Not available on EVM versions from Paris onwards. Use `prevrandao` instead. - // If used on unsupported EVM versions it will revert. - function difficulty(uint256 newDifficulty) external; - // Sets block.prevrandao - // Not available on EVM versions before Paris. Use `difficulty` instead. - // If used on unsupported EVM versions it will revert. - function prevrandao(bytes32 newPrevrandao) external; - // Sets block.chainid - function chainId(uint256 newChainId) external; - // Sets tx.gasprice - function txGasPrice(uint256 newGasPrice) external; - // Stores a value to an address' storage slot. - function store(address target, bytes32 slot, bytes32 value) external; - // Sets the nonce of an account; must be higher than the current nonce of the account - function setNonce(address account, uint64 newNonce) external; - // Sets the nonce of an account to an arbitrary value - function setNonceUnsafe(address account, uint64 newNonce) external; - // Resets the nonce of an account to 0 for EOAs and 1 for contract accounts - function resetNonce(address account) external; - // Sets the *next* call's msg.sender to be the input address - function prank(address msgSender) external; - // Sets all subsequent calls' msg.sender to be the input address until `stopPrank` is called - function startPrank(address msgSender) external; - // Sets the *next* call's msg.sender to be the input address, and the tx.origin to be the second input - function prank(address msgSender, address txOrigin) external; - // Sets all subsequent calls' msg.sender to be the input address until `stopPrank` is called, and the tx.origin to be the second input - function startPrank(address msgSender, address txOrigin) external; - // Resets subsequent calls' msg.sender to be `address(this)` - function stopPrank() external; - // Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification - function readCallers() external returns (CallerMode callerMode, address msgSender, address txOrigin); - // Sets an address' balance - function deal(address account, uint256 newBalance) external; - // Sets an address' code - function etch(address target, bytes calldata newRuntimeBytecode) external; - // Marks a test as skipped. Must be called at the top of the test. - function skip(bool skipTest) external; - // Expects an error on next call - function expectRevert(bytes calldata revertData) external; - function expectRevert(bytes4 revertData) external; - function expectRevert() external; - - // Prepare an expected log with all four checks enabled. - // Call this function, then emit an event, then call a function. Internally after the call, we check if - // logs were emitted in the expected order with the expected topics and data. - // Second form also checks supplied address against emitting contract. - function expectEmit() external; - function expectEmit(address emitter) external; - - // Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData). - // Call this function, then emit an event, then call a function. Internally after the call, we check if - // logs were emitted in the expected order with the expected topics and data (as specified by the booleans). - // Second form also checks supplied address against emitting contract. - function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) external; - function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter) - external; - - // Mocks a call to an address, returning specified data. - // Calldata can either be strict or a partial match, e.g. if you only - // pass a Solidity selector to the expected calldata, then the entire Solidity - // function will be mocked. - function mockCall(address callee, bytes calldata data, bytes calldata returnData) external; - // Mocks a call to an address with a specific msg.value, returning specified data. - // Calldata match takes precedence over msg.value in case of ambiguity. - function mockCall(address callee, uint256 msgValue, bytes calldata data, bytes calldata returnData) external; - // Reverts a call to an address with specified revert data. - function mockCallRevert(address callee, bytes calldata data, bytes calldata revertData) external; - // Reverts a call to an address with a specific msg.value, with specified revert data. - function mockCallRevert(address callee, uint256 msgValue, bytes calldata data, bytes calldata revertData) - external; - // Clears all mocked calls - function clearMockedCalls() external; - // Expects a call to an address with the specified calldata. - // Calldata can either be a strict or a partial match - function expectCall(address callee, bytes calldata data) external; - // Expects given number of calls to an address with the specified calldata. - function expectCall(address callee, bytes calldata data, uint64 count) external; - // Expects a call to an address with the specified msg.value and calldata - function expectCall(address callee, uint256 msgValue, bytes calldata data) external; - // Expects given number of calls to an address with the specified msg.value and calldata - function expectCall(address callee, uint256 msgValue, bytes calldata data, uint64 count) external; - // Expect a call to an address with the specified msg.value, gas, and calldata. - function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data) external; - // Expects given number of calls to an address with the specified msg.value, gas, and calldata. - function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data, uint64 count) external; - // Expect a call to an address with the specified msg.value and calldata, and a *minimum* amount of gas. - function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data) external; - // Expect given number of calls to an address with the specified msg.value and calldata, and a *minimum* amount of gas. - function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data, uint64 count) - external; - // Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the current subcontext. If any other - // memory is written to, the test will fail. Can be called multiple times to add more ranges to the set. - function expectSafeMemory(uint64 min, uint64 max) external; - // Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the next created subcontext. - // If any other memory is written to, the test will fail. Can be called multiple times to add more ranges - // to the set. - function expectSafeMemoryCall(uint64 min, uint64 max) external; - // Sets block.coinbase - function coinbase(address newCoinbase) external; - // Snapshot the current state of the evm. - // Returns the id of the snapshot that was created. - // To revert a snapshot use `revertTo` - function snapshot() external returns (uint256 snapshotId); - // Revert the state of the EVM to a previous snapshot - // Takes the snapshot id to revert to. - // This deletes the snapshot and all snapshots taken after the given snapshot id. - function revertTo(uint256 snapshotId) external returns (bool success); - // Creates a new fork with the given endpoint and block and returns the identifier of the fork - function createFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); - // Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork - function createFork(string calldata urlOrAlias) external returns (uint256 forkId); - // Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, - // and returns the identifier of the fork - function createFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); - // Creates _and_ also selects a new fork with the given endpoint and block and returns the identifier of the fork - function createSelectFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId); - // Creates _and_ also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before - // the transaction, returns the identifier of the fork - function createSelectFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId); - // Creates _and_ also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork - function createSelectFork(string calldata urlOrAlias) external returns (uint256 forkId); - // Takes a fork identifier created by `createFork` and sets the corresponding forked state as active. - function selectFork(uint256 forkId) external; - /// Returns the identifier of the currently active fork. Reverts if no fork is currently active. - function activeFork() external view returns (uint256 forkId); - // Updates the currently active fork to given block number - // This is similar to `roll` but for the currently active fork - function rollFork(uint256 blockNumber) external; - // Updates the currently active fork to given transaction - // this will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block - function rollFork(bytes32 txHash) external; - // Updates the given fork to given block number - function rollFork(uint256 forkId, uint256 blockNumber) external; - // Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block - function rollFork(uint256 forkId, bytes32 txHash) external; - // Marks that the account(s) should use persistent storage across fork swaps in a multifork setup - // Meaning, changes made to the state of this account will be kept when switching forks - function makePersistent(address account) external; - function makePersistent(address account0, address account1) external; - function makePersistent(address account0, address account1, address account2) external; - function makePersistent(address[] calldata accounts) external; - // Revokes persistent status from the address, previously added via `makePersistent` - function revokePersistent(address account) external; - function revokePersistent(address[] calldata accounts) external; - // Returns true if the account is marked as persistent - function isPersistent(address account) external view returns (bool persistent); - // In forking mode, explicitly grant the given address cheatcode access - function allowCheatcodes(address account) external; - // Fetches the given transaction from the active fork and executes it on the current state - function transact(bytes32 txHash) external; - // Fetches the given transaction from the given fork and executes it on the current state - function transact(uint256 forkId, bytes32 txHash) external; -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/console.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/console.sol deleted file mode 100644 index ad57e53687..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/console.sol +++ /dev/null @@ -1,1533 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -library console { - address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); - - function _sendLogPayload(bytes memory payload) private view { - uint256 payloadLength = payload.length; - address consoleAddress = CONSOLE_ADDRESS; - /// @solidity memory-safe-assembly - assembly { - let payloadStart := add(payload, 32) - let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) - } - } - - function log() internal view { - _sendLogPayload(abi.encodeWithSignature("log()")); - } - - function logInt(int p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); - } - - function logUint(uint p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); - } - - function logString(string memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function logBool(bool p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function logAddress(address p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function logBytes(bytes memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); - } - - function logBytes1(bytes1 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); - } - - function logBytes2(bytes2 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); - } - - function logBytes3(bytes3 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); - } - - function logBytes4(bytes4 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); - } - - function logBytes5(bytes5 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); - } - - function logBytes6(bytes6 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); - } - - function logBytes7(bytes7 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); - } - - function logBytes8(bytes8 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); - } - - function logBytes9(bytes9 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); - } - - function logBytes10(bytes10 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); - } - - function logBytes11(bytes11 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); - } - - function logBytes12(bytes12 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); - } - - function logBytes13(bytes13 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); - } - - function logBytes14(bytes14 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); - } - - function logBytes15(bytes15 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); - } - - function logBytes16(bytes16 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); - } - - function logBytes17(bytes17 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); - } - - function logBytes18(bytes18 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); - } - - function logBytes19(bytes19 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); - } - - function logBytes20(bytes20 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); - } - - function logBytes21(bytes21 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); - } - - function logBytes22(bytes22 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); - } - - function logBytes23(bytes23 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); - } - - function logBytes24(bytes24 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); - } - - function logBytes25(bytes25 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); - } - - function logBytes26(bytes26 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); - } - - function logBytes27(bytes27 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); - } - - function logBytes28(bytes28 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); - } - - function logBytes29(bytes29 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); - } - - function logBytes30(bytes30 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); - } - - function logBytes31(bytes31 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); - } - - function logBytes32(bytes32 p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); - } - - function log(uint p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); - } - - function log(string memory p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function log(bool p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function log(address p0) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function log(uint p0, uint p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1)); - } - - function log(uint p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1)); - } - - function log(uint p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1)); - } - - function log(uint p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1)); - } - - function log(string memory p0, uint p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1)); - } - - function log(string memory p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); - } - - function log(string memory p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); - } - - function log(string memory p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); - } - - function log(bool p0, uint p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1)); - } - - function log(bool p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); - } - - function log(bool p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); - } - - function log(bool p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); - } - - function log(address p0, uint p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1)); - } - - function log(address p0, string memory p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); - } - - function log(address p0, bool p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); - } - - function log(address p0, address p1) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); - } - - function log(uint p0, uint p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); - } - - function log(uint p0, uint p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); - } - - function log(uint p0, uint p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); - } - - function log(uint p0, uint p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); - } - - function log(uint p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); - } - - function log(uint p0, bool p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); - } - - function log(uint p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); - } - - function log(uint p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); - } - - function log(uint p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); - } - - function log(uint p0, address p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); - } - - function log(uint p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); - } - - function log(uint p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); - } - - function log(uint p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); - } - - function log(string memory p0, uint p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); - } - - function log(string memory p0, address p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); - } - - function log(string memory p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); - } - - function log(string memory p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); - } - - function log(string memory p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); - } - - function log(bool p0, uint p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); - } - - function log(bool p0, uint p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); - } - - function log(bool p0, uint p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); - } - - function log(bool p0, uint p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); - } - - function log(bool p0, bool p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); - } - - function log(bool p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); - } - - function log(bool p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); - } - - function log(bool p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); - } - - function log(bool p0, address p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); - } - - function log(bool p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); - } - - function log(bool p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); - } - - function log(bool p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); - } - - function log(address p0, uint p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); - } - - function log(address p0, uint p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); - } - - function log(address p0, uint p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); - } - - function log(address p0, uint p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); - } - - function log(address p0, string memory p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); - } - - function log(address p0, string memory p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); - } - - function log(address p0, string memory p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); - } - - function log(address p0, string memory p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); - } - - function log(address p0, bool p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); - } - - function log(address p0, bool p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); - } - - function log(address p0, bool p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); - } - - function log(address p0, bool p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); - } - - function log(address p0, address p1, uint p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); - } - - function log(address p0, address p1, string memory p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); - } - - function log(address p0, address p1, bool p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); - } - - function log(address p0, address p1, address p2) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); - } - - function log(uint p0, uint p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, uint p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); - } - - function log(uint p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, uint p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, string memory p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, bool p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, address p3) internal view { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); - } - -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/console2.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/console2.sol deleted file mode 100644 index c1e2cd7546..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/console2.sol +++ /dev/null @@ -1,1558 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.4.22 <0.9.0; - -/// @dev The original console.sol uses `int` and `uint` for computing function selectors, but it should -/// use `int256` and `uint256`. This modified version fixes that. This version is recommended -/// over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in -/// forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. -/// Reference: https://github.com/NomicFoundation/hardhat/issues/2178 -library console2 { - address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); - - function _castLogPayloadViewToPure( - function(bytes memory) internal view fnIn - ) internal pure returns (function(bytes memory) internal pure fnOut) { - assembly { - fnOut := fnIn - } - } - - function _sendLogPayload(bytes memory payload) internal pure { - _castLogPayloadViewToPure(_sendLogPayloadView)(payload); - } - - function _sendLogPayloadView(bytes memory payload) private view { - uint256 payloadLength = payload.length; - address consoleAddress = CONSOLE_ADDRESS; - /// @solidity memory-safe-assembly - assembly { - let payloadStart := add(payload, 32) - let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) - } - } - - function log() internal pure { - _sendLogPayload(abi.encodeWithSignature("log()")); - } - - function logInt(int256 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); - } - - function logUint(uint256 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); - } - - function logString(string memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function logBool(bool p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function logAddress(address p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function logBytes(bytes memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); - } - - function logBytes1(bytes1 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); - } - - function logBytes2(bytes2 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); - } - - function logBytes3(bytes3 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); - } - - function logBytes4(bytes4 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); - } - - function logBytes5(bytes5 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); - } - - function logBytes6(bytes6 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); - } - - function logBytes7(bytes7 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); - } - - function logBytes8(bytes8 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); - } - - function logBytes9(bytes9 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); - } - - function logBytes10(bytes10 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); - } - - function logBytes11(bytes11 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); - } - - function logBytes12(bytes12 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); - } - - function logBytes13(bytes13 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); - } - - function logBytes14(bytes14 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); - } - - function logBytes15(bytes15 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); - } - - function logBytes16(bytes16 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); - } - - function logBytes17(bytes17 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); - } - - function logBytes18(bytes18 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); - } - - function logBytes19(bytes19 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); - } - - function logBytes20(bytes20 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); - } - - function logBytes21(bytes21 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); - } - - function logBytes22(bytes22 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); - } - - function logBytes23(bytes23 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); - } - - function logBytes24(bytes24 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); - } - - function logBytes25(bytes25 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); - } - - function logBytes26(bytes26 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); - } - - function logBytes27(bytes27 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); - } - - function logBytes28(bytes28 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); - } - - function logBytes29(bytes29 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); - } - - function logBytes30(bytes30 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); - } - - function logBytes31(bytes31 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); - } - - function logBytes32(bytes32 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); - } - - function log(uint256 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); - } - - function log(int256 p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); - } - - function log(string memory p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); - } - - function log(bool p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); - } - - function log(address p0) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); - } - - function log(uint256 p0, uint256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1)); - } - - function log(uint256 p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1)); - } - - function log(uint256 p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1)); - } - - function log(uint256 p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1)); - } - - function log(string memory p0, uint256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); - } - - function log(string memory p0, int256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,int256)", p0, p1)); - } - - function log(string memory p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); - } - - function log(string memory p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); - } - - function log(string memory p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); - } - - function log(bool p0, uint256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1)); - } - - function log(bool p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); - } - - function log(bool p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); - } - - function log(bool p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); - } - - function log(address p0, uint256 p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1)); - } - - function log(address p0, string memory p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); - } - - function log(address p0, bool p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); - } - - function log(address p0, address p1) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); - } - - function log(uint256 p0, uint256 p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2)); - } - - function log(uint256 p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2)); - } - - function log(uint256 p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2)); - } - - function log(uint256 p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2)); - } - - function log(string memory p0, uint256 p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); - } - - function log(string memory p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); - } - - function log(string memory p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); - } - - function log(string memory p0, address p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2)); - } - - function log(string memory p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); - } - - function log(string memory p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); - } - - function log(string memory p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2)); - } - - function log(bool p0, uint256 p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); - } - - function log(bool p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); - } - - function log(bool p0, bool p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2)); - } - - function log(bool p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); - } - - function log(bool p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); - } - - function log(bool p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); - } - - function log(bool p0, address p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2)); - } - - function log(bool p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); - } - - function log(bool p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); - } - - function log(bool p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2)); - } - - function log(address p0, uint256 p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2)); - } - - function log(address p0, string memory p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2)); - } - - function log(address p0, string memory p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); - } - - function log(address p0, string memory p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); - } - - function log(address p0, string memory p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); - } - - function log(address p0, bool p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2)); - } - - function log(address p0, bool p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); - } - - function log(address p0, bool p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); - } - - function log(address p0, bool p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); - } - - function log(address p0, address p1, uint256 p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2)); - } - - function log(address p0, address p1, string memory p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); - } - - function log(address p0, address p1, bool p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); - } - - function log(address p0, address p1, address p2) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, uint256 p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3)); - } - - function log(uint256 p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, uint256 p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); - } - - function log(string memory p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, uint256 p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); - } - - function log(bool p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, uint256 p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, string memory p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, bool p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, uint256 p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, string memory p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, bool p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, uint256 p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, string memory p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, bool p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); - } - - function log(address p0, address p1, address p2, address p3) internal pure { - _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); - } - -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC1155.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC1155.sol deleted file mode 100644 index f7dd2b4106..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC1155.sol +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC165.sol"; - -/// @title ERC-1155 Multi Token Standard -/// @dev See https://eips.ethereum.org/EIPS/eip-1155 -/// Note: The ERC-165 identifier for this interface is 0xd9b67a26. -interface IERC1155 is IERC165 { - /// @dev - /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). - /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). - /// - The `_from` argument MUST be the address of the holder whose balance is decreased. - /// - The `_to` argument MUST be the address of the recipient whose balance is increased. - /// - The `_id` argument MUST be the token type being transferred. - /// - The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by. - /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). - /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). - event TransferSingle( - address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value - ); - - /// @dev - /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). - /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender). - /// - The `_from` argument MUST be the address of the holder whose balance is decreased. - /// - The `_to` argument MUST be the address of the recipient whose balance is increased. - /// - The `_ids` argument MUST be the list of tokens being transferred. - /// - The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by. - /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). - /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). - event TransferBatch( - address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values - ); - - /// @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absence of an event assumes disabled). - event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); - - /// @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986. - /// The URI MUST point to a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema". - event URI(string _value, uint256 indexed _id); - - /// @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). - /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). - /// - MUST revert if `_to` is the zero address. - /// - MUST revert if balance of holder for token `_id` is lower than the `_value` sent. - /// - MUST revert on any other error. - /// - MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). - /// - After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). - /// @param _from Source address - /// @param _to Target address - /// @param _id ID of the token type - /// @param _value Transfer amount - /// @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` - function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external; - - /// @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). - /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). - /// - MUST revert if `_to` is the zero address. - /// - MUST revert if length of `_ids` is not the same as length of `_values`. - /// - MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. - /// - MUST revert on any other error. - /// - MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). - /// - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). - /// - After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). - /// @param _from Source address - /// @param _to Target address - /// @param _ids IDs of each token type (order and length must match _values array) - /// @param _values Transfer amounts per token type (order and length must match _ids array) - /// @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` - function safeBatchTransferFrom( - address _from, - address _to, - uint256[] calldata _ids, - uint256[] calldata _values, - bytes calldata _data - ) external; - - /// @notice Get the balance of an account's tokens. - /// @param _owner The address of the token holder - /// @param _id ID of the token - /// @return The _owner's balance of the token type requested - function balanceOf(address _owner, uint256 _id) external view returns (uint256); - - /// @notice Get the balance of multiple account/token pairs - /// @param _owners The addresses of the token holders - /// @param _ids ID of the tokens - /// @return The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair) - function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) - external - view - returns (uint256[] memory); - - /// @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. - /// @dev MUST emit the ApprovalForAll event on success. - /// @param _operator Address to add to the set of authorized operators - /// @param _approved True if the operator is approved, false to revoke approval - function setApprovalForAll(address _operator, bool _approved) external; - - /// @notice Queries the approval status of an operator for a given owner. - /// @param _owner The owner of the tokens - /// @param _operator Address of authorized operator - /// @return True if the operator is approved, false if not - function isApprovedForAll(address _owner, address _operator) external view returns (bool); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC165.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC165.sol deleted file mode 100644 index 9af4bf800f..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC165.sol +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -interface IERC165 { - /// @notice Query if a contract implements an interface - /// @param interfaceID The interface identifier, as specified in ERC-165 - /// @dev Interface identification is specified in ERC-165. This function - /// uses less than 30,000 gas. - /// @return `true` if the contract implements `interfaceID` and - /// `interfaceID` is not 0xffffffff, `false` otherwise - function supportsInterface(bytes4 interfaceID) external view returns (bool); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC20.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC20.sol deleted file mode 100644 index ba40806c3b..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC20.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -/// @dev Interface of the ERC20 standard as defined in the EIP. -/// @dev This includes the optional name, symbol, and decimals metadata. -interface IERC20 { - /// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`). - event Transfer(address indexed from, address indexed to, uint256 value); - - /// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value` - /// is the new allowance. - event Approval(address indexed owner, address indexed spender, uint256 value); - - /// @notice Returns the amount of tokens in existence. - function totalSupply() external view returns (uint256); - - /// @notice Returns the amount of tokens owned by `account`. - function balanceOf(address account) external view returns (uint256); - - /// @notice Moves `amount` tokens from the caller's account to `to`. - function transfer(address to, uint256 amount) external returns (bool); - - /// @notice Returns the remaining number of tokens that `spender` is allowed - /// to spend on behalf of `owner` - function allowance(address owner, address spender) external view returns (uint256); - - /// @notice Sets `amount` as the allowance of `spender` over the caller's tokens. - /// @dev Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - function approve(address spender, uint256 amount) external returns (bool); - - /// @notice Moves `amount` tokens from `from` to `to` using the allowance mechanism. - /// `amount` is then deducted from the caller's allowance. - function transferFrom(address from, address to, uint256 amount) external returns (bool); - - /// @notice Returns the name of the token. - function name() external view returns (string memory); - - /// @notice Returns the symbol of the token. - function symbol() external view returns (string memory); - - /// @notice Returns the decimals places of the token. - function decimals() external view returns (uint8); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC4626.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC4626.sol deleted file mode 100644 index bfe3a1155e..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC4626.sol +++ /dev/null @@ -1,190 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC20.sol"; - -/// @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in -/// https://eips.ethereum.org/EIPS/eip-4626 -interface IERC4626 is IERC20 { - event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares); - - event Withdraw( - address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares - ); - - /// @notice Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - /// @dev - /// - MUST be an ERC-20 token contract. - /// - MUST NOT revert. - function asset() external view returns (address assetTokenAddress); - - /// @notice Returns the total amount of the underlying asset that is “managed” by Vault. - /// @dev - /// - SHOULD include any compounding that occurs from yield. - /// - MUST be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT revert. - function totalAssets() external view returns (uint256 totalManagedAssets); - - /// @notice Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal - /// scenario where all the conditions are met. - /// @dev - /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT show any variations depending on the caller. - /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - /// - MUST NOT revert. - /// - /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - /// from. - function convertToShares(uint256 assets) external view returns (uint256 shares); - - /// @notice Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal - /// scenario where all the conditions are met. - /// @dev - /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - /// - MUST NOT show any variations depending on the caller. - /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - /// - MUST NOT revert. - /// - /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the - /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and - /// from. - function convertToAssets(uint256 shares) external view returns (uint256 assets); - - /// @notice Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, - /// through a deposit call. - /// @dev - /// - MUST return a limited value if receiver is subject to some deposit limit. - /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - /// - MUST NOT revert. - function maxDeposit(address receiver) external view returns (uint256 maxAssets); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given - /// current on-chain conditions. - /// @dev - /// - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit - /// call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called - /// in the same transaction. - /// - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the - /// deposit would be accepted, regardless if the user has enough tokens approved, etc. - /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by depositing. - function previewDeposit(uint256 assets) external view returns (uint256 shares); - - /// @notice Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. - /// @dev - /// - MUST emit the Deposit event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// deposit execution, and are accounted for during deposit. - /// - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not - /// approving enough underlying tokens to the Vault contract, etc). - /// - /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - function deposit(uint256 assets, address receiver) external returns (uint256 shares); - - /// @notice Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - /// @dev - /// - MUST return a limited value if receiver is subject to some mint limit. - /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - /// - MUST NOT revert. - function maxMint(address receiver) external view returns (uint256 maxShares); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given - /// current on-chain conditions. - /// @dev - /// - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call - /// in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the - /// same transaction. - /// - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint - /// would be accepted, regardless if the user has enough tokens approved, etc. - /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by minting. - function previewMint(uint256 shares) external view returns (uint256 assets); - - /// @notice Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. - /// @dev - /// - MUST emit the Deposit event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint - /// execution, and are accounted for during mint. - /// - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not - /// approving enough underlying tokens to the Vault contract, etc). - /// - /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. - function mint(uint256 shares, address receiver) external returns (uint256 assets); - - /// @notice Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the - /// Vault, through a withdraw call. - /// @dev - /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - /// - MUST NOT revert. - function maxWithdraw(address owner) external view returns (uint256 maxAssets); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, - /// given current on-chain conditions. - /// @dev - /// - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw - /// call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if - /// called - /// in the same transaction. - /// - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though - /// the withdrawal would be accepted, regardless if the user has enough shares, etc. - /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by depositing. - function previewWithdraw(uint256 assets) external view returns (uint256 shares); - - /// @notice Burns shares from owner and sends exactly assets of underlying tokens to receiver. - /// @dev - /// - MUST emit the Withdraw event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// withdraw execution, and are accounted for during withdraw. - /// - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner - /// not having enough shares, etc). - /// - /// Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - /// Those methods should be performed separately. - function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); - - /// @notice Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, - /// through a redeem call. - /// @dev - /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - /// - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - /// - MUST NOT revert. - function maxRedeem(address owner) external view returns (uint256 maxShares); - - /// @notice Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, - /// given current on-chain conditions. - /// @dev - /// - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call - /// in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the - /// same transaction. - /// - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the - /// redemption would be accepted, regardless if the user has enough shares, etc. - /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - /// - MUST NOT revert. - /// - /// NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in - /// share price or some other type of condition, meaning the depositor will lose assets by redeeming. - function previewRedeem(uint256 shares) external view returns (uint256 assets); - - /// @notice Burns exactly shares from owner and sends assets of underlying tokens to receiver. - /// @dev - /// - MUST emit the Withdraw event. - /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the - /// redeem execution, and are accounted for during redeem. - /// - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner - /// not having enough shares, etc). - /// - /// NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. - /// Those methods should be performed separately. - function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC721.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC721.sol deleted file mode 100644 index 0a16f45cc5..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IERC721.sol +++ /dev/null @@ -1,164 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2; - -import "./IERC165.sol"; - -/// @title ERC-721 Non-Fungible Token Standard -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x80ac58cd. -interface IERC721 is IERC165 { - /// @dev This emits when ownership of any NFT changes by any mechanism. - /// This event emits when NFTs are created (`from` == 0) and destroyed - /// (`to` == 0). Exception: during contract creation, any number of NFTs - /// may be created and assigned without emitting Transfer. At the time of - /// any transfer, the approved address for that NFT (if any) is reset to none. - event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); - - /// @dev This emits when the approved address for an NFT is changed or - /// reaffirmed. The zero address indicates there is no approved address. - /// When a Transfer event emits, this also indicates that the approved - /// address for that NFT (if any) is reset to none. - event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); - - /// @dev This emits when an operator is enabled or disabled for an owner. - /// The operator can manage all NFTs of the owner. - event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); - - /// @notice Count all NFTs assigned to an owner - /// @dev NFTs assigned to the zero address are considered invalid, and this - /// function throws for queries about the zero address. - /// @param _owner An address for whom to query the balance - /// @return The number of NFTs owned by `_owner`, possibly zero - function balanceOf(address _owner) external view returns (uint256); - - /// @notice Find the owner of an NFT - /// @dev NFTs assigned to zero address are considered invalid, and queries - /// about them do throw. - /// @param _tokenId The identifier for an NFT - /// @return The address of the owner of the NFT - function ownerOf(uint256 _tokenId) external view returns (address); - - /// @notice Transfers the ownership of an NFT from one address to another address - /// @dev Throws unless `msg.sender` is the current owner, an authorized - /// operator, or the approved address for this NFT. Throws if `_from` is - /// not the current owner. Throws if `_to` is the zero address. Throws if - /// `_tokenId` is not a valid NFT. When transfer is complete, this function - /// checks if `_to` is a smart contract (code size > 0). If so, it calls - /// `onERC721Received` on `_to` and throws if the return value is not - /// `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`. - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - /// @param data Additional data with no specified format, sent in call to `_to` - function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable; - - /// @notice Transfers the ownership of an NFT from one address to another address - /// @dev This works identically to the other function with an extra data parameter, - /// except this function just sets data to "". - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; - - /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE - /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE - /// THEY MAY BE PERMANENTLY LOST - /// @dev Throws unless `msg.sender` is the current owner, an authorized - /// operator, or the approved address for this NFT. Throws if `_from` is - /// not the current owner. Throws if `_to` is the zero address. Throws if - /// `_tokenId` is not a valid NFT. - /// @param _from The current owner of the NFT - /// @param _to The new owner - /// @param _tokenId The NFT to transfer - function transferFrom(address _from, address _to, uint256 _tokenId) external payable; - - /// @notice Change or reaffirm the approved address for an NFT - /// @dev The zero address indicates there is no approved address. - /// Throws unless `msg.sender` is the current NFT owner, or an authorized - /// operator of the current owner. - /// @param _approved The new approved NFT controller - /// @param _tokenId The NFT to approve - function approve(address _approved, uint256 _tokenId) external payable; - - /// @notice Enable or disable approval for a third party ("operator") to manage - /// all of `msg.sender`'s assets - /// @dev Emits the ApprovalForAll event. The contract MUST allow - /// multiple operators per owner. - /// @param _operator Address to add to the set of authorized operators - /// @param _approved True if the operator is approved, false to revoke approval - function setApprovalForAll(address _operator, bool _approved) external; - - /// @notice Get the approved address for a single NFT - /// @dev Throws if `_tokenId` is not a valid NFT. - /// @param _tokenId The NFT to find the approved address for - /// @return The approved address for this NFT, or the zero address if there is none - function getApproved(uint256 _tokenId) external view returns (address); - - /// @notice Query if an address is an authorized operator for another address - /// @param _owner The address that owns the NFTs - /// @param _operator The address that acts on behalf of the owner - /// @return True if `_operator` is an approved operator for `_owner`, false otherwise - function isApprovedForAll(address _owner, address _operator) external view returns (bool); -} - -/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02. -interface IERC721TokenReceiver { - /// @notice Handle the receipt of an NFT - /// @dev The ERC721 smart contract calls this function on the recipient - /// after a `transfer`. This function MAY throw to revert and reject the - /// transfer. Return of other than the magic value MUST result in the - /// transaction being reverted. - /// Note: the contract address is always the message sender. - /// @param _operator The address which called `safeTransferFrom` function - /// @param _from The address which previously owned the token - /// @param _tokenId The NFT identifier which is being transferred - /// @param _data Additional data with no specified format - /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` - /// unless throwing - function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) - external - returns (bytes4); -} - -/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x5b5e139f. -interface IERC721Metadata is IERC721 { - /// @notice A descriptive name for a collection of NFTs in this contract - function name() external view returns (string memory _name); - - /// @notice An abbreviated name for NFTs in this contract - function symbol() external view returns (string memory _symbol); - - /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. - /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC - /// 3986. The URI may point to a JSON file that conforms to the "ERC721 - /// Metadata JSON Schema". - function tokenURI(uint256 _tokenId) external view returns (string memory); -} - -/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension -/// @dev See https://eips.ethereum.org/EIPS/eip-721 -/// Note: the ERC-165 identifier for this interface is 0x780e9d63. -interface IERC721Enumerable is IERC721 { - /// @notice Count NFTs tracked by this contract - /// @return A count of valid NFTs tracked by this contract, where each one of - /// them has an assigned and queryable owner not equal to the zero address - function totalSupply() external view returns (uint256); - - /// @notice Enumerate valid NFTs - /// @dev Throws if `_index` >= `totalSupply()`. - /// @param _index A counter less than `totalSupply()` - /// @return The token identifier for the `_index`th NFT, - /// (sort order not specified) - function tokenByIndex(uint256 _index) external view returns (uint256); - - /// @notice Enumerate NFTs assigned to an owner - /// @dev Throws if `_index` >= `balanceOf(_owner)` or if - /// `_owner` is the zero address, representing invalid NFTs. - /// @param _owner An address where we are interested in NFTs owned by them - /// @param _index A counter less than `balanceOf(_owner)` - /// @return The token identifier for the `_index`th NFT assigned to `_owner`, - /// (sort order not specified) - function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IMulticall3.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IMulticall3.sol deleted file mode 100644 index 0d031b71dc..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/interfaces/IMulticall3.sol +++ /dev/null @@ -1,73 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -interface IMulticall3 { - struct Call { - address target; - bytes callData; - } - - struct Call3 { - address target; - bool allowFailure; - bytes callData; - } - - struct Call3Value { - address target; - bool allowFailure; - uint256 value; - bytes callData; - } - - struct Result { - bool success; - bytes returnData; - } - - function aggregate(Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes[] memory returnData); - - function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData); - - function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData); - - function blockAndAggregate(Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); - - function getBasefee() external view returns (uint256 basefee); - - function getBlockHash(uint256 blockNumber) external view returns (bytes32 blockHash); - - function getBlockNumber() external view returns (uint256 blockNumber); - - function getChainId() external view returns (uint256 chainid); - - function getCurrentBlockCoinbase() external view returns (address coinbase); - - function getCurrentBlockDifficulty() external view returns (uint256 difficulty); - - function getCurrentBlockGasLimit() external view returns (uint256 gaslimit); - - function getCurrentBlockTimestamp() external view returns (uint256 timestamp); - - function getEthBalance(address addr) external view returns (uint256 balance); - - function getLastBlockHash() external view returns (bytes32 blockHash); - - function tryAggregate(bool requireSuccess, Call[] calldata calls) - external - payable - returns (Result[] memory returnData); - - function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls) - external - payable - returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/safeconsole.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/safeconsole.sol deleted file mode 100644 index 5714d0902d..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/src/safeconsole.sol +++ /dev/null @@ -1,13248 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -/// @author philogy -/// @dev Code generated automatically by script. -library safeconsole { - uint256 constant CONSOLE_ADDR = 0x000000000000000000000000000000000000000000636F6e736F6c652e6c6f67; - - // Credit to [0age](https://twitter.com/z0age/status/1654922202930888704) and [0xdapper](https://github.com/foundry-rs/forge-std/pull/374) - // for the view-to-pure log trick. - function _sendLogPayload(uint256 offset, uint256 size) private pure { - function(uint256, uint256) internal view fnIn = _sendLogPayloadView; - function(uint256, uint256) internal pure pureSendLogPayload; - assembly { - pureSendLogPayload := fnIn - } - pureSendLogPayload(offset, size); - } - - function _sendLogPayloadView(uint256 offset, uint256 size) private view { - assembly { - pop(staticcall(gas(), CONSOLE_ADDR, offset, size, 0x0, 0x0)) - } - } - - function _memcopy(uint256 fromOffset, uint256 toOffset, uint256 length) private pure { - function(uint256, uint256, uint256) internal view fnIn = _memcopyView; - function(uint256, uint256, uint256) internal pure pureMemcopy; - assembly { - pureMemcopy := fnIn - } - pureMemcopy(fromOffset, toOffset, length); - } - - function _memcopyView(uint256 fromOffset, uint256 toOffset, uint256 length) private view { - assembly { - pop(staticcall(gas(), 0x4, fromOffset, length, toOffset, length)) - } - } - - function logMemory(uint256 offset, uint256 length) internal pure { - if (offset >= 0x60) { - // Sufficient memory before slice to prepare call header. - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(sub(offset, 0x60)) - m1 := mload(sub(offset, 0x40)) - m2 := mload(sub(offset, 0x20)) - // Selector of `logBytes(bytes)`. - mstore(sub(offset, 0x60), 0xe17bf956) - mstore(sub(offset, 0x40), 0x20) - mstore(sub(offset, 0x20), length) - } - _sendLogPayload(offset - 0x44, length + 0x44); - assembly { - mstore(sub(offset, 0x60), m0) - mstore(sub(offset, 0x40), m1) - mstore(sub(offset, 0x20), m2) - } - } else { - // Insufficient space, so copy slice forward, add header and reverse. - bytes32 m0; - bytes32 m1; - bytes32 m2; - uint256 endOffset = offset + length; - assembly { - m0 := mload(add(endOffset, 0x00)) - m1 := mload(add(endOffset, 0x20)) - m2 := mload(add(endOffset, 0x40)) - } - _memcopy(offset, offset + 0x60, length); - assembly { - // Selector of `logBytes(bytes)`. - mstore(add(offset, 0x00), 0xe17bf956) - mstore(add(offset, 0x20), 0x20) - mstore(add(offset, 0x40), length) - } - _sendLogPayload(offset + 0x1c, length + 0x44); - _memcopy(offset + 0x60, offset, length); - assembly { - mstore(add(endOffset, 0x00), m0) - mstore(add(endOffset, 0x20), m1) - mstore(add(endOffset, 0x40), m2) - } - } - } - - function log(address p0) internal pure { - bytes32 m0; - bytes32 m1; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(address)`. - mstore(0x00, 0x2c2ecbc2) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(bool p0) internal pure { - bytes32 m0; - bytes32 m1; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(bool)`. - mstore(0x00, 0x32458eed) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(uint256 p0) internal pure { - bytes32 m0; - bytes32 m1; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - // Selector of `log(uint256)`. - mstore(0x00, 0xf82c50f1) - mstore(0x20, p0) - } - _sendLogPayload(0x1c, 0x24); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - } - } - - function log(bytes32 p0) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(string)`. - mstore(0x00, 0x41304fac) - mstore(0x20, 0x20) - writeString(0x40, p0) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,address)`. - mstore(0x00, 0xdaf0d4aa) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,bool)`. - mstore(0x00, 0x75b605d3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(address,uint256)`. - mstore(0x00, 0x8309e8a8) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(address p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,string)`. - mstore(0x00, 0x759f86bb) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,address)`. - mstore(0x00, 0x853c4849) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,bool)`. - mstore(0x00, 0x2a110e83) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(bool,uint256)`. - mstore(0x00, 0x399174d3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(bool p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,string)`. - mstore(0x00, 0x8feac525) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,address)`. - mstore(0x00, 0x69276c86) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,bool)`. - mstore(0x00, 0x1c9d7eb3) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - // Selector of `log(uint256,uint256)`. - mstore(0x00, 0xf666715a) - mstore(0x20, p0) - mstore(0x40, p1) - } - _sendLogPayload(0x1c, 0x44); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - } - } - - function log(uint256 p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,string)`. - mstore(0x00, 0x643fd0df) - mstore(0x20, p0) - mstore(0x40, 0x40) - writeString(0x60, p1) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, address p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,address)`. - mstore(0x00, 0x319af333) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, bool p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,bool)`. - mstore(0x00, 0xc3b55635) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, uint256 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(string,uint256)`. - mstore(0x00, 0xb60e72cc) - mstore(0x20, 0x40) - mstore(0x40, p1) - writeString(0x60, p0) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bytes32 p0, bytes32 p1) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,string)`. - mstore(0x00, 0x4b5c4277) - mstore(0x20, 0x40) - mstore(0x40, 0x80) - writeString(0x60, p0) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,address)`. - mstore(0x00, 0x018c84c2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,bool)`. - mstore(0x00, 0xf2a66286) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,address,uint256)`. - mstore(0x00, 0x17fe6185) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,address,string)`. - mstore(0x00, 0x007150be) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,address)`. - mstore(0x00, 0xf11699ed) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,bool)`. - mstore(0x00, 0xeb830c92) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,bool,uint256)`. - mstore(0x00, 0x9c4f99fb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,bool,string)`. - mstore(0x00, 0x212255cc) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,address)`. - mstore(0x00, 0x7bc0d848) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,bool)`. - mstore(0x00, 0x678209a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(address,uint256,uint256)`. - mstore(0x00, 0xb69bcaf6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(address p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,uint256,string)`. - mstore(0x00, 0xa1f2e8aa) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,address)`. - mstore(0x00, 0xf08744e8) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,bool)`. - mstore(0x00, 0xcf020fb1) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(address,string,uint256)`. - mstore(0x00, 0x67dd6ff1) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(address p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(address,string,string)`. - mstore(0x00, 0xfb772265) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bool p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,address)`. - mstore(0x00, 0xd2763667) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,bool)`. - mstore(0x00, 0x18c9c746) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,address,uint256)`. - mstore(0x00, 0x5f7b9afb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,address,string)`. - mstore(0x00, 0xde9a9270) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,address)`. - mstore(0x00, 0x1078f68d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,bool)`. - mstore(0x00, 0x50709698) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,bool,uint256)`. - mstore(0x00, 0x12f21602) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,bool,string)`. - mstore(0x00, 0x2555fa46) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,address)`. - mstore(0x00, 0x088ef9d2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,bool)`. - mstore(0x00, 0xe8defba9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(bool,uint256,uint256)`. - mstore(0x00, 0x37103367) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(bool p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,uint256,string)`. - mstore(0x00, 0xc3fc3970) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,address)`. - mstore(0x00, 0x9591b953) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,bool)`. - mstore(0x00, 0xdbb4c247) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(bool,string,uint256)`. - mstore(0x00, 0x1093ee11) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(bool,string,string)`. - mstore(0x00, 0xb076847f) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(uint256 p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,address)`. - mstore(0x00, 0xbcfd9be0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,bool)`. - mstore(0x00, 0x9b6ec042) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,address,uint256)`. - mstore(0x00, 0x5a9b5ed5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,address,string)`. - mstore(0x00, 0x63cb41f9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,address)`. - mstore(0x00, 0x35085f7b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,bool)`. - mstore(0x00, 0x20718650) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,bool,uint256)`. - mstore(0x00, 0x20098014) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,bool,string)`. - mstore(0x00, 0x85775021) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,address)`. - mstore(0x00, 0x5c96b331) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,bool)`. - mstore(0x00, 0x4766da72) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - // Selector of `log(uint256,uint256,uint256)`. - mstore(0x00, 0xd1ed7a3c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - } - _sendLogPayload(0x1c, 0x64); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,uint256,string)`. - mstore(0x00, 0x71d04af2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x60) - writeString(0x80, p2) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,address)`. - mstore(0x00, 0x7afac959) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,bool)`. - mstore(0x00, 0x4ceda75a) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(uint256,string,uint256)`. - mstore(0x00, 0x37aa7d4c) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, p2) - writeString(0x80, p1) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(uint256,string,string)`. - mstore(0x00, 0xb115611f) - mstore(0x20, p0) - mstore(0x40, 0x60) - mstore(0x60, 0xa0) - writeString(0x80, p1) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, address p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,address)`. - mstore(0x00, 0xfcec75e0) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,bool)`. - mstore(0x00, 0xc91d5ed4) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,address,uint256)`. - mstore(0x00, 0x0d26b925) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, address p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,address,string)`. - mstore(0x00, 0xe0e9ad4f) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bool p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,address)`. - mstore(0x00, 0x932bbb38) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,bool)`. - mstore(0x00, 0x850b7ad6) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,bool,uint256)`. - mstore(0x00, 0xc95958d6) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,bool,string)`. - mstore(0x00, 0xe298f47d) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, uint256 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,address)`. - mstore(0x00, 0x1c7ec448) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,bool)`. - mstore(0x00, 0xca7733b1) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - // Selector of `log(string,uint256,uint256)`. - mstore(0x00, 0xca47c4eb) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, p2) - writeString(0x80, p0) - } - _sendLogPayload(0x1c, 0xa4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,uint256,string)`. - mstore(0x00, 0x5970e089) - mstore(0x20, 0x60) - mstore(0x40, p1) - mstore(0x60, 0xa0) - writeString(0x80, p0) - writeString(0xc0, p2) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, address p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,address)`. - mstore(0x00, 0x95ed0195) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,bool)`. - mstore(0x00, 0xb0e0f9b5) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - // Selector of `log(string,string,uint256)`. - mstore(0x00, 0x5821efa1) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, p2) - writeString(0x80, p0) - writeString(0xc0, p1) - } - _sendLogPayload(0x1c, 0xe4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - // Selector of `log(string,string,string)`. - mstore(0x00, 0x2ced7cef) - mstore(0x20, 0x60) - mstore(0x40, 0xa0) - mstore(0x60, 0xe0) - writeString(0x80, p0) - writeString(0xc0, p1) - writeString(0x100, p2) - } - _sendLogPayload(0x1c, 0x124); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - } - } - - function log(address p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,address)`. - mstore(0x00, 0x665bf134) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,bool)`. - mstore(0x00, 0x0e378994) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,address,uint256)`. - mstore(0x00, 0x94250d77) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,address,string)`. - mstore(0x00, 0xf808da20) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,address)`. - mstore(0x00, 0x9f1bc36e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,bool)`. - mstore(0x00, 0x2cd4134a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,bool,uint256)`. - mstore(0x00, 0x3971e78c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,bool,string)`. - mstore(0x00, 0xaa6540c8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,address)`. - mstore(0x00, 0x8da6def5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,bool)`. - mstore(0x00, 0x9b4254e2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,address,uint256,uint256)`. - mstore(0x00, 0xbe553481) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,uint256,string)`. - mstore(0x00, 0xfdb4f990) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,address)`. - mstore(0x00, 0x8f736d16) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,bool)`. - mstore(0x00, 0x6f1a594e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,address,string,uint256)`. - mstore(0x00, 0xef1cefe7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,address,string,string)`. - mstore(0x00, 0x21bdaf25) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,address)`. - mstore(0x00, 0x660375dd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,bool)`. - mstore(0x00, 0xa6f50b0f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,address,uint256)`. - mstore(0x00, 0xa75c59de) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,address,string)`. - mstore(0x00, 0x2dd778e6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,address)`. - mstore(0x00, 0xcf394485) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,bool)`. - mstore(0x00, 0xcac43479) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,bool,uint256)`. - mstore(0x00, 0x8c4e5de6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,bool,string)`. - mstore(0x00, 0xdfc4a2e8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,address)`. - mstore(0x00, 0xccf790a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,bool)`. - mstore(0x00, 0xc4643e20) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,bool,uint256,uint256)`. - mstore(0x00, 0x386ff5f4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,uint256,string)`. - mstore(0x00, 0x0aa6cfad) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,address)`. - mstore(0x00, 0x19fd4956) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,bool)`. - mstore(0x00, 0x50ad461d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,bool,string,uint256)`. - mstore(0x00, 0x80e6a20b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,bool,string,string)`. - mstore(0x00, 0x475c5c33) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,address)`. - mstore(0x00, 0x478d1c62) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,bool)`. - mstore(0x00, 0xa1bcc9b3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,address,uint256)`. - mstore(0x00, 0x100f650e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,address,string)`. - mstore(0x00, 0x1da986ea) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,address)`. - mstore(0x00, 0xa31bfdcc) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,bool)`. - mstore(0x00, 0x3bf5e537) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,bool,uint256)`. - mstore(0x00, 0x22f6b999) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,bool,string)`. - mstore(0x00, 0xc5ad85f9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,address)`. - mstore(0x00, 0x20e3984d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,bool)`. - mstore(0x00, 0x66f1bc67) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(address,uint256,uint256,uint256)`. - mstore(0x00, 0x34f0e636) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(address p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,uint256,string)`. - mstore(0x00, 0x4a28c017) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,address)`. - mstore(0x00, 0x5c430d47) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,bool)`. - mstore(0x00, 0xcf18105c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,uint256,string,uint256)`. - mstore(0x00, 0xbf01f891) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,uint256,string,string)`. - mstore(0x00, 0x88a8c406) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,address)`. - mstore(0x00, 0x0d36fa20) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,bool)`. - mstore(0x00, 0x0df12b76) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,address,uint256)`. - mstore(0x00, 0x457fe3cf) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,address,string)`. - mstore(0x00, 0xf7e36245) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,address)`. - mstore(0x00, 0x205871c2) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,bool)`. - mstore(0x00, 0x5f1d5c9f) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,bool,uint256)`. - mstore(0x00, 0x515e38b6) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,bool,string)`. - mstore(0x00, 0xbc0b61fe) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,address)`. - mstore(0x00, 0x63183678) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,bool)`. - mstore(0x00, 0x0ef7e050) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(address,string,uint256,uint256)`. - mstore(0x00, 0x1dc8e1b8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(address p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,uint256,string)`. - mstore(0x00, 0x448830a8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,address)`. - mstore(0x00, 0xa04e2f87) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,bool)`. - mstore(0x00, 0x35a5071f) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(address,string,string,uint256)`. - mstore(0x00, 0x159f8927) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(address p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(address,string,string,string)`. - mstore(0x00, 0x5d02c50b) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bool p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,address)`. - mstore(0x00, 0x1d14d001) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,bool)`. - mstore(0x00, 0x46600be0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,address,uint256)`. - mstore(0x00, 0x0c66d1be) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,address,string)`. - mstore(0x00, 0xd812a167) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,address)`. - mstore(0x00, 0x1c41a336) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,bool)`. - mstore(0x00, 0x6a9c478b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,bool,uint256)`. - mstore(0x00, 0x07831502) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,bool,string)`. - mstore(0x00, 0x4a66cb34) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,address)`. - mstore(0x00, 0x136b05dd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,bool)`. - mstore(0x00, 0xd6019f1c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,address,uint256,uint256)`. - mstore(0x00, 0x7bf181a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,uint256,string)`. - mstore(0x00, 0x51f09ff8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,address)`. - mstore(0x00, 0x6f7c603e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,bool)`. - mstore(0x00, 0xe2bfd60b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,address,string,uint256)`. - mstore(0x00, 0xc21f64c7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,address,string,string)`. - mstore(0x00, 0xa73c1db6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,address)`. - mstore(0x00, 0xf4880ea4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,bool)`. - mstore(0x00, 0xc0a302d8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,address,uint256)`. - mstore(0x00, 0x4c123d57) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,address,string)`. - mstore(0x00, 0xa0a47963) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,address)`. - mstore(0x00, 0x8c329b1a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,bool)`. - mstore(0x00, 0x3b2a5ce0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,bool,uint256)`. - mstore(0x00, 0x6d7045c1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,bool,string)`. - mstore(0x00, 0x2ae408d4) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,address)`. - mstore(0x00, 0x54a7a9a0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,bool)`. - mstore(0x00, 0x619e4d0e) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,bool,uint256,uint256)`. - mstore(0x00, 0x0bb00eab) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,uint256,string)`. - mstore(0x00, 0x7dd4d0e0) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,address)`. - mstore(0x00, 0xf9ad2b89) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,bool)`. - mstore(0x00, 0xb857163a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,bool,string,uint256)`. - mstore(0x00, 0xe3a9ca2f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,bool,string,string)`. - mstore(0x00, 0x6d1e8751) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,address)`. - mstore(0x00, 0x26f560a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,bool)`. - mstore(0x00, 0xb4c314ff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,address,uint256)`. - mstore(0x00, 0x1537dc87) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,address,string)`. - mstore(0x00, 0x1bb3b09a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,address)`. - mstore(0x00, 0x9acd3616) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,bool)`. - mstore(0x00, 0xceb5f4d7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,bool,uint256)`. - mstore(0x00, 0x7f9bbca2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,bool,string)`. - mstore(0x00, 0x9143dbb1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,address)`. - mstore(0x00, 0x00dd87b9) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,bool)`. - mstore(0x00, 0xbe984353) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(bool,uint256,uint256,uint256)`. - mstore(0x00, 0x374bb4b2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(bool p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,uint256,string)`. - mstore(0x00, 0x8e69fb5d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,address)`. - mstore(0x00, 0xfedd1fff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,bool)`. - mstore(0x00, 0xe5e70b2b) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,uint256,string,uint256)`. - mstore(0x00, 0x6a1199e2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,uint256,string,string)`. - mstore(0x00, 0xf5bc2249) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,address)`. - mstore(0x00, 0x2b2b18dc) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,bool)`. - mstore(0x00, 0x6dd434ca) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,address,uint256)`. - mstore(0x00, 0xa5cada94) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,address,string)`. - mstore(0x00, 0x12d6c788) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,address)`. - mstore(0x00, 0x538e06ab) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,bool)`. - mstore(0x00, 0xdc5e935b) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,bool,uint256)`. - mstore(0x00, 0x1606a393) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,bool,string)`. - mstore(0x00, 0x483d0416) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,address)`. - mstore(0x00, 0x1596a1ce) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,bool)`. - mstore(0x00, 0x6b0e5d53) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(bool,string,uint256,uint256)`. - mstore(0x00, 0x28863fcb) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bool p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,uint256,string)`. - mstore(0x00, 0x1ad96de6) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,address)`. - mstore(0x00, 0x97d394d8) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,bool)`. - mstore(0x00, 0x1e4b87e5) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(bool,string,string,uint256)`. - mstore(0x00, 0x7be0c3eb) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bool p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(bool,string,string,string)`. - mstore(0x00, 0x1762e32a) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(uint256 p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,address)`. - mstore(0x00, 0x2488b414) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,bool)`. - mstore(0x00, 0x091ffaf5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,address,uint256)`. - mstore(0x00, 0x736efbb6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,address,string)`. - mstore(0x00, 0x031c6f73) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,address)`. - mstore(0x00, 0xef72c513) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,bool)`. - mstore(0x00, 0xe351140f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,bool,uint256)`. - mstore(0x00, 0x5abd992a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,bool,string)`. - mstore(0x00, 0x90fb06aa) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,address)`. - mstore(0x00, 0x15c127b5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,bool)`. - mstore(0x00, 0x5f743a7c) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,address,uint256,uint256)`. - mstore(0x00, 0x0c9cd9c1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,uint256,string)`. - mstore(0x00, 0xddb06521) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,address)`. - mstore(0x00, 0x9cba8fff) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,bool)`. - mstore(0x00, 0xcc32ab07) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,address,string,uint256)`. - mstore(0x00, 0x46826b5d) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,address,string,string)`. - mstore(0x00, 0x3e128ca3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,address)`. - mstore(0x00, 0xa1ef4cbb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,bool)`. - mstore(0x00, 0x454d54a5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,address,uint256)`. - mstore(0x00, 0x078287f5) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,address,string)`. - mstore(0x00, 0xade052c7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,address)`. - mstore(0x00, 0x69640b59) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,bool)`. - mstore(0x00, 0xb6f577a1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,bool,uint256)`. - mstore(0x00, 0x7464ce23) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,bool,string)`. - mstore(0x00, 0xdddb9561) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,address)`. - mstore(0x00, 0x88cb6041) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,bool)`. - mstore(0x00, 0x91a02e2a) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,bool,uint256,uint256)`. - mstore(0x00, 0xc6acc7a8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,uint256,string)`. - mstore(0x00, 0xde03e774) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,address)`. - mstore(0x00, 0xef529018) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,bool)`. - mstore(0x00, 0xeb928d7f) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,bool,string,uint256)`. - mstore(0x00, 0x2c1d0746) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,bool,string,string)`. - mstore(0x00, 0x68c8b8bd) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,address)`. - mstore(0x00, 0x56a5d1b1) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,bool)`. - mstore(0x00, 0x15cac476) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,address,uint256)`. - mstore(0x00, 0x88f6e4b2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,address,string)`. - mstore(0x00, 0x6cde40b8) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,address)`. - mstore(0x00, 0x9a816a83) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,bool)`. - mstore(0x00, 0xab085ae6) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,bool,uint256)`. - mstore(0x00, 0xeb7f6fd2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,bool,string)`. - mstore(0x00, 0xa5b4fc99) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,address)`. - mstore(0x00, 0xfa8185af) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,bool)`. - mstore(0x00, 0xc598d185) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - assembly { - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - // Selector of `log(uint256,uint256,uint256,uint256)`. - mstore(0x00, 0x193fb800) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - } - _sendLogPayload(0x1c, 0x84); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - } - } - - function log(uint256 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,uint256,string)`. - mstore(0x00, 0x59cfcbe3) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0x80) - writeString(0xa0, p3) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,address)`. - mstore(0x00, 0x42d21db7) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,bool)`. - mstore(0x00, 0x7af6ab25) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,uint256,string,uint256)`. - mstore(0x00, 0x5da297eb) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, p3) - writeString(0xa0, p2) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,uint256,string,string)`. - mstore(0x00, 0x27d8afd2) - mstore(0x20, p0) - mstore(0x40, p1) - mstore(0x60, 0x80) - mstore(0x80, 0xc0) - writeString(0xa0, p2) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,address)`. - mstore(0x00, 0x6168ed61) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,bool)`. - mstore(0x00, 0x90c30a56) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,address,uint256)`. - mstore(0x00, 0xe8d3018d) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,address,string)`. - mstore(0x00, 0x9c3adfa1) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,address)`. - mstore(0x00, 0xae2ec581) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,bool)`. - mstore(0x00, 0xba535d9c) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,bool,uint256)`. - mstore(0x00, 0xcf009880) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,bool,string)`. - mstore(0x00, 0xd2d423cd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,address)`. - mstore(0x00, 0x3b2279b4) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,bool)`. - mstore(0x00, 0x691a8f74) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(uint256,string,uint256,uint256)`. - mstore(0x00, 0x82c25b74) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p1) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(uint256 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,uint256,string)`. - mstore(0x00, 0xb7b914ca) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p1) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,address)`. - mstore(0x00, 0xd583c602) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,bool)`. - mstore(0x00, 0xb3a6b6bd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(uint256,string,string,uint256)`. - mstore(0x00, 0xb028c9bd) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p1) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(uint256 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(uint256,string,string,string)`. - mstore(0x00, 0x21ad0683) - mstore(0x20, p0) - mstore(0x40, 0x80) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p1) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, address p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,address)`. - mstore(0x00, 0xed8f28f6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,bool)`. - mstore(0x00, 0xb59dbd60) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,address,uint256)`. - mstore(0x00, 0x8ef3f399) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,address,string)`. - mstore(0x00, 0x800a1c67) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,address)`. - mstore(0x00, 0x223603bd) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,bool)`. - mstore(0x00, 0x79884c2b) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,bool,uint256)`. - mstore(0x00, 0x3e9f866a) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,bool,string)`. - mstore(0x00, 0x0454c079) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,address)`. - mstore(0x00, 0x63fb8bc5) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,bool)`. - mstore(0x00, 0xfc4845f0) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,address,uint256,uint256)`. - mstore(0x00, 0xf8f51b1e) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, address p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,uint256,string)`. - mstore(0x00, 0x5a477632) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,address)`. - mstore(0x00, 0xaabc9a31) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,bool)`. - mstore(0x00, 0x5f15d28c) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,address,string,uint256)`. - mstore(0x00, 0x91d1112e) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, address p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,address,string,string)`. - mstore(0x00, 0x245986f2) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bool p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,address)`. - mstore(0x00, 0x33e9dd1d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,bool)`. - mstore(0x00, 0x958c28c6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,address,uint256)`. - mstore(0x00, 0x5d08bb05) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,address,string)`. - mstore(0x00, 0x2d8e33a4) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,address)`. - mstore(0x00, 0x7190a529) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,bool)`. - mstore(0x00, 0x895af8c5) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,bool,uint256)`. - mstore(0x00, 0x8e3f78a9) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,bool,string)`. - mstore(0x00, 0x9d22d5dd) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,address)`. - mstore(0x00, 0x935e09bf) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,bool)`. - mstore(0x00, 0x8af7cf8a) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,bool,uint256,uint256)`. - mstore(0x00, 0x64b5bb67) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, bool p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,uint256,string)`. - mstore(0x00, 0x742d6ee7) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,address)`. - mstore(0x00, 0xe0625b29) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,bool)`. - mstore(0x00, 0x3f8a701d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,bool,string,uint256)`. - mstore(0x00, 0x24f91465) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bool p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,bool,string,string)`. - mstore(0x00, 0xa826caeb) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, uint256 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,address)`. - mstore(0x00, 0x5ea2b7ae) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,bool)`. - mstore(0x00, 0x82112a42) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,address,uint256)`. - mstore(0x00, 0x4f04fdc6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,address,string)`. - mstore(0x00, 0x9ffb2f93) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,address)`. - mstore(0x00, 0xe0e95b98) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,bool)`. - mstore(0x00, 0x354c36d6) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,bool,uint256)`. - mstore(0x00, 0xe41b6f6f) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,bool,string)`. - mstore(0x00, 0xabf73a98) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,address)`. - mstore(0x00, 0xe21de278) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,bool)`. - mstore(0x00, 0x7626db92) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - // Selector of `log(string,uint256,uint256,uint256)`. - mstore(0x00, 0xa7a87853) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - } - _sendLogPayload(0x1c, 0xc4); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - } - } - - function log(bytes32 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,uint256,string)`. - mstore(0x00, 0x854b3496) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, p2) - mstore(0x80, 0xc0) - writeString(0xa0, p0) - writeString(0xe0, p3) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,address)`. - mstore(0x00, 0x7c4632a4) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,bool)`. - mstore(0x00, 0x7d24491d) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,uint256,string,uint256)`. - mstore(0x00, 0xc67ea9d1) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p2) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,uint256,string,string)`. - mstore(0x00, 0x5ab84e1f) - mstore(0x20, 0x80) - mstore(0x40, p1) - mstore(0x60, 0xc0) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p2) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,address)`. - mstore(0x00, 0x439c7bef) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,bool)`. - mstore(0x00, 0x5ccd4e37) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,address,uint256)`. - mstore(0x00, 0x7cc3c607) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, address p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,address,string)`. - mstore(0x00, 0xeb1bff80) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,address)`. - mstore(0x00, 0xc371c7db) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,bool)`. - mstore(0x00, 0x40785869) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,bool,uint256)`. - mstore(0x00, 0xd6aefad2) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, bool p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,bool,string)`. - mstore(0x00, 0x5e84b0ea) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,address)`. - mstore(0x00, 0x1023f7b2) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,bool)`. - mstore(0x00, 0xc3a8a654) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - // Selector of `log(string,string,uint256,uint256)`. - mstore(0x00, 0xf45d7d2c) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - } - _sendLogPayload(0x1c, 0x104); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - } - } - - function log(bytes32 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,uint256,string)`. - mstore(0x00, 0x5d1a971a) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, p2) - mstore(0x80, 0x100) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p3) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, address p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,address)`. - mstore(0x00, 0x6d572f44) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, bool p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,bool)`. - mstore(0x00, 0x2c1754ed) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - // Selector of `log(string,string,string,uint256)`. - mstore(0x00, 0x8eafb02b) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, p3) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - } - _sendLogPayload(0x1c, 0x144); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - } - } - - function log(bytes32 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure { - bytes32 m0; - bytes32 m1; - bytes32 m2; - bytes32 m3; - bytes32 m4; - bytes32 m5; - bytes32 m6; - bytes32 m7; - bytes32 m8; - bytes32 m9; - bytes32 m10; - bytes32 m11; - bytes32 m12; - assembly { - function writeString(pos, w) { - let length := 0 - for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } } - mstore(pos, length) - let shift := sub(256, shl(3, length)) - mstore(add(pos, 0x20), shl(shift, shr(shift, w))) - } - m0 := mload(0x00) - m1 := mload(0x20) - m2 := mload(0x40) - m3 := mload(0x60) - m4 := mload(0x80) - m5 := mload(0xa0) - m6 := mload(0xc0) - m7 := mload(0xe0) - m8 := mload(0x100) - m9 := mload(0x120) - m10 := mload(0x140) - m11 := mload(0x160) - m12 := mload(0x180) - // Selector of `log(string,string,string,string)`. - mstore(0x00, 0xde68f20a) - mstore(0x20, 0x80) - mstore(0x40, 0xc0) - mstore(0x60, 0x100) - mstore(0x80, 0x140) - writeString(0xa0, p0) - writeString(0xe0, p1) - writeString(0x120, p2) - writeString(0x160, p3) - } - _sendLogPayload(0x1c, 0x184); - assembly { - mstore(0x00, m0) - mstore(0x20, m1) - mstore(0x40, m2) - mstore(0x60, m3) - mstore(0x80, m4) - mstore(0xa0, m5) - mstore(0xc0, m6) - mstore(0xe0, m7) - mstore(0x100, m8) - mstore(0x120, m9) - mstore(0x140, m10) - mstore(0x160, m11) - mstore(0x180, m12) - } - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdAssertions.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdAssertions.t.sol deleted file mode 100644 index fcc346be66..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdAssertions.t.sol +++ /dev/null @@ -1,999 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdAssertionsTest is Test { - string constant CUSTOM_ERROR = "guh!"; - - bool constant EXPECT_PASS = false; - bool constant EXPECT_FAIL = true; - - bool constant SHOULD_REVERT = true; - bool constant SHOULD_RETURN = false; - - bool constant STRICT_REVERT_DATA = true; - bool constant NON_STRICT_REVERT_DATA = false; - - TestTest t = new TestTest(); - - /*////////////////////////////////////////////////////////////////////////// - FAIL(STRING) - //////////////////////////////////////////////////////////////////////////*/ - - function testShouldFail() external { - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._fail(CUSTOM_ERROR); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_FALSE - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertFalse_Pass() external { - t._assertFalse(false, EXPECT_PASS); - } - - function testAssertFalse_Fail() external { - vm.expectEmit(false, false, false, true); - emit log("Error: Assertion Failed"); - t._assertFalse(true, EXPECT_FAIL); - } - - function testAssertFalse_Err_Pass() external { - t._assertFalse(false, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertFalse_Err_Fail() external { - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertFalse(true, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ(BOOL) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEq_Bool_Pass(bool a) external { - t._assertEq(a, a, EXPECT_PASS); - } - - function testAssertEq_Bool_Fail(bool a, bool b) external { - vm.assume(a != b); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [bool]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_BoolErr_Pass(bool a) external { - t._assertEq(a, a, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertEq_BoolErr_Fail(bool a, bool b) external { - vm.assume(a != b); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ(BYTES) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEq_Bytes_Pass(bytes calldata a) external { - t._assertEq(a, a, EXPECT_PASS); - } - - function testAssertEq_Bytes_Fail(bytes calldata a, bytes calldata b) external { - vm.assume(keccak256(a) != keccak256(b)); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [bytes]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_BytesErr_Pass(bytes calldata a) external { - t._assertEq(a, a, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertEq_BytesErr_Fail(bytes calldata a, bytes calldata b) external { - vm.assume(keccak256(a) != keccak256(b)); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ(ARRAY) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEq_UintArr_Pass(uint256 e0, uint256 e1, uint256 e2) public { - uint256[] memory a = new uint256[](3); - a[0] = e0; - a[1] = e1; - a[2] = e2; - uint256[] memory b = new uint256[](3); - b[0] = e0; - b[1] = e1; - b[2] = e2; - - t._assertEq(a, b, EXPECT_PASS); - } - - function testAssertEq_IntArr_Pass(int256 e0, int256 e1, int256 e2) public { - int256[] memory a = new int256[](3); - a[0] = e0; - a[1] = e1; - a[2] = e2; - int256[] memory b = new int256[](3); - b[0] = e0; - b[1] = e1; - b[2] = e2; - - t._assertEq(a, b, EXPECT_PASS); - } - - function testAssertEq_AddressArr_Pass(address e0, address e1, address e2) public { - address[] memory a = new address[](3); - a[0] = e0; - a[1] = e1; - a[2] = e2; - address[] memory b = new address[](3); - b[0] = e0; - b[1] = e1; - b[2] = e2; - - t._assertEq(a, b, EXPECT_PASS); - } - - function testAssertEq_UintArr_FailEl(uint256 e1) public { - vm.assume(e1 != 0); - uint256[] memory a = new uint256[](3); - uint256[] memory b = new uint256[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [uint[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_IntArr_FailEl(int256 e1) public { - vm.assume(e1 != 0); - int256[] memory a = new int256[](3); - int256[] memory b = new int256[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [int[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_AddressArr_FailEl(address e1) public { - vm.assume(e1 != address(0)); - address[] memory a = new address[](3); - address[] memory b = new address[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [address[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_UintArrErr_FailEl(uint256 e1) public { - vm.assume(e1 != 0); - uint256[] memory a = new uint256[](3); - uint256[] memory b = new uint256[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [uint[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_IntArrErr_FailEl(int256 e1) public { - vm.assume(e1 != 0); - int256[] memory a = new int256[](3); - int256[] memory b = new int256[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [int[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_AddressArrErr_FailEl(address e1) public { - vm.assume(e1 != address(0)); - address[] memory a = new address[](3); - address[] memory b = new address[](3); - b[1] = e1; - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [address[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_UintArr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - uint256[] memory a = new uint256[](lenA); - uint256[] memory b = new uint256[](lenB); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [uint[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_IntArr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - int256[] memory a = new int256[](lenA); - int256[] memory b = new int256[](lenB); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [int[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_AddressArr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - address[] memory a = new address[](lenA); - address[] memory b = new address[](lenB); - - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [address[]]"); - t._assertEq(a, b, EXPECT_FAIL); - } - - function testAssertEq_UintArrErr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - uint256[] memory a = new uint256[](lenA); - uint256[] memory b = new uint256[](lenB); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [uint[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_IntArrErr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - int256[] memory a = new int256[](lenA); - int256[] memory b = new int256[](lenB); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [int[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - function testAssertEq_AddressArrErr_FailLen(uint256 lenA, uint256 lenB) public { - vm.assume(lenA != lenB); - vm.assume(lenA <= 10000); - vm.assume(lenB <= 10000); - address[] memory a = new address[](lenA); - address[] memory b = new address[](lenB); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - vm.expectEmit(false, false, false, true); - emit log("Error: a == b not satisfied [address[]]"); - t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEqUint() public { - assertEqUint(uint8(1), uint128(1)); - assertEqUint(uint64(2), uint64(2)); - } - - function testFailAssertEqUint() public { - assertEqUint(uint64(1), uint96(2)); - assertEqUint(uint160(3), uint160(4)); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_ABS(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqAbs_Uint_Pass(uint256 a, uint256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbs(a, b, maxDelta, EXPECT_PASS); - } - - function testAssertApproxEqAbs_Uint_Fail(uint256 a, uint256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [uint]"); - t._assertApproxEqAbs(a, b, maxDelta, EXPECT_FAIL); - } - - function testAssertApproxEqAbs_UintErr_Pass(uint256 a, uint256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqAbs_UintErr_Fail(uint256 a, uint256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_ABS_DECIMAL(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqAbsDecimal_Uint_Pass(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_PASS); - } - - function testAssertApproxEqAbsDecimal_Uint_Fail(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [uint]"); - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_FAIL); - } - - function testAssertApproxEqAbsDecimal_UintErr_Pass(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqAbsDecimal_UintErr_Fail(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_ABS(INT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqAbs_Int_Pass(int256 a, int256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbs(a, b, maxDelta, EXPECT_PASS); - } - - function testAssertApproxEqAbs_Int_Fail(int256 a, int256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [int]"); - t._assertApproxEqAbs(a, b, maxDelta, EXPECT_FAIL); - } - - function testAssertApproxEqAbs_IntErr_Pass(int256 a, int256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqAbs_IntErr_Fail(int256 a, int256 b, uint256 maxDelta) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_ABS_DECIMAL(INT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqAbsDecimal_Int_Pass(int256 a, int256 b, uint256 maxDelta, uint256 decimals) external { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_PASS); - } - - function testAssertApproxEqAbsDecimal_Int_Fail(int256 a, int256 b, uint256 maxDelta, uint256 decimals) external { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [int]"); - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_FAIL); - } - - function testAssertApproxEqAbsDecimal_IntErr_Pass(int256 a, int256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) <= maxDelta); - - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqAbsDecimal_IntErr_Fail(int256 a, int256 b, uint256 maxDelta, uint256 decimals) - external - { - vm.assume(stdMath.delta(a, b) > maxDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_REL(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqRel_Uint_Pass(uint256 a, uint256 b, uint256 maxPercentDelta) external { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_PASS); - } - - function testAssertApproxEqRel_Uint_Fail(uint256 a, uint256 b, uint256 maxPercentDelta) external { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [uint]"); - t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_FAIL); - } - - function testAssertApproxEqRel_UintErr_Pass(uint256 a, uint256 b, uint256 maxPercentDelta) external { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqRel_UintErr_Fail(uint256 a, uint256 b, uint256 maxPercentDelta) external { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_REL_DECIMAL(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqRelDecimal_Uint_Pass(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals) - external - { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_PASS); - } - - function testAssertApproxEqRelDecimal_Uint_Fail(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals) - external - { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [uint]"); - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_FAIL); - } - - function testAssertApproxEqRelDecimal_UintErr_Pass(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals) - external - { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqRelDecimal_UintErr_Fail(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals) - external - { - vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_REL(INT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqRel_Int_Pass(int128 a, int128 b, uint128 maxPercentDelta) external { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_PASS); - } - - function testAssertApproxEqRel_Int_Fail(int128 a, int128 b, uint128 maxPercentDelta) external { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [int]"); - t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_FAIL); - } - - function testAssertApproxEqRel_IntErr_Pass(int128 a, int128 b, uint128 maxPercentDelta) external { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqRel_IntErr_Fail(int128 a, int128 b, uint128 maxPercentDelta) external { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - APPROX_EQ_REL_DECIMAL(INT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertApproxEqRelDecimal_Int_Pass(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals) - external - { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_PASS); - } - - function testAssertApproxEqRelDecimal_Int_Fail(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals) - external - { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log("Error: a ~= b not satisfied [int]"); - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_FAIL); - } - - function testAssertApproxEqRelDecimal_IntErr_Pass(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals) - external - { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta); - - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAssertApproxEqRelDecimal_IntErr_Fail(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals) - external - { - vm.assume(b != 0); - vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta); - - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_EQ_CALL - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertEqCall_Return_Pass( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnData, - bool strictRevertData - ) external { - address targetA = address(new TestMockCall(returnData, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnData, SHOULD_RETURN)); - - t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_PASS); - } - - function testAssertEqCall_Return_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnDataA, - bytes memory returnDataB, - bool strictRevertData - ) external { - vm.assume(keccak256(returnDataA) != keccak256(returnDataB)); - - address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnDataB, SHOULD_RETURN)); - - vm.expectEmit(true, true, true, true); - emit log_named_string("Error", "Call return data does not match"); - t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_FAIL); - } - - function testAssertEqCall_Revert_Pass( - bytes memory callDataA, - bytes memory callDataB, - bytes memory revertDataA, - bytes memory revertDataB - ) external { - address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); - address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); - - t._assertEqCall(targetA, callDataA, targetB, callDataB, NON_STRICT_REVERT_DATA, EXPECT_PASS); - } - - function testAssertEqCall_Revert_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory revertDataA, - bytes memory revertDataB - ) external { - vm.assume(keccak256(revertDataA) != keccak256(revertDataB)); - - address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT)); - address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT)); - - vm.expectEmit(true, true, true, true); - emit log_named_string("Error", "Call revert data does not match"); - t._assertEqCall(targetA, callDataA, targetB, callDataB, STRICT_REVERT_DATA, EXPECT_FAIL); - } - - function testAssertEqCall_Fail( - bytes memory callDataA, - bytes memory callDataB, - bytes memory returnDataA, - bytes memory returnDataB, - bool strictRevertData - ) external { - address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN)); - address targetB = address(new TestMockCall(returnDataB, SHOULD_REVERT)); - - vm.expectEmit(true, true, true, true); - emit log_named_bytes(" Left call return data", returnDataA); - vm.expectEmit(true, true, true, true); - emit log_named_bytes(" Right call revert data", returnDataB); - t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_FAIL); - - vm.expectEmit(true, true, true, true); - emit log_named_bytes(" Left call revert data", returnDataB); - vm.expectEmit(true, true, true, true); - emit log_named_bytes(" Right call return data", returnDataA); - t._assertEqCall(targetB, callDataB, targetA, callDataA, strictRevertData, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_NOT_EQ(BYTES) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertNotEq_Bytes_Pass(bytes32 a, bytes32 b) external { - vm.assume(a != b); - t._assertNotEq(a, b, EXPECT_PASS); - } - - function testAssertNotEq_Bytes_Fail(bytes32 a) external { - vm.expectEmit(false, false, false, true); - emit log("Error: a != b not satisfied [bytes32]"); - t._assertNotEq(a, a, EXPECT_FAIL); - } - - function testAssertNotEq_BytesErr_Pass(bytes32 a, bytes32 b) external { - vm.assume(a != b); - t._assertNotEq(a, b, CUSTOM_ERROR, EXPECT_PASS); - } - - function testAsserNottEq_BytesErr_Fail(bytes32 a) external { - vm.expectEmit(false, false, false, true); - emit log_named_string("Error", CUSTOM_ERROR); - t._assertNotEq(a, a, CUSTOM_ERROR, EXPECT_FAIL); - } - - /*////////////////////////////////////////////////////////////////////////// - ASSERT_NOT_EQ(UINT) - //////////////////////////////////////////////////////////////////////////*/ - - function testAssertNotEqUint() public { - assertNotEq(uint8(1), uint128(2)); - assertNotEq(uint64(3), uint64(4)); - } - - function testFailAssertNotEqUint() public { - assertNotEq(uint64(1), uint96(1)); - assertNotEq(uint160(2), uint160(2)); - } -} - -contract TestTest is Test { - modifier expectFailure(bool expectFail) { - bool preState = vm.load(HEVM_ADDRESS, bytes32("failed")) != bytes32(0x00); - _; - bool postState = vm.load(HEVM_ADDRESS, bytes32("failed")) != bytes32(0x00); - - if (preState == true) { - return; - } - - if (expectFail) { - require(postState == true, "expected failure not triggered"); - - // unwind the expected failure - vm.store(HEVM_ADDRESS, bytes32("failed"), bytes32(uint256(0x00))); - } else { - require(postState == false, "unexpected failure was triggered"); - } - } - - function _fail(string memory err) external expectFailure(true) { - fail(err); - } - - function _assertFalse(bool data, bool expectFail) external expectFailure(expectFail) { - assertFalse(data); - } - - function _assertFalse(bool data, string memory err, bool expectFail) external expectFailure(expectFail) { - assertFalse(data, err); - } - - function _assertEq(bool a, bool b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(bool a, bool b, string memory err, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b, err); - } - - function _assertEq(bytes memory a, bytes memory b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(bytes memory a, bytes memory b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertEq(a, b, err); - } - - function _assertEq(uint256[] memory a, uint256[] memory b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(int256[] memory a, int256[] memory b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(address[] memory a, address[] memory b, bool expectFail) external expectFailure(expectFail) { - assertEq(a, b); - } - - function _assertEq(uint256[] memory a, uint256[] memory b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertEq(a, b, err); - } - - function _assertEq(int256[] memory a, int256[] memory b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertEq(a, b, err); - } - - function _assertEq(address[] memory a, address[] memory b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertEq(a, b, err); - } - - function _assertNotEq(bytes32 a, bytes32 b, bool expectFail) external expectFailure(expectFail) { - assertNotEq32(a, b); - } - - function _assertNotEq(bytes32 a, bytes32 b, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertNotEq32(a, b, err); - } - - function _assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbs(a, b, maxDelta); - } - - function _assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbs(a, b, maxDelta, err); - } - - function _assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbsDecimal(a, b, maxDelta, decimals); - } - - function _assertApproxEqAbsDecimal( - uint256 a, - uint256 b, - uint256 maxDelta, - uint256 decimals, - string memory err, - bool expectFail - ) external expectFailure(expectFail) { - assertApproxEqAbsDecimal(a, b, maxDelta, decimals, err); - } - - function _assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbs(a, b, maxDelta); - } - - function _assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbs(a, b, maxDelta, err); - } - - function _assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqAbsDecimal(a, b, maxDelta, decimals); - } - - function _assertApproxEqAbsDecimal( - int256 a, - int256 b, - uint256 maxDelta, - uint256 decimals, - string memory err, - bool expectFail - ) external expectFailure(expectFail) { - assertApproxEqAbsDecimal(a, b, maxDelta, decimals, err); - } - - function _assertApproxEqRel(uint256 a, uint256 b, uint256 maxPercentDelta, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRel(a, b, maxPercentDelta); - } - - function _assertApproxEqRel(uint256 a, uint256 b, uint256 maxPercentDelta, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRel(a, b, maxPercentDelta, err); - } - - function _assertApproxEqRelDecimal(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals); - } - - function _assertApproxEqRelDecimal( - uint256 a, - uint256 b, - uint256 maxPercentDelta, - uint256 decimals, - string memory err, - bool expectFail - ) external expectFailure(expectFail) { - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, err); - } - - function _assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRel(a, b, maxPercentDelta); - } - - function _assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, string memory err, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRel(a, b, maxPercentDelta, err); - } - - function _assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals, bool expectFail) - external - expectFailure(expectFail) - { - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals); - } - - function _assertApproxEqRelDecimal( - int256 a, - int256 b, - uint256 maxPercentDelta, - uint256 decimals, - string memory err, - bool expectFail - ) external expectFailure(expectFail) { - assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, err); - } - - function _assertEqCall( - address targetA, - bytes memory callDataA, - address targetB, - bytes memory callDataB, - bool strictRevertData, - bool expectFail - ) external expectFailure(expectFail) { - assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData); - } -} - -contract TestMockCall { - bytes returnData; - bool shouldRevert; - - constructor(bytes memory returnData_, bool shouldRevert_) { - returnData = returnData_; - shouldRevert = shouldRevert_; - } - - fallback() external payable { - bytes memory returnData_ = returnData; - - if (shouldRevert) { - assembly { - revert(add(returnData_, 0x20), mload(returnData_)) - } - } else { - assembly { - return(add(returnData_, 0x20), mload(returnData_)) - } - } - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdChains.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdChains.t.sol deleted file mode 100644 index 7480e48dd9..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdChains.t.sol +++ /dev/null @@ -1,215 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdChainsMock is Test { - function exposed_getChain(string memory chainAlias) public returns (Chain memory) { - return getChain(chainAlias); - } - - function exposed_getChain(uint256 chainId) public returns (Chain memory) { - return getChain(chainId); - } - - function exposed_setChain(string memory chainAlias, ChainData memory chainData) public { - setChain(chainAlias, chainData); - } - - function exposed_setFallbackToDefaultRpcUrls(bool useDefault) public { - setFallbackToDefaultRpcUrls(useDefault); - } -} - -contract StdChainsTest is Test { - function testChainRpcInitialization() public { - // RPCs specified in `foundry.toml` should be updated. - assertEq(getChain(1).rpcUrl, "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3"); - assertEq(getChain("optimism_goerli").rpcUrl, "https://goerli.optimism.io/"); - assertEq(getChain("arbitrum_one_goerli").rpcUrl, "https://goerli-rollup.arbitrum.io/rpc/"); - - // Environment variables should be the next fallback - assertEq(getChain("arbitrum_nova").rpcUrl, "https://nova.arbitrum.io/rpc"); - vm.setEnv("ARBITRUM_NOVA_RPC_URL", "myoverride"); - assertEq(getChain("arbitrum_nova").rpcUrl, "myoverride"); - vm.setEnv("ARBITRUM_NOVA_RPC_URL", "https://nova.arbitrum.io/rpc"); - - // Cannot override RPCs defined in `foundry.toml` - vm.setEnv("MAINNET_RPC_URL", "myoverride2"); - assertEq(getChain("mainnet").rpcUrl, "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3"); - - // Other RPCs should remain unchanged. - assertEq(getChain(31337).rpcUrl, "http://127.0.0.1:8545"); - assertEq(getChain("sepolia").rpcUrl, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001"); - } - - function testRpc(string memory rpcAlias) internal { - string memory rpcUrl = getChain(rpcAlias).rpcUrl; - vm.createSelectFork(rpcUrl); - } - - // Ensure we can connect to the default RPC URL for each chain. - // function testRpcs() public { - // testRpc("mainnet"); - // testRpc("goerli"); - // testRpc("sepolia"); - // testRpc("optimism"); - // testRpc("optimism_goerli"); - // testRpc("arbitrum_one"); - // testRpc("arbitrum_one_goerli"); - // testRpc("arbitrum_nova"); - // testRpc("polygon"); - // testRpc("polygon_mumbai"); - // testRpc("avalanche"); - // testRpc("avalanche_fuji"); - // testRpc("bnb_smart_chain"); - // testRpc("bnb_smart_chain_testnet"); - // testRpc("gnosis_chain"); - // } - - function testChainNoDefault() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain with alias \"does_not_exist\" not found."); - stdChainsMock.exposed_getChain("does_not_exist"); - } - - function testSetChainFirstFails() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain ID 31337 already used by \"anvil\"."); - stdChainsMock.exposed_setChain("anvil2", ChainData("Anvil", 31337, "URL")); - } - - function testChainBubbleUp() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - stdChainsMock.exposed_setChain("needs_undefined_env_var", ChainData("", 123456789, "")); - vm.expectRevert( - "Failed to resolve env var `UNDEFINED_RPC_URL_PLACEHOLDER` in `${UNDEFINED_RPC_URL_PLACEHOLDER}`: environment variable not found" - ); - stdChainsMock.exposed_getChain("needs_undefined_env_var"); - } - - function testCannotSetChain_ChainIdExists() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - stdChainsMock.exposed_setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - - vm.expectRevert('StdChains setChain(string,ChainData): Chain ID 123456789 already used by "custom_chain".'); - - stdChainsMock.exposed_setChain("another_custom_chain", ChainData("", 123456789, "")); - } - - function testSetChain() public { - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - Chain memory customChain = getChain("custom_chain"); - assertEq(customChain.name, "Custom Chain"); - assertEq(customChain.chainId, 123456789); - assertEq(customChain.chainAlias, "custom_chain"); - assertEq(customChain.rpcUrl, "https://custom.chain/"); - Chain memory chainById = getChain(123456789); - assertEq(chainById.name, customChain.name); - assertEq(chainById.chainId, customChain.chainId); - assertEq(chainById.chainAlias, customChain.chainAlias); - assertEq(chainById.rpcUrl, customChain.rpcUrl); - customChain.name = "Another Custom Chain"; - customChain.chainId = 987654321; - setChain("another_custom_chain", customChain); - Chain memory anotherCustomChain = getChain("another_custom_chain"); - assertEq(anotherCustomChain.name, "Another Custom Chain"); - assertEq(anotherCustomChain.chainId, 987654321); - assertEq(anotherCustomChain.chainAlias, "another_custom_chain"); - assertEq(anotherCustomChain.rpcUrl, "https://custom.chain/"); - // Verify the first chain data was not overwritten - chainById = getChain(123456789); - assertEq(chainById.name, "Custom Chain"); - assertEq(chainById.chainId, 123456789); - } - - function testSetNoEmptyAlias() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain alias cannot be the empty string."); - stdChainsMock.exposed_setChain("", ChainData("", 123456789, "")); - } - - function testSetNoChainId0() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains setChain(string,ChainData): Chain ID cannot be 0."); - stdChainsMock.exposed_setChain("alias", ChainData("", 0, "")); - } - - function testGetNoChainId0() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(uint256): Chain ID cannot be 0."); - stdChainsMock.exposed_getChain(0); - } - - function testGetNoEmptyAlias() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain alias cannot be the empty string."); - stdChainsMock.exposed_getChain(""); - } - - function testChainIdNotFound() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(string): Chain with alias \"no_such_alias\" not found."); - stdChainsMock.exposed_getChain("no_such_alias"); - } - - function testChainAliasNotFound() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - vm.expectRevert("StdChains getChain(uint256): Chain with ID 321 not found."); - - stdChainsMock.exposed_getChain(321); - } - - function testSetChain_ExistingOne() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/")); - assertEq(getChain(123456789).chainId, 123456789); - - setChain("custom_chain", ChainData("Modified Chain", 999999999, "https://modified.chain/")); - vm.expectRevert("StdChains getChain(uint256): Chain with ID 123456789 not found."); - stdChainsMock.exposed_getChain(123456789); - - Chain memory modifiedChain = getChain(999999999); - assertEq(modifiedChain.name, "Modified Chain"); - assertEq(modifiedChain.chainId, 999999999); - assertEq(modifiedChain.rpcUrl, "https://modified.chain/"); - } - - function testDontUseDefaultRpcUrl() public { - // We deploy a mock to properly test the revert. - StdChainsMock stdChainsMock = new StdChainsMock(); - - // Should error if default RPCs flag is set to false. - stdChainsMock.exposed_setFallbackToDefaultRpcUrls(false); - vm.expectRevert( - "Failed to get environment variable `ANVIL_RPC_URL` as type `string`: environment variable not found" - ); - stdChainsMock.exposed_getChain(31337); - vm.expectRevert( - "Failed to get environment variable `SEPOLIA_RPC_URL` as type `string`: environment variable not found" - ); - stdChainsMock.exposed_getChain("sepolia"); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdCheats.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdCheats.t.sol deleted file mode 100644 index bdc7870d68..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdCheats.t.sol +++ /dev/null @@ -1,610 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/StdCheats.sol"; -import "../src/Test.sol"; -import "../src/StdJson.sol"; - -contract StdCheatsTest is Test { - Bar test; - - using stdJson for string; - - function setUp() public { - test = new Bar(); - } - - function testSkip() public { - vm.warp(100); - skip(25); - assertEq(block.timestamp, 125); - } - - function testRewind() public { - vm.warp(100); - rewind(25); - assertEq(block.timestamp, 75); - } - - function testHoax() public { - hoax(address(1337)); - test.bar{value: 100}(address(1337)); - } - - function testHoaxOrigin() public { - hoax(address(1337), address(1337)); - test.origin{value: 100}(address(1337)); - } - - function testHoaxDifferentAddresses() public { - hoax(address(1337), address(7331)); - test.origin{value: 100}(address(1337), address(7331)); - } - - function testStartHoax() public { - startHoax(address(1337)); - test.bar{value: 100}(address(1337)); - test.bar{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } - - function testStartHoaxOrigin() public { - startHoax(address(1337), address(1337)); - test.origin{value: 100}(address(1337)); - test.origin{value: 100}(address(1337)); - vm.stopPrank(); - test.bar(address(this)); - } - - function testChangePrankMsgSender() public { - vm.startPrank(address(1337)); - test.bar(address(1337)); - changePrank(address(0xdead)); - test.bar(address(0xdead)); - changePrank(address(1337)); - test.bar(address(1337)); - vm.stopPrank(); - } - - function testChangePrankMsgSenderAndTxOrigin() public { - vm.startPrank(address(1337), address(1338)); - test.origin(address(1337), address(1338)); - changePrank(address(0xdead), address(0xbeef)); - test.origin(address(0xdead), address(0xbeef)); - changePrank(address(1337), address(1338)); - test.origin(address(1337), address(1338)); - vm.stopPrank(); - } - - function testMakeAccountEquivalence() public { - Account memory account = makeAccount("1337"); - (address addr, uint256 key) = makeAddrAndKey("1337"); - assertEq(account.addr, addr); - assertEq(account.key, key); - } - - function testMakeAddrEquivalence() public { - (address addr,) = makeAddrAndKey("1337"); - assertEq(makeAddr("1337"), addr); - } - - function testMakeAddrSigning() public { - (address addr, uint256 key) = makeAddrAndKey("1337"); - bytes32 hash = keccak256("some_message"); - - (uint8 v, bytes32 r, bytes32 s) = vm.sign(key, hash); - assertEq(ecrecover(hash, v, r, s), addr); - } - - function testDeal() public { - deal(address(this), 1 ether); - assertEq(address(this).balance, 1 ether); - } - - function testDealToken() public { - Bar barToken = new Bar(); - address bar = address(barToken); - deal(bar, address(this), 10000e18); - assertEq(barToken.balanceOf(address(this)), 10000e18); - } - - function testDealTokenAdjustTotalSupply() public { - Bar barToken = new Bar(); - address bar = address(barToken); - deal(bar, address(this), 10000e18, true); - assertEq(barToken.balanceOf(address(this)), 10000e18); - assertEq(barToken.totalSupply(), 20000e18); - deal(bar, address(this), 0, true); - assertEq(barToken.balanceOf(address(this)), 0); - assertEq(barToken.totalSupply(), 10000e18); - } - - function testDealERC1155Token() public { - BarERC1155 barToken = new BarERC1155(); - address bar = address(barToken); - dealERC1155(bar, address(this), 0, 10000e18, false); - assertEq(barToken.balanceOf(address(this), 0), 10000e18); - } - - function testDealERC1155TokenAdjustTotalSupply() public { - BarERC1155 barToken = new BarERC1155(); - address bar = address(barToken); - dealERC1155(bar, address(this), 0, 10000e18, true); - assertEq(barToken.balanceOf(address(this), 0), 10000e18); - assertEq(barToken.totalSupply(0), 20000e18); - dealERC1155(bar, address(this), 0, 0, true); - assertEq(barToken.balanceOf(address(this), 0), 0); - assertEq(barToken.totalSupply(0), 10000e18); - } - - function testDealERC721Token() public { - BarERC721 barToken = new BarERC721(); - address bar = address(barToken); - dealERC721(bar, address(2), 1); - assertEq(barToken.balanceOf(address(2)), 1); - assertEq(barToken.balanceOf(address(1)), 0); - dealERC721(bar, address(1), 2); - assertEq(barToken.balanceOf(address(1)), 1); - assertEq(barToken.balanceOf(bar), 1); - } - - function testDeployCode() public { - address deployed = deployCode("StdCheats.t.sol:Bar", bytes("")); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - } - - function testDestroyAccount() public { - // deploy something to destroy it - BarERC721 barToken = new BarERC721(); - address bar = address(barToken); - vm.setNonce(bar, 10); - deal(bar, 100); - - uint256 prevThisBalance = address(this).balance; - uint256 size; - assembly { - size := extcodesize(bar) - } - - assertGt(size, 0); - assertEq(bar.balance, 100); - assertEq(vm.getNonce(bar), 10); - - destroyAccount(bar, address(this)); - assembly { - size := extcodesize(bar) - } - assertEq(address(this).balance, prevThisBalance + 100); - assertEq(vm.getNonce(bar), 0); - assertEq(size, 0); - assertEq(bar.balance, 0); - } - - function testDeployCodeNoArgs() public { - address deployed = deployCode("StdCheats.t.sol:Bar"); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - } - - function testDeployCodeVal() public { - address deployed = deployCode("StdCheats.t.sol:Bar", bytes(""), 1 ether); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - assertEq(deployed.balance, 1 ether); - } - - function testDeployCodeValNoArgs() public { - address deployed = deployCode("StdCheats.t.sol:Bar", 1 ether); - assertEq(string(getCode(deployed)), string(getCode(address(test)))); - assertEq(deployed.balance, 1 ether); - } - - // We need this so we can call "this.deployCode" rather than "deployCode" directly - function deployCodeHelper(string memory what) external { - deployCode(what); - } - - function testDeployCodeFail() public { - vm.expectRevert(bytes("StdCheats deployCode(string): Deployment failed.")); - this.deployCodeHelper("StdCheats.t.sol:RevertingContract"); - } - - function getCode(address who) internal view returns (bytes memory o_code) { - /// @solidity memory-safe-assembly - assembly { - // retrieve the size of the code, this needs assembly - let size := extcodesize(who) - // allocate output byte array - this could also be done without assembly - // by using o_code = new bytes(size) - o_code := mload(0x40) - // new "memory end" including padding - mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f)))) - // store length in memory - mstore(o_code, size) - // actually retrieve the code, this needs assembly - extcodecopy(who, add(o_code, 0x20), 0, size) - } - } - - function testDeriveRememberKey() public { - string memory mnemonic = "test test test test test test test test test test test junk"; - - (address deployer, uint256 privateKey) = deriveRememberKey(mnemonic, 0); - assertEq(deployer, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); - assertEq(privateKey, 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80); - } - - function testBytesToUint() public { - assertEq(3, bytesToUint_test(hex"03")); - assertEq(2, bytesToUint_test(hex"02")); - assertEq(255, bytesToUint_test(hex"ff")); - assertEq(29625, bytesToUint_test(hex"73b9")); - } - - function testParseJsonTxDetail() public { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - string memory json = vm.readFile(path); - bytes memory transactionDetails = json.parseRaw(".transactions[0].tx"); - RawTx1559Detail memory rawTxDetail = abi.decode(transactionDetails, (RawTx1559Detail)); - Tx1559Detail memory txDetail = rawToConvertedEIP1559Detail(rawTxDetail); - assertEq(txDetail.from, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266); - assertEq(txDetail.to, 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512); - assertEq( - txDetail.data, - hex"23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004" - ); - assertEq(txDetail.nonce, 3); - assertEq(txDetail.txType, 2); - assertEq(txDetail.gas, 29625); - assertEq(txDetail.value, 0); - } - - function testReadEIP1559Transaction() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - uint256 index = 0; - Tx1559 memory transaction = readTx1559(path, index); - transaction; - } - - function testReadEIP1559Transactions() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - Tx1559[] memory transactions = readTx1559s(path); - transactions; - } - - function testReadReceipt() public { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - uint256 index = 5; - Receipt memory receipt = readReceipt(path, index); - assertEq( - receipt.logsBloom, - hex"00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100" - ); - } - - function testReadReceipts() public view { - string memory root = vm.projectRoot(); - string memory path = string.concat(root, "/test/fixtures/broadcast.log.json"); - Receipt[] memory receipts = readReceipts(path); - receipts; - } - - function testGasMeteringModifier() public { - uint256 gas_start_normal = gasleft(); - addInLoop(); - uint256 gas_used_normal = gas_start_normal - gasleft(); - - uint256 gas_start_single = gasleft(); - addInLoopNoGas(); - uint256 gas_used_single = gas_start_single - gasleft(); - - uint256 gas_start_double = gasleft(); - addInLoopNoGasNoGas(); - uint256 gas_used_double = gas_start_double - gasleft(); - - emit log_named_uint("Normal gas", gas_used_normal); - emit log_named_uint("Single modifier gas", gas_used_single); - emit log_named_uint("Double modifier gas", gas_used_double); - assertTrue(gas_used_double + gas_used_single < gas_used_normal); - } - - function addInLoop() internal pure returns (uint256) { - uint256 b; - for (uint256 i; i < 10000; i++) { - b += i; - } - return b; - } - - function addInLoopNoGas() internal noGasMetering returns (uint256) { - return addInLoop(); - } - - function addInLoopNoGasNoGas() internal noGasMetering returns (uint256) { - return addInLoopNoGas(); - } - - function bytesToUint_test(bytes memory b) private pure returns (uint256) { - uint256 number; - for (uint256 i = 0; i < b.length; i++) { - number = number + uint256(uint8(b[i])) * (2 ** (8 * (b.length - (i + 1)))); - } - return number; - } - - function testAssumeAddressIsNot(address addr) external { - // skip over Payable and NonPayable enums - for (uint8 i = 2; i < uint8(type(AddressType).max); i++) { - assumeAddressIsNot(addr, AddressType(i)); - } - assertTrue(addr != address(0)); - assertTrue(addr < address(1) || addr > address(9)); - assertTrue(addr != address(vm) || addr != 0x000000000000000000636F6e736F6c652e6c6f67); - } - - function testAssumePayable() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - - // all should revert since these addresses are not payable - - // VM address - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); - - // Console address - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x000000000000000000636F6e736F6c652e6c6f67); - - // Create2Deployer - vm.expectRevert(); - stdCheatsMock.exposed_assumePayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); - - // all should pass since these addresses are payable - - // vitalik.eth - stdCheatsMock.exposed_assumePayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045); - - // mock payable contract - MockContractPayable cp = new MockContractPayable(); - stdCheatsMock.exposed_assumePayable(address(cp)); - } - - function testAssumeNotPayable() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - - // all should pass since these addresses are not payable - - // VM address - stdCheatsMock.exposed_assumeNotPayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); - - // Console address - stdCheatsMock.exposed_assumeNotPayable(0x000000000000000000636F6e736F6c652e6c6f67); - - // Create2Deployer - stdCheatsMock.exposed_assumeNotPayable(0x4e59b44847b379578588920cA78FbF26c0B4956C); - - // all should revert since these addresses are payable - - // vitalik.eth - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotPayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045); - - // mock payable contract - MockContractPayable cp = new MockContractPayable(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotPayable(address(cp)); - } - - function testAssumeNotPrecompile(address addr) external { - assumeNotPrecompile(addr, getChain("optimism_goerli").chainId); - assertTrue( - addr < address(1) || (addr > address(9) && addr < address(0x4200000000000000000000000000000000000000)) - || addr > address(0x4200000000000000000000000000000000000800) - ); - } - - function testAssumeNotForgeAddress(address addr) external { - assumeNotForgeAddress(addr); - assertTrue( - addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67 - && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C - ); - } - - function testCannotDeployCodeTo() external { - vm.expectRevert("StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode."); - this._revertDeployCodeTo(); - } - - function _revertDeployCodeTo() external { - deployCodeTo("StdCheats.t.sol:RevertingContract", address(0)); - } - - function testDeployCodeTo() external { - address arbitraryAddress = makeAddr("arbitraryAddress"); - - deployCodeTo( - "StdCheats.t.sol:MockContractWithConstructorArgs", - abi.encode(uint256(6), true, bytes20(arbitraryAddress)), - 1 ether, - arbitraryAddress - ); - - MockContractWithConstructorArgs ct = MockContractWithConstructorArgs(arbitraryAddress); - - assertEq(arbitraryAddress.balance, 1 ether); - assertEq(ct.x(), 6); - assertTrue(ct.y()); - assertEq(ct.z(), bytes20(arbitraryAddress)); - } -} - -contract StdCheatsMock is StdCheats { - function exposed_assumePayable(address addr) external { - assumePayable(addr); - } - - function exposed_assumeNotPayable(address addr) external { - assumeNotPayable(addr); - } - - // We deploy a mock version so we can properly test expected reverts. - function exposed_assumeNotBlacklisted(address token, address addr) external view { - return assumeNotBlacklisted(token, addr); - } -} - -contract StdCheatsForkTest is Test { - address internal constant SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE; - address internal constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; - address internal constant USDC_BLACKLISTED_USER = 0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD; - address internal constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; - address internal constant USDT_BLACKLISTED_USER = 0x8f8a8F4B54a2aAC7799d7bc81368aC27b852822A; - - function setUp() public { - // All tests of the `assumeNotBlacklisted` method are fork tests using live contracts. - vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900}); - } - - function testCannotAssumeNoBlacklisted_EOA() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - address eoa = vm.addr({privateKey: 1}); - vm.expectRevert("StdCheats assumeNotBlacklisted(address,address): Token address is not a contract."); - stdCheatsMock.exposed_assumeNotBlacklisted(eoa, address(0)); - } - - function testAssumeNotBlacklisted_TokenWithoutBlacklist(address addr) external { - assumeNotBlacklisted(SHIB, addr); - assertTrue(true); - } - - function testAssumeNoBlacklisted_USDC() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotBlacklisted(USDC, USDC_BLACKLISTED_USER); - } - - function testAssumeNotBlacklisted_USDC(address addr) external { - assumeNotBlacklisted(USDC, addr); - assertFalse(USDCLike(USDC).isBlacklisted(addr)); - } - - function testAssumeNoBlacklisted_USDT() external { - // We deploy a mock version so we can properly test the revert. - StdCheatsMock stdCheatsMock = new StdCheatsMock(); - vm.expectRevert(); - stdCheatsMock.exposed_assumeNotBlacklisted(USDT, USDT_BLACKLISTED_USER); - } - - function testAssumeNotBlacklisted_USDT(address addr) external { - assumeNotBlacklisted(USDT, addr); - assertFalse(USDTLike(USDT).isBlackListed(addr)); - } -} - -contract Bar { - constructor() payable { - /// `DEAL` STDCHEAT - totalSupply = 10000e18; - balanceOf[address(this)] = totalSupply; - } - - /// `HOAX` and `CHANGEPRANK` STDCHEATS - function bar(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - } - - function origin(address expectedSender) public payable { - require(msg.sender == expectedSender, "!prank"); - require(tx.origin == expectedSender, "!prank"); - } - - function origin(address expectedSender, address expectedOrigin) public payable { - require(msg.sender == expectedSender, "!prank"); - require(tx.origin == expectedOrigin, "!prank"); - } - - /// `DEAL` STDCHEAT - mapping(address => uint256) public balanceOf; - uint256 public totalSupply; -} - -contract BarERC1155 { - constructor() payable { - /// `DEALERC1155` STDCHEAT - _totalSupply[0] = 10000e18; - _balances[0][address(this)] = _totalSupply[0]; - } - - function balanceOf(address account, uint256 id) public view virtual returns (uint256) { - return _balances[id][account]; - } - - function totalSupply(uint256 id) public view virtual returns (uint256) { - return _totalSupply[id]; - } - - /// `DEALERC1155` STDCHEAT - mapping(uint256 => mapping(address => uint256)) private _balances; - mapping(uint256 => uint256) private _totalSupply; -} - -contract BarERC721 { - constructor() payable { - /// `DEALERC721` STDCHEAT - _owners[1] = address(1); - _balances[address(1)] = 1; - _owners[2] = address(this); - _owners[3] = address(this); - _balances[address(this)] = 2; - } - - function balanceOf(address owner) public view virtual returns (uint256) { - return _balances[owner]; - } - - function ownerOf(uint256 tokenId) public view virtual returns (address) { - address owner = _owners[tokenId]; - return owner; - } - - mapping(uint256 => address) private _owners; - mapping(address => uint256) private _balances; -} - -interface USDCLike { - function isBlacklisted(address) external view returns (bool); -} - -interface USDTLike { - function isBlackListed(address) external view returns (bool); -} - -contract RevertingContract { - constructor() { - revert(); - } -} - -contract MockContractWithConstructorArgs { - uint256 public immutable x; - bool public y; - bytes20 public z; - - constructor(uint256 _x, bool _y, bytes20 _z) payable { - x = _x; - y = _y; - z = _z; - } -} - -contract MockContractPayable { - receive() external payable {} -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdError.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdError.t.sol deleted file mode 100644 index ccd3eface3..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdError.t.sol +++ /dev/null @@ -1,118 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import "../src/StdError.sol"; -import "../src/Test.sol"; - -contract StdErrorsTest is Test { - ErrorsTest test; - - function setUp() public { - test = new ErrorsTest(); - } - - function testExpectAssertion() public { - vm.expectRevert(stdError.assertionError); - test.assertionError(); - } - - function testExpectArithmetic() public { - vm.expectRevert(stdError.arithmeticError); - test.arithmeticError(10); - } - - function testExpectDiv() public { - vm.expectRevert(stdError.divisionError); - test.divError(0); - } - - function testExpectMod() public { - vm.expectRevert(stdError.divisionError); - test.modError(0); - } - - function testExpectEnum() public { - vm.expectRevert(stdError.enumConversionError); - test.enumConversion(1); - } - - function testExpectEncodeStg() public { - vm.expectRevert(stdError.encodeStorageError); - test.encodeStgError(); - } - - function testExpectPop() public { - vm.expectRevert(stdError.popError); - test.pop(); - } - - function testExpectOOB() public { - vm.expectRevert(stdError.indexOOBError); - test.indexOOBError(1); - } - - function testExpectMem() public { - vm.expectRevert(stdError.memOverflowError); - test.mem(); - } - - function testExpectIntern() public { - vm.expectRevert(stdError.zeroVarError); - test.intern(); - } -} - -contract ErrorsTest { - enum T {T1} - - uint256[] public someArr; - bytes someBytes; - - function assertionError() public pure { - assert(false); - } - - function arithmeticError(uint256 a) public pure { - a -= 100; - } - - function divError(uint256 a) public pure { - 100 / a; - } - - function modError(uint256 a) public pure { - 100 % a; - } - - function enumConversion(uint256 a) public pure { - T(a); - } - - function encodeStgError() public { - /// @solidity memory-safe-assembly - assembly { - sstore(someBytes.slot, 1) - } - keccak256(someBytes); - } - - function pop() public { - someArr.pop(); - } - - function indexOOBError(uint256 a) public pure { - uint256[] memory t = new uint256[](0); - t[a]; - } - - function mem() public pure { - uint256 l = 2 ** 256 / 32; - new uint256[](l); - } - - function intern() public returns (uint256) { - function(uint256) internal returns (uint256) x; - x(2); - return 7; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdMath.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdMath.t.sol deleted file mode 100644 index 31c8a315a9..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdMath.t.sol +++ /dev/null @@ -1,212 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.0 <0.9.0; - -import "../src/StdMath.sol"; -import "../src/Test.sol"; - -contract StdMathMock is Test { - function exposed_percentDelta(uint256 a, uint256 b) public pure returns (uint256) { - return stdMath.percentDelta(a, b); - } - - function exposed_percentDelta(int256 a, int256 b) public pure returns (uint256) { - return stdMath.percentDelta(a, b); - } -} - -contract StdMathTest is Test { - function testGetAbs() external { - assertEq(stdMath.abs(-50), 50); - assertEq(stdMath.abs(50), 50); - assertEq(stdMath.abs(-1337), 1337); - assertEq(stdMath.abs(0), 0); - - assertEq(stdMath.abs(type(int256).min), (type(uint256).max >> 1) + 1); - assertEq(stdMath.abs(type(int256).max), (type(uint256).max >> 1)); - } - - function testGetAbs_Fuzz(int256 a) external { - uint256 manualAbs = getAbs(a); - - uint256 abs = stdMath.abs(a); - - assertEq(abs, manualAbs); - } - - function testGetDelta_Uint() external { - assertEq(stdMath.delta(uint256(0), uint256(0)), 0); - assertEq(stdMath.delta(uint256(0), uint256(1337)), 1337); - assertEq(stdMath.delta(uint256(0), type(uint64).max), type(uint64).max); - assertEq(stdMath.delta(uint256(0), type(uint128).max), type(uint128).max); - assertEq(stdMath.delta(uint256(0), type(uint256).max), type(uint256).max); - - assertEq(stdMath.delta(0, uint256(0)), 0); - assertEq(stdMath.delta(1337, uint256(0)), 1337); - assertEq(stdMath.delta(type(uint64).max, uint256(0)), type(uint64).max); - assertEq(stdMath.delta(type(uint128).max, uint256(0)), type(uint128).max); - assertEq(stdMath.delta(type(uint256).max, uint256(0)), type(uint256).max); - - assertEq(stdMath.delta(1337, uint256(1337)), 0); - assertEq(stdMath.delta(type(uint256).max, type(uint256).max), 0); - assertEq(stdMath.delta(5000, uint256(1250)), 3750); - } - - function testGetDelta_Uint_Fuzz(uint256 a, uint256 b) external { - uint256 manualDelta; - if (a > b) { - manualDelta = a - b; - } else { - manualDelta = b - a; - } - - uint256 delta = stdMath.delta(a, b); - - assertEq(delta, manualDelta); - } - - function testGetDelta_Int() external { - assertEq(stdMath.delta(int256(0), int256(0)), 0); - assertEq(stdMath.delta(int256(0), int256(1337)), 1337); - assertEq(stdMath.delta(int256(0), type(int64).max), type(uint64).max >> 1); - assertEq(stdMath.delta(int256(0), type(int128).max), type(uint128).max >> 1); - assertEq(stdMath.delta(int256(0), type(int256).max), type(uint256).max >> 1); - - assertEq(stdMath.delta(0, int256(0)), 0); - assertEq(stdMath.delta(1337, int256(0)), 1337); - assertEq(stdMath.delta(type(int64).max, int256(0)), type(uint64).max >> 1); - assertEq(stdMath.delta(type(int128).max, int256(0)), type(uint128).max >> 1); - assertEq(stdMath.delta(type(int256).max, int256(0)), type(uint256).max >> 1); - - assertEq(stdMath.delta(-0, int256(0)), 0); - assertEq(stdMath.delta(-1337, int256(0)), 1337); - assertEq(stdMath.delta(type(int64).min, int256(0)), (type(uint64).max >> 1) + 1); - assertEq(stdMath.delta(type(int128).min, int256(0)), (type(uint128).max >> 1) + 1); - assertEq(stdMath.delta(type(int256).min, int256(0)), (type(uint256).max >> 1) + 1); - - assertEq(stdMath.delta(int256(0), -0), 0); - assertEq(stdMath.delta(int256(0), -1337), 1337); - assertEq(stdMath.delta(int256(0), type(int64).min), (type(uint64).max >> 1) + 1); - assertEq(stdMath.delta(int256(0), type(int128).min), (type(uint128).max >> 1) + 1); - assertEq(stdMath.delta(int256(0), type(int256).min), (type(uint256).max >> 1) + 1); - - assertEq(stdMath.delta(1337, int256(1337)), 0); - assertEq(stdMath.delta(type(int256).max, type(int256).max), 0); - assertEq(stdMath.delta(type(int256).min, type(int256).min), 0); - assertEq(stdMath.delta(type(int256).min, type(int256).max), type(uint256).max); - assertEq(stdMath.delta(5000, int256(1250)), 3750); - } - - function testGetDelta_Int_Fuzz(int256 a, int256 b) external { - uint256 absA = getAbs(a); - uint256 absB = getAbs(b); - uint256 absDelta = absA > absB ? absA - absB : absB - absA; - - uint256 manualDelta; - if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { - manualDelta = absDelta; - } - // (a < 0 && b >= 0) || (a >= 0 && b < 0) - else { - manualDelta = absA + absB; - } - - uint256 delta = stdMath.delta(a, b); - - assertEq(delta, manualDelta); - } - - function testGetPercentDelta_Uint() external { - StdMathMock stdMathMock = new StdMathMock(); - - assertEq(stdMath.percentDelta(uint256(0), uint256(1337)), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint64).max), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint128).max), 1e18); - assertEq(stdMath.percentDelta(uint256(0), type(uint192).max), 1e18); - - assertEq(stdMath.percentDelta(1337, uint256(1337)), 0); - assertEq(stdMath.percentDelta(type(uint192).max, type(uint192).max), 0); - assertEq(stdMath.percentDelta(0, uint256(2500)), 1e18); - assertEq(stdMath.percentDelta(2500, uint256(2500)), 0); - assertEq(stdMath.percentDelta(5000, uint256(2500)), 1e18); - assertEq(stdMath.percentDelta(7500, uint256(2500)), 2e18); - - vm.expectRevert(stdError.divisionError); - stdMathMock.exposed_percentDelta(uint256(1), 0); - } - - function testGetPercentDelta_Uint_Fuzz(uint192 a, uint192 b) external { - vm.assume(b != 0); - uint256 manualDelta; - if (a > b) { - manualDelta = a - b; - } else { - manualDelta = b - a; - } - - uint256 manualPercentDelta = manualDelta * 1e18 / b; - uint256 percentDelta = stdMath.percentDelta(a, b); - - assertEq(percentDelta, manualPercentDelta); - } - - function testGetPercentDelta_Int() external { - // We deploy a mock version so we can properly test the revert. - StdMathMock stdMathMock = new StdMathMock(); - - assertEq(stdMath.percentDelta(int256(0), int256(1337)), 1e18); - assertEq(stdMath.percentDelta(int256(0), -1337), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int64).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int128).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int192).min), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int64).max), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int128).max), 1e18); - assertEq(stdMath.percentDelta(int256(0), type(int192).max), 1e18); - - assertEq(stdMath.percentDelta(1337, int256(1337)), 0); - assertEq(stdMath.percentDelta(type(int192).max, type(int192).max), 0); - assertEq(stdMath.percentDelta(type(int192).min, type(int192).min), 0); - - assertEq(stdMath.percentDelta(type(int192).min, type(int192).max), 2e18); // rounds the 1 wei diff down - assertEq(stdMath.percentDelta(type(int192).max, type(int192).min), 2e18 - 1); // rounds the 1 wei diff down - assertEq(stdMath.percentDelta(0, int256(2500)), 1e18); - assertEq(stdMath.percentDelta(2500, int256(2500)), 0); - assertEq(stdMath.percentDelta(5000, int256(2500)), 1e18); - assertEq(stdMath.percentDelta(7500, int256(2500)), 2e18); - - vm.expectRevert(stdError.divisionError); - stdMathMock.exposed_percentDelta(int256(1), 0); - } - - function testGetPercentDelta_Int_Fuzz(int192 a, int192 b) external { - vm.assume(b != 0); - uint256 absA = getAbs(a); - uint256 absB = getAbs(b); - uint256 absDelta = absA > absB ? absA - absB : absB - absA; - - uint256 manualDelta; - if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) { - manualDelta = absDelta; - } - // (a < 0 && b >= 0) || (a >= 0 && b < 0) - else { - manualDelta = absA + absB; - } - - uint256 manualPercentDelta = manualDelta * 1e18 / absB; - uint256 percentDelta = stdMath.percentDelta(a, b); - - assertEq(percentDelta, manualPercentDelta); - } - - /*////////////////////////////////////////////////////////////////////////// - HELPERS - //////////////////////////////////////////////////////////////////////////*/ - - function getAbs(int256 a) private pure returns (uint256) { - if (a < 0) { - return a == type(int256).min ? uint256(type(int256).max) + 1 : uint256(-a); - } - - return uint256(a); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdStorage.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdStorage.t.sol deleted file mode 100644 index fbf169d9fd..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdStorage.t.sol +++ /dev/null @@ -1,293 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/StdStorage.sol"; -import "../src/Test.sol"; - -contract StdStorageTest is Test { - using stdStorage for StdStorage; - - StorageTest internal test; - - function setUp() public { - test = new StorageTest(); - } - - function testStorageHidden() public { - assertEq(uint256(keccak256("my.random.var")), stdstore.target(address(test)).sig("hidden()").find()); - } - - function testStorageObvious() public { - assertEq(uint256(0), stdstore.target(address(test)).sig("exists()").find()); - } - - function testStorageCheckedWriteHidden() public { - stdstore.target(address(test)).sig(test.hidden.selector).checked_write(100); - assertEq(uint256(test.hidden()), 100); - } - - function testStorageCheckedWriteObvious() public { - stdstore.target(address(test)).sig(test.exists.selector).checked_write(100); - assertEq(test.exists(), 100); - } - - function testStorageCheckedWriteSignedIntegerHidden() public { - stdstore.target(address(test)).sig(test.hidden.selector).checked_write_int(-100); - assertEq(int256(uint256(test.hidden())), -100); - } - - function testStorageCheckedWriteSignedIntegerObvious() public { - stdstore.target(address(test)).sig(test.tG.selector).checked_write_int(-100); - assertEq(test.tG(), -100); - } - - function testStorageMapStructA() public { - uint256 slot = - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).find(); - assertEq(uint256(keccak256(abi.encode(address(this), 4))), slot); - } - - function testStorageMapStructB() public { - uint256 slot = - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).find(); - assertEq(uint256(keccak256(abi.encode(address(this), 4))) + 1, slot); - } - - function testStorageDeepMap() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key( - address(this) - ).find(); - assertEq(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(5)))))), slot); - } - - function testStorageCheckedWriteDeepMap() public { - stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key(address(this)) - .checked_write(100); - assertEq(100, test.deep_map(address(this), address(this))); - } - - function testStorageDeepMapStructA() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) - .with_key(address(this)).depth(0).find(); - assertEq( - bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 0), - bytes32(slot) - ); - } - - function testStorageDeepMapStructB() public { - uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)) - .with_key(address(this)).depth(1).find(); - assertEq( - bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 1), - bytes32(slot) - ); - } - - function testStorageCheckedWriteDeepMapStructA() public { - stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( - address(this) - ).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); - assertEq(100, a); - assertEq(0, b); - } - - function testStorageCheckedWriteDeepMapStructB() public { - stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key( - address(this) - ).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this)); - assertEq(0, a); - assertEq(100, b); - } - - function testStorageCheckedWriteMapStructA() public { - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.map_struct(address(this)); - assertEq(a, 100); - assertEq(b, 0); - } - - function testStorageCheckedWriteMapStructB() public { - stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.map_struct(address(this)); - assertEq(a, 0); - assertEq(b, 100); - } - - function testStorageStructA() public { - uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(0).find(); - assertEq(uint256(7), slot); - } - - function testStorageStructB() public { - uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(1).find(); - assertEq(uint256(7) + 1, slot); - } - - function testStorageCheckedWriteStructA() public { - stdstore.target(address(test)).sig(test.basic.selector).depth(0).checked_write(100); - (uint256 a, uint256 b) = test.basic(); - assertEq(a, 100); - assertEq(b, 1337); - } - - function testStorageCheckedWriteStructB() public { - stdstore.target(address(test)).sig(test.basic.selector).depth(1).checked_write(100); - (uint256 a, uint256 b) = test.basic(); - assertEq(a, 1337); - assertEq(b, 100); - } - - function testStorageMapAddrFound() public { - uint256 slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).find(); - assertEq(uint256(keccak256(abi.encode(address(this), uint256(1)))), slot); - } - - function testStorageMapUintFound() public { - uint256 slot = stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).find(); - assertEq(uint256(keccak256(abi.encode(100, uint256(2)))), slot); - } - - function testStorageCheckedWriteMapUint() public { - stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).checked_write(100); - assertEq(100, test.map_uint(100)); - } - - function testStorageCheckedWriteMapAddr() public { - stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).checked_write(100); - assertEq(100, test.map_addr(address(this))); - } - - function testStorageCheckedWriteMapBool() public { - stdstore.target(address(test)).sig(test.map_bool.selector).with_key(address(this)).checked_write(true); - assertTrue(test.map_bool(address(this))); - } - - function testFailStorageCheckedWriteMapPacked() public { - // expect PackedSlot error but not external call so cant expectRevert - stdstore.target(address(test)).sig(test.read_struct_lower.selector).with_key(address(uint160(1337))) - .checked_write(100); - } - - function testStorageCheckedWriteMapPackedSuccess() public { - uint256 full = test.map_packed(address(1337)); - // keep upper 128, set lower 128 to 1337 - full = (full & (uint256((1 << 128) - 1) << 128)) | 1337; - stdstore.target(address(test)).sig(test.map_packed.selector).with_key(address(uint160(1337))).checked_write( - full - ); - assertEq(1337, test.read_struct_lower(address(1337))); - } - - function testFailStorageConst() public { - // vm.expectRevert(abi.encodeWithSignature("NotStorage(bytes4)", bytes4(keccak256("const()")))); - stdstore.target(address(test)).sig("const()").find(); - } - - function testFailStorageNativePack() public { - stdstore.target(address(test)).sig(test.tA.selector).find(); - stdstore.target(address(test)).sig(test.tB.selector).find(); - - // these both would fail - stdstore.target(address(test)).sig(test.tC.selector).find(); - stdstore.target(address(test)).sig(test.tD.selector).find(); - } - - function testStorageReadBytes32() public { - bytes32 val = stdstore.target(address(test)).sig(test.tE.selector).read_bytes32(); - assertEq(val, hex"1337"); - } - - function testStorageReadBool_False() public { - bool val = stdstore.target(address(test)).sig(test.tB.selector).read_bool(); - assertEq(val, false); - } - - function testStorageReadBool_True() public { - bool val = stdstore.target(address(test)).sig(test.tH.selector).read_bool(); - assertEq(val, true); - } - - function testStorageReadBool_Revert() public { - vm.expectRevert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."); - this.readNonBoolValue(); - } - - function readNonBoolValue() public { - stdstore.target(address(test)).sig(test.tE.selector).read_bool(); - } - - function testStorageReadAddress() public { - address val = stdstore.target(address(test)).sig(test.tF.selector).read_address(); - assertEq(val, address(1337)); - } - - function testStorageReadUint() public { - uint256 val = stdstore.target(address(test)).sig(test.exists.selector).read_uint(); - assertEq(val, 1); - } - - function testStorageReadInt() public { - int256 val = stdstore.target(address(test)).sig(test.tG.selector).read_int(); - assertEq(val, type(int256).min); - } -} - -contract StorageTest { - uint256 public exists = 1; - mapping(address => uint256) public map_addr; - mapping(uint256 => uint256) public map_uint; - mapping(address => uint256) public map_packed; - mapping(address => UnpackedStruct) public map_struct; - mapping(address => mapping(address => uint256)) public deep_map; - mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct; - UnpackedStruct public basic; - - uint248 public tA; - bool public tB; - - bool public tC = false; - uint248 public tD = 1; - - struct UnpackedStruct { - uint256 a; - uint256 b; - } - - mapping(address => bool) public map_bool; - - bytes32 public tE = hex"1337"; - address public tF = address(1337); - int256 public tG = type(int256).min; - bool public tH = true; - - constructor() { - basic = UnpackedStruct({a: 1337, b: 1337}); - - uint256 two = (1 << 128) | 1; - map_packed[msg.sender] = two; - map_packed[address(uint160(1337))] = 1 << 128; - } - - function read_struct_upper(address who) public view returns (uint256) { - return map_packed[who] >> 128; - } - - function read_struct_lower(address who) public view returns (uint256) { - return map_packed[who] & ((1 << 128) - 1); - } - - function hidden() public view returns (bytes32 t) { - bytes32 slot = keccak256("my.random.var"); - /// @solidity memory-safe-assembly - assembly { - t := sload(slot) - } - } - - function const() public pure returns (bytes32 t) { - t = bytes32(hex"1337"); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdStyle.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdStyle.t.sol deleted file mode 100644 index f6fffe7ac8..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdStyle.t.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdStyleTest is Test { - function testStyleColor() public pure { - console2.log(StdStyle.red("StdStyle.red String Test")); - console2.log(StdStyle.red(uint256(10e18))); - console2.log(StdStyle.red(int256(-10e18))); - console2.log(StdStyle.red(true)); - console2.log(StdStyle.red(address(0))); - console2.log(StdStyle.redBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.redBytes32("StdStyle.redBytes32")); - console2.log(StdStyle.green("StdStyle.green String Test")); - console2.log(StdStyle.green(uint256(10e18))); - console2.log(StdStyle.green(int256(-10e18))); - console2.log(StdStyle.green(true)); - console2.log(StdStyle.green(address(0))); - console2.log(StdStyle.greenBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.greenBytes32("StdStyle.greenBytes32")); - console2.log(StdStyle.yellow("StdStyle.yellow String Test")); - console2.log(StdStyle.yellow(uint256(10e18))); - console2.log(StdStyle.yellow(int256(-10e18))); - console2.log(StdStyle.yellow(true)); - console2.log(StdStyle.yellow(address(0))); - console2.log(StdStyle.yellowBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.yellowBytes32("StdStyle.yellowBytes32")); - console2.log(StdStyle.blue("StdStyle.blue String Test")); - console2.log(StdStyle.blue(uint256(10e18))); - console2.log(StdStyle.blue(int256(-10e18))); - console2.log(StdStyle.blue(true)); - console2.log(StdStyle.blue(address(0))); - console2.log(StdStyle.blueBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.blueBytes32("StdStyle.blueBytes32")); - console2.log(StdStyle.magenta("StdStyle.magenta String Test")); - console2.log(StdStyle.magenta(uint256(10e18))); - console2.log(StdStyle.magenta(int256(-10e18))); - console2.log(StdStyle.magenta(true)); - console2.log(StdStyle.magenta(address(0))); - console2.log(StdStyle.magentaBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.magentaBytes32("StdStyle.magentaBytes32")); - console2.log(StdStyle.cyan("StdStyle.cyan String Test")); - console2.log(StdStyle.cyan(uint256(10e18))); - console2.log(StdStyle.cyan(int256(-10e18))); - console2.log(StdStyle.cyan(true)); - console2.log(StdStyle.cyan(address(0))); - console2.log(StdStyle.cyanBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.cyanBytes32("StdStyle.cyanBytes32")); - } - - function testStyleFontWeight() public pure { - console2.log(StdStyle.bold("StdStyle.bold String Test")); - console2.log(StdStyle.bold(uint256(10e18))); - console2.log(StdStyle.bold(int256(-10e18))); - console2.log(StdStyle.bold(address(0))); - console2.log(StdStyle.bold(true)); - console2.log(StdStyle.boldBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.boldBytes32("StdStyle.boldBytes32")); - console2.log(StdStyle.dim("StdStyle.dim String Test")); - console2.log(StdStyle.dim(uint256(10e18))); - console2.log(StdStyle.dim(int256(-10e18))); - console2.log(StdStyle.dim(address(0))); - console2.log(StdStyle.dim(true)); - console2.log(StdStyle.dimBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.dimBytes32("StdStyle.dimBytes32")); - console2.log(StdStyle.italic("StdStyle.italic String Test")); - console2.log(StdStyle.italic(uint256(10e18))); - console2.log(StdStyle.italic(int256(-10e18))); - console2.log(StdStyle.italic(address(0))); - console2.log(StdStyle.italic(true)); - console2.log(StdStyle.italicBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.italicBytes32("StdStyle.italicBytes32")); - console2.log(StdStyle.underline("StdStyle.underline String Test")); - console2.log(StdStyle.underline(uint256(10e18))); - console2.log(StdStyle.underline(int256(-10e18))); - console2.log(StdStyle.underline(address(0))); - console2.log(StdStyle.underline(true)); - console2.log(StdStyle.underlineBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.underlineBytes32("StdStyle.underlineBytes32")); - console2.log(StdStyle.inverse("StdStyle.inverse String Test")); - console2.log(StdStyle.inverse(uint256(10e18))); - console2.log(StdStyle.inverse(int256(-10e18))); - console2.log(StdStyle.inverse(address(0))); - console2.log(StdStyle.inverse(true)); - console2.log(StdStyle.inverseBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D")); - console2.log(StdStyle.inverseBytes32("StdStyle.inverseBytes32")); - } - - function testStyleCombined() public pure { - console2.log(StdStyle.red(StdStyle.bold("Red Bold String Test"))); - console2.log(StdStyle.green(StdStyle.dim(uint256(10e18)))); - console2.log(StdStyle.yellow(StdStyle.italic(int256(-10e18)))); - console2.log(StdStyle.blue(StdStyle.underline(address(0)))); - console2.log(StdStyle.magenta(StdStyle.inverse(true))); - } - - function testStyleCustom() public pure { - console2.log(h1("Custom Style 1")); - console2.log(h2("Custom Style 2")); - } - - function h1(string memory a) private pure returns (string memory) { - return StdStyle.cyan(StdStyle.inverse(StdStyle.bold(a))); - } - - function h2(string memory a) private pure returns (string memory) { - return StdStyle.magenta(StdStyle.bold(StdStyle.underline(a))); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdUtils.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdUtils.t.sol deleted file mode 100644 index d648512c8d..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/StdUtils.t.sol +++ /dev/null @@ -1,342 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.7.0 <0.9.0; - -import "../src/Test.sol"; - -contract StdUtilsMock is StdUtils { - // We deploy a mock version so we can properly test expected reverts. - function exposed_getTokenBalances(address token, address[] memory addresses) - external - returns (uint256[] memory balances) - { - return getTokenBalances(token, addresses); - } - - function exposed_bound(int256 num, int256 min, int256 max) external view returns (int256) { - return bound(num, min, max); - } - - function exposed_bound(uint256 num, uint256 min, uint256 max) external view returns (uint256) { - return bound(num, min, max); - } - - function exposed_bytesToUint(bytes memory b) external pure returns (uint256) { - return bytesToUint(b); - } -} - -contract StdUtilsTest is Test { - /*////////////////////////////////////////////////////////////////////////// - BOUND UINT - //////////////////////////////////////////////////////////////////////////*/ - - function testBound() public { - assertEq(bound(uint256(5), 0, 4), 0); - assertEq(bound(uint256(0), 69, 69), 69); - assertEq(bound(uint256(0), 68, 69), 68); - assertEq(bound(uint256(10), 150, 190), 174); - assertEq(bound(uint256(300), 2800, 3200), 3107); - assertEq(bound(uint256(9999), 1337, 6666), 4669); - } - - function testBound_WithinRange() public { - assertEq(bound(uint256(51), 50, 150), 51); - assertEq(bound(uint256(51), 50, 150), bound(bound(uint256(51), 50, 150), 50, 150)); - assertEq(bound(uint256(149), 50, 150), 149); - assertEq(bound(uint256(149), 50, 150), bound(bound(uint256(149), 50, 150), 50, 150)); - } - - function testBound_EdgeCoverage() public { - assertEq(bound(uint256(0), 50, 150), 50); - assertEq(bound(uint256(1), 50, 150), 51); - assertEq(bound(uint256(2), 50, 150), 52); - assertEq(bound(uint256(3), 50, 150), 53); - assertEq(bound(type(uint256).max, 50, 150), 150); - assertEq(bound(type(uint256).max - 1, 50, 150), 149); - assertEq(bound(type(uint256).max - 2, 50, 150), 148); - assertEq(bound(type(uint256).max - 3, 50, 150), 147); - } - - function testBound_DistributionIsEven(uint256 min, uint256 size) public { - size = size % 100 + 1; - min = bound(min, UINT256_MAX / 2, UINT256_MAX / 2 + size); - uint256 max = min + size - 1; - uint256 result; - - for (uint256 i = 1; i <= size * 4; ++i) { - // x > max - result = bound(max + i, min, max); - assertEq(result, min + (i - 1) % size); - // x < min - result = bound(min - i, min, max); - assertEq(result, max - (i - 1) % size); - } - } - - function testBound(uint256 num, uint256 min, uint256 max) public { - if (min > max) (min, max) = (max, min); - - uint256 result = bound(num, min, max); - - assertGe(result, min); - assertLe(result, max); - assertEq(result, bound(result, min, max)); - if (num >= min && num <= max) assertEq(result, num); - } - - function testBoundUint256Max() public { - assertEq(bound(0, type(uint256).max - 1, type(uint256).max), type(uint256).max - 1); - assertEq(bound(1, type(uint256).max - 1, type(uint256).max), type(uint256).max); - } - - function testCannotBoundMaxLessThanMin() public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); - stdUtils.exposed_bound(uint256(5), 100, 10); - } - - function testCannotBoundMaxLessThanMin(uint256 num, uint256 min, uint256 max) public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.assume(min > max); - vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min.")); - stdUtils.exposed_bound(num, min, max); - } - - /*////////////////////////////////////////////////////////////////////////// - BOUND INT - //////////////////////////////////////////////////////////////////////////*/ - - function testBoundInt() public { - assertEq(bound(-3, 0, 4), 2); - assertEq(bound(0, -69, -69), -69); - assertEq(bound(0, -69, -68), -68); - assertEq(bound(-10, 150, 190), 154); - assertEq(bound(-300, 2800, 3200), 2908); - assertEq(bound(9999, -1337, 6666), 1995); - } - - function testBoundInt_WithinRange() public { - assertEq(bound(51, -50, 150), 51); - assertEq(bound(51, -50, 150), bound(bound(51, -50, 150), -50, 150)); - assertEq(bound(149, -50, 150), 149); - assertEq(bound(149, -50, 150), bound(bound(149, -50, 150), -50, 150)); - } - - function testBoundInt_EdgeCoverage() public { - assertEq(bound(type(int256).min, -50, 150), -50); - assertEq(bound(type(int256).min + 1, -50, 150), -49); - assertEq(bound(type(int256).min + 2, -50, 150), -48); - assertEq(bound(type(int256).min + 3, -50, 150), -47); - assertEq(bound(type(int256).min, 10, 150), 10); - assertEq(bound(type(int256).min + 1, 10, 150), 11); - assertEq(bound(type(int256).min + 2, 10, 150), 12); - assertEq(bound(type(int256).min + 3, 10, 150), 13); - - assertEq(bound(type(int256).max, -50, 150), 150); - assertEq(bound(type(int256).max - 1, -50, 150), 149); - assertEq(bound(type(int256).max - 2, -50, 150), 148); - assertEq(bound(type(int256).max - 3, -50, 150), 147); - assertEq(bound(type(int256).max, -50, -10), -10); - assertEq(bound(type(int256).max - 1, -50, -10), -11); - assertEq(bound(type(int256).max - 2, -50, -10), -12); - assertEq(bound(type(int256).max - 3, -50, -10), -13); - } - - function testBoundInt_DistributionIsEven(int256 min, uint256 size) public { - size = size % 100 + 1; - min = bound(min, -int256(size / 2), int256(size - size / 2)); - int256 max = min + int256(size) - 1; - int256 result; - - for (uint256 i = 1; i <= size * 4; ++i) { - // x > max - result = bound(max + int256(i), min, max); - assertEq(result, min + int256((i - 1) % size)); - // x < min - result = bound(min - int256(i), min, max); - assertEq(result, max - int256((i - 1) % size)); - } - } - - function testBoundInt(int256 num, int256 min, int256 max) public { - if (min > max) (min, max) = (max, min); - - int256 result = bound(num, min, max); - - assertGe(result, min); - assertLe(result, max); - assertEq(result, bound(result, min, max)); - if (num >= min && num <= max) assertEq(result, num); - } - - function testBoundIntInt256Max() public { - assertEq(bound(0, type(int256).max - 1, type(int256).max), type(int256).max - 1); - assertEq(bound(1, type(int256).max - 1, type(int256).max), type(int256).max); - } - - function testBoundIntInt256Min() public { - assertEq(bound(0, type(int256).min, type(int256).min + 1), type(int256).min); - assertEq(bound(1, type(int256).min, type(int256).min + 1), type(int256).min + 1); - } - - function testCannotBoundIntMaxLessThanMin() public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); - stdUtils.exposed_bound(-5, 100, 10); - } - - function testCannotBoundIntMaxLessThanMin(int256 num, int256 min, int256 max) public { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - vm.assume(min > max); - vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min.")); - stdUtils.exposed_bound(num, min, max); - } - - /*////////////////////////////////////////////////////////////////////////// - BOUND PRIVATE KEY - //////////////////////////////////////////////////////////////////////////*/ - - function testBoundPrivateKey() public { - assertEq(boundPrivateKey(0), 1); - assertEq(boundPrivateKey(1), 1); - assertEq(boundPrivateKey(300), 300); - assertEq(boundPrivateKey(9999), 9999); - assertEq(boundPrivateKey(SECP256K1_ORDER - 1), SECP256K1_ORDER - 1); - assertEq(boundPrivateKey(SECP256K1_ORDER), 1); - assertEq(boundPrivateKey(SECP256K1_ORDER + 1), 2); - assertEq(boundPrivateKey(UINT256_MAX), UINT256_MAX & SECP256K1_ORDER - 1); // x&y is equivalent to x-x%y - } - - /*////////////////////////////////////////////////////////////////////////// - BYTES TO UINT - //////////////////////////////////////////////////////////////////////////*/ - - function testBytesToUint() external { - bytes memory maxUint = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; - bytes memory two = hex"02"; - bytes memory millionEther = hex"d3c21bcecceda1000000"; - - assertEq(bytesToUint(maxUint), type(uint256).max); - assertEq(bytesToUint(two), 2); - assertEq(bytesToUint(millionEther), 1_000_000 ether); - } - - function testCannotConvertGT32Bytes() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - bytes memory thirty3Bytes = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; - vm.expectRevert("StdUtils bytesToUint(bytes): Bytes length exceeds 32."); - stdUtils.exposed_bytesToUint(thirty3Bytes); - } - - /*////////////////////////////////////////////////////////////////////////// - COMPUTE CREATE ADDRESS - //////////////////////////////////////////////////////////////////////////*/ - - function testComputeCreateAddress() external { - address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; - uint256 nonce = 14; - address createAddress = computeCreateAddress(deployer, nonce); - assertEq(createAddress, 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); - } - - /*////////////////////////////////////////////////////////////////////////// - COMPUTE CREATE2 ADDRESS - //////////////////////////////////////////////////////////////////////////*/ - - function testComputeCreate2Address() external { - bytes32 salt = bytes32(uint256(31415)); - bytes32 initcodeHash = keccak256(abi.encode(0x6080)); - address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9; - address create2Address = computeCreate2Address(salt, initcodeHash, deployer); - assertEq(create2Address, 0xB147a5d25748fda14b463EB04B111027C290f4d3); - } - - function testComputeCreate2AddressWithDefaultDeployer() external { - bytes32 salt = 0xc290c670fde54e5ef686f9132cbc8711e76a98f0333a438a92daa442c71403c0; - bytes32 initcodeHash = hashInitCode(hex"6080", ""); - assertEq(initcodeHash, 0x1a578b7a4b0b5755db6d121b4118d4bc68fe170dca840c59bc922f14175a76b0); - address create2Address = computeCreate2Address(salt, initcodeHash); - assertEq(create2Address, 0xc0ffEe2198a06235aAbFffe5Db0CacF1717f5Ac6); - } -} - -contract StdUtilsForkTest is Test { - /*////////////////////////////////////////////////////////////////////////// - GET TOKEN BALANCES - //////////////////////////////////////////////////////////////////////////*/ - - address internal SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE; - address internal SHIB_HOLDER_0 = 0x855F5981e831D83e6A4b4EBFCAdAa68D92333170; - address internal SHIB_HOLDER_1 = 0x8F509A90c2e47779cA408Fe00d7A72e359229AdA; - address internal SHIB_HOLDER_2 = 0x0e3bbc0D04fF62211F71f3e4C45d82ad76224385; - - address internal USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; - address internal USDC_HOLDER_0 = 0xDa9CE944a37d218c3302F6B82a094844C6ECEb17; - address internal USDC_HOLDER_1 = 0x3e67F4721E6d1c41a015f645eFa37BEd854fcf52; - - function setUp() public { - // All tests of the `getTokenBalances` method are fork tests using live contracts. - vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900}); - } - - function testCannotGetTokenBalances_NonTokenContract() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - // The UniswapV2Factory contract has neither a `balanceOf` function nor a fallback function, - // so the `balanceOf` call should revert. - address token = address(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); - address[] memory addresses = new address[](1); - addresses[0] = USDC_HOLDER_0; - - vm.expectRevert("Multicall3: call failed"); - stdUtils.exposed_getTokenBalances(token, addresses); - } - - function testCannotGetTokenBalances_EOA() external { - // We deploy a mock version so we can properly test the revert. - StdUtilsMock stdUtils = new StdUtilsMock(); - - address eoa = vm.addr({privateKey: 1}); - address[] memory addresses = new address[](1); - addresses[0] = USDC_HOLDER_0; - vm.expectRevert("StdUtils getTokenBalances(address,address[]): Token address is not a contract."); - stdUtils.exposed_getTokenBalances(eoa, addresses); - } - - function testGetTokenBalances_Empty() external { - address[] memory addresses = new address[](0); - uint256[] memory balances = getTokenBalances(USDC, addresses); - assertEq(balances.length, 0); - } - - function testGetTokenBalances_USDC() external { - address[] memory addresses = new address[](2); - addresses[0] = USDC_HOLDER_0; - addresses[1] = USDC_HOLDER_1; - uint256[] memory balances = getTokenBalances(USDC, addresses); - assertEq(balances[0], 159_000_000_000_000); - assertEq(balances[1], 131_350_000_000_000); - } - - function testGetTokenBalances_SHIB() external { - address[] memory addresses = new address[](3); - addresses[0] = SHIB_HOLDER_0; - addresses[1] = SHIB_HOLDER_1; - addresses[2] = SHIB_HOLDER_2; - uint256[] memory balances = getTokenBalances(SHIB, addresses); - assertEq(balances[0], 3_323_256_285_484.42e18); - assertEq(balances[1], 1_271_702_771_149.99999928e18); - assertEq(balances[2], 606_357_106_247e18); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationScript.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationScript.sol deleted file mode 100644 index e205cfff3c..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationScript.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Script.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationScript is Script {} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationScriptBase.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationScriptBase.sol deleted file mode 100644 index ce8e0e9545..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationScriptBase.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Script.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationScriptBase is ScriptBase {} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationTest.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationTest.sol deleted file mode 100644 index 9beeafeb7d..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationTest.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Test.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationTest is Test {} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationTestBase.sol b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationTestBase.sol deleted file mode 100644 index e993535bc0..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/compilation/CompilationTestBase.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.6.2 <0.9.0; - -pragma experimental ABIEncoderV2; - -import "../../src/Test.sol"; - -// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing -// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 -contract CompilationTestBase is TestBase {} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/fixtures/broadcast.log.json b/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/fixtures/broadcast.log.json deleted file mode 100644 index 0a0200bca9..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/forge-std/test/fixtures/broadcast.log.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "transactions": [ - { - "hash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": "multiple_arguments(uint256,address,uint256[]):(uint256)", - "arguments": ["1", "0000000000000000000000000000000000001337", "[3,4]"], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "gas": "0x73b9", - "value": "0x0", - "data": "0x23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004", - "nonce": "0x3", - "accessList": [] - } - }, - { - "hash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "function": "inc():(uint256)", - "arguments": [], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "gas": "0xdcb2", - "value": "0x0", - "data": "0x371303c0", - "nonce": "0x4", - "accessList": [] - } - }, - { - "hash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "type": "CALL", - "contractName": "Test", - "contractAddress": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "function": "t(uint256):(uint256)", - "arguments": ["1"], - "tx": { - "type": "0x02", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "gas": "0x8599", - "value": "0x0", - "data": "0xafe29f710000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x5", - "accessList": [] - } - } - ], - "receipts": [ - { - "transactionHash": "0x481dc86e40bba90403c76f8e144aa9ff04c1da2164299d0298573835f0991181", - "transactionIndex": "0x0", - "blockHash": "0xef0730448490304e5403be0fa8f8ce64f118e9adcca60c07a2ae1ab921d748af", - "blockNumber": "0x1", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "cumulativeGasUsed": "0x13f3a", - "gasUsed": "0x13f3a", - "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x6a187183545b8a9e7f1790e847139379bf5622baff2cb43acf3f5c79470af782", - "transactionIndex": "0x0", - "blockHash": "0xf3acb96a90071640c2a8c067ae4e16aad87e634ea8d8bbbb5b352fba86ba0148", - "blockNumber": "0x2", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "cumulativeGasUsed": "0x45d80", - "gasUsed": "0x45d80", - "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x064ad173b4867bdef2fb60060bbdaf01735fbf10414541ea857772974e74ea9d", - "transactionIndex": "0x0", - "blockHash": "0x8373d02109d3ee06a0225f23da4c161c656ccc48fe0fcee931d325508ae73e58", - "blockNumber": "0x3", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "cumulativeGasUsed": "0x45feb", - "gasUsed": "0x45feb", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f", - "transactionIndex": "0x0", - "blockHash": "0x16712fae5c0e18f75045f84363fb6b4d9a9fe25e660c4ce286833a533c97f629", - "blockNumber": "0x4", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "cumulativeGasUsed": "0x5905", - "gasUsed": "0x5905", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298", - "transactionIndex": "0x0", - "blockHash": "0x156b88c3eb9a1244ba00a1834f3f70de735b39e3e59006dd03af4fe7d5480c11", - "blockNumber": "0x5", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "cumulativeGasUsed": "0xa9c4", - "gasUsed": "0xa9c4", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "transactionIndex": "0x0", - "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", - "blockNumber": "0x6", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "cumulativeGasUsed": "0x66c5", - "gasUsed": "0x66c5", - "contractAddress": null, - "logs": [ - { - "address": "0x7c6b4bbe207d642d98d5c537142d85209e585087", - "topics": [ - "0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000046865726500000000000000000000000000000000000000000000000000000000", - "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb", - "blockNumber": "0x6", - "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c", - "transactionIndex": "0x1", - "logIndex": "0x0", - "transactionLogIndex": "0x0", - "removed": false - } - ], - "status": "0x1", - "logsBloom": "0x00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100", - "effectiveGasPrice": "0xee6b2800" - }, - { - "transactionHash": "0x11fbb10230c168ca1e36a7e5c69a6dbcd04fd9e64ede39d10a83e36ee8065c16", - "transactionIndex": "0x0", - "blockHash": "0xf1e0ed2eda4e923626ec74621006ed50b3fc27580dc7b4cf68a07ca77420e29c", - "blockNumber": "0x7", - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x0000000000000000000000000000000000001337", - "cumulativeGasUsed": "0x5208", - "gasUsed": "0x5208", - "contractAddress": null, - "logs": [], - "status": "0x1", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "effectiveGasPrice": "0xee6b2800" - } - ], - "libraries": [ - "src/Broadcast.t.sol:F:0x5fbdb2315678afecb367f032d93f642f64180aa3" - ], - "pending": [], - "path": "broadcast/Broadcast.t.sol/31337/run-latest.json", - "returns": {}, - "timestamp": 1655140035 -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/binary_check.sh b/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/binary_check.sh deleted file mode 100644 index 725a058b50..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/binary_check.sh +++ /dev/null @@ -1,11 +0,0 @@ -#! /bin/bash - -if ! [[ "$(npm list -g huffc)" =~ "empty" ]]; then - # huffc was installed via npm, return 0x00 - echo -n 0x00 -elif [[ "$(yarn global list)" =~ "huffc" ]]; then - # huffc was installed via yarn, return 0x00 - echo -n 0x00 -else - echo -n 0x01 -fi diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/file_writer.sh b/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/file_writer.sh deleted file mode 100644 index 93e3a8d325..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/file_writer.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/bash - -echo "$2" > $1 diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/rand_bytes.sh b/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/rand_bytes.sh deleted file mode 100644 index fdd9921067..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/rand_bytes.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/bash - -echo -n $(hexdump -n 16 -v -e '"0x" 32/1 "%02x" "\n"' /dev/urandom) \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/read_and_append.sh b/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/read_and_append.sh deleted file mode 100644 index a14336571e..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/foundry-huff/scripts/read_and_append.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/bash - -cat $2 >> $1 diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.gitattributes b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.gitattributes deleted file mode 100644 index 52031de51c..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.sol linguist-language=Solidity diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.github/workflows/ci.yml b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.github/workflows/ci.yml deleted file mode 100644 index 2f339b2761..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.github/workflows/ci.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: "CI" -on: "push" -jobs: - tests: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2.3.4 - - uses: cachix/install-nix-action@v13 - - name: Install dapp - run: nix-env -iA dapp -f $(curl -sS https://api.github.com/repos/dapphub/dapptools/releases/latest | jq -r .tarball_url) - - name: Fetch submodules - run: git submodule update --init - - name: Run tests - run: make test diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.gitmodules b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.gitmodules deleted file mode 100644 index e12471968b..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "lib/ds-test"] - path = lib/ds-test - url = https://github.com/dapphub/ds-test diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/LICENSE b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/LICENSE deleted file mode 100644 index 769c240957..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 Nick Johnson - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/Makefile b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/Makefile deleted file mode 100644 index 31975ee253..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -all :; dapp build -clean :; dapp clean -test :; dapp test -deploy :; dapp create SolidityStringutils diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/README b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/README deleted file mode 100644 index ad344af7eb..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/README +++ /dev/null @@ -1 +0,0 @@ -Basic string utilities for Solidity, optimized for low gas usage. diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/README.md b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/README.md deleted file mode 100644 index 458634147f..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/README.md +++ /dev/null @@ -1,357 +0,0 @@ - -# String & slice utility library for Solidity -## Overview -Functionality in this library is largely implemented using an abstraction called a 'slice'. A slice represents a part of a string - anything from the entire string to a single character, or even no characters at all (a 0-length slice). Since a slice only has to specify an offset and a length, copying and manipulating slices is a lot less expensive than copying and manipulating the strings they reference. - -To further reduce gas costs, most functions on slice that need to return a slice modify the original one instead of allocating a new one; for instance, `s.split(".")` will return the text up to the first '.', modifying s to only contain the remainder of the string after the '.'. In situations where you do not want to modify the original slice, you can make a copy first with `.copy()`, for example: `s.copy().split(".")`. Try and avoid using this idiom in loops; since Solidity has no memory management, it will result in allocating many short-lived slices that are later discarded. - -Functions that return two slices come in two versions: a non-allocating version that takes the second slice as an argument, modifying it in place, and an allocating version that allocates and returns the second slice; see `nextRune` for example. - -Functions that have to copy string data will return strings rather than slices; these can be cast back to slices for further processing if required. - -## Examples -### Basic usage - import "github.com/Arachnid/solidity-stringutils/strings.sol"; - - contract Contract { - using strings for *; - - // ... - } - -### Getting the character length of a string - var len = "Unicode snowman ☃".toSlice().len(); // 17 - -### Splitting a string around a delimiter - var s = "foo bar baz".toSlice(); - var foo = s.split(" ".toSlice()); - -After the above code executes, `s` is now "bar baz", and `foo` is now "foo". - -### Splitting a string into an array - var s = "www.google.com".toSlice(); - var delim = ".".toSlice(); - var parts = new string[](s.count(delim) + 1); - for(uint i = 0; i < parts.length; i++) { - parts[i] = s.split(delim).toString(); - } - -### Extracting the middle part of a string - var s = "www.google.com".toSlice(); - strings.slice memory part; - s.split(".".toSlice(), part); // part and return value is "www" - s.split(".".toSlice(), part); // part and return value is "google" - -This approach uses less memory than the above, by reusing the slice `part` for each section of string extracted. - -### Converting a slice back to a string - var myString = mySlice.toString(); - -### Finding and returning the first occurrence of a substring - var s = "A B C B D".toSlice(); - s.find("B".toSlice()); // "B C B D" - -`find` modifies `s` to contain the part of the string from the first match onwards. - -### Finding and returning the last occurrence of a substring - var s = "A B C B D".toSlice(); - s.rfind("B".toSlice()); // "A B C B" - -`rfind` modifies `s` to contain the part of the string from the last match back to the start. - -### Finding without modifying the original slice. - var s = "A B C B D".toSlice(); - var substring = s.copy().rfind("B".toSlice()); // "A B C B" - -`copy` lets you cheaply duplicate a slice so you don't modify the original. - -### Prefix and suffix matching - var s = "A B C B D".toSlice(); - s.startsWith("A".toSlice()); // True - s.endsWith("D".toSlice()); // True - s.startsWith("B".toSlice()); // False - -### Removing a prefix or suffix - var s = "A B C B D".toSlice(); - s.beyond("A ".toSlice()).until(" D".toSlice()); // "B C B" - -`beyond` modifies `s` to contain the text after its argument; `until` modifies `s` to contain the text up to its argument. If the argument isn't found, `s` is unmodified. - -### Finding and returning the string up to the first match - var s = "A B C B D".toSlice(); - var needle = "B".toSlice(); - var substring = s.until(s.copy().find(needle).beyond(needle)); - -Calling `find` on a copy of `s` returns the part of the string from `needle` onwards; calling `.beyond(needle)` removes `needle` as a prefix, and finally calling `s.until()` removes the entire end of the string, leaving everything up to and including the first match. - -### Concatenating strings - var s = "abc".toSlice().concat("def".toSlice()); // "abcdef" - -## Reference - -### toSlice(string self) internal returns (slice) -Returns a slice containing the entire string. - -Arguments: - - - self The string to make a slice from. - -Returns A newly allocated slice containing the entire string. - -### copy(slice self) internal returns (slice) -Returns a new slice containing the same data as the current slice. - -Arguments: - - - self The slice to copy. - -Returns A new slice containing the same data as `self`. - -### toString(slice self) internal returns (string) - -Copies a slice to a new string. - -Arguments: - - - self The slice to copy. - -Returns A newly allocated string containing the slice's text. - -### len(slice self) internal returns (uint) - -Returns the length in runes of the slice. Note that this operation takes time proportional to the length of the slice; avoid using it in loops, and call `slice.empty()` if you only need to know whether the slice is empty or not. - -Arguments: - - - self The slice to operate on. - -Returns The length of the slice in runes. - -### empty(slice self) internal returns (bool) - -Returns true if the slice is empty (has a length of 0). - -Arguments: - - - self The slice to operate on. - -Returns True if the slice is empty, False otherwise. - -### compare(slice self, slice other) internal returns (int) - -Returns a positive number if `other` comes lexicographically after `self`, a negative number if it comes before, or zero if the contents of the two slices are equal. Comparison is done per-rune, on unicode codepoints. - -Arguments: - - - self The first slice to compare. - - other The second slice to compare. - -Returns The result of the comparison. - -### equals(slice self, slice other) internal returns (bool) - -Returns true if the two slices contain the same text. - -Arguments: - - - self The first slice to compare. - - self The second slice to compare. - -Returns True if the slices are equal, false otherwise. - -### nextRune(slice self, slice rune) internal returns (slice) - -Extracts the first rune in the slice into `rune`, advancing the slice to point to the next rune and returning `self`. - -Arguments: - - - self The slice to operate on. - - rune The slice that will contain the first rune. - -Returns `rune`. - -### nextRune(slice self) internal returns (slice ret) - -Returns the first rune in the slice, advancing the slice to point to the next rune. - -Arguments: - - - self The slice to operate on. - -Returns A slice containing only the first rune from `self`. - -### ord(slice self) internal returns (uint ret) - -Returns the number of the first codepoint in the slice. - -Arguments: - - - self The slice to operate on. - -Returns The number of the first codepoint in the slice. - -### keccak(slice self) internal returns (bytes32 ret) - -Returns the keccak-256 hash of the slice. - -Arguments: - - - self The slice to hash. - -Returns The hash of the slice. - -### startsWith(slice self, slice needle) internal returns (bool) - -Returns true if `self` starts with `needle`. - -Arguments: - - - self The slice to operate on. - - needle The slice to search for. - -Returns True if the slice starts with the provided text, false otherwise. - -### beyond(slice self, slice needle) internal returns (slice) - -If `self` starts with `needle`, `needle` is removed from the beginning of `self`. Otherwise, `self` is unmodified. - -Arguments: - - - self The slice to operate on. - - needle The slice to search for. - -Returns `self` - -### endsWith(slice self, slice needle) internal returns (bool) - -Returns true if the slice ends with `needle`. - -Arguments: - - - self The slice to operate on. - - needle The slice to search for. - -Returns True if the slice starts with the provided text, false otherwise. - -### until(slice self, slice needle) internal returns (slice) - -If `self` ends with `needle`, `needle` is removed from the end of `self`. Otherwise, `self` is unmodified. - -Arguments: - - - self The slice to operate on. - - needle The slice to search for. - -Returns `self` - -### find(slice self, slice needle) internal returns (slice) - -Modifies `self` to contain everything from the first occurrence of `needle` to the end of the slice. `self` is set to the empty slice if `needle` is not found. - -Arguments: - - - self The slice to search and modify. - - needle The text to search for. - -Returns `self`. - -### rfind(slice self, slice needle) internal returns (slice) - -Modifies `self` to contain the part of the string from the start of `self` to the end of the first occurrence of `needle`. If `needle` is not found, `self` is set to the empty slice. - -Arguments: - - - self The slice to search and modify. - - needle The text to search for. - -Returns `self`. - -### split(slice self, slice needle, slice token) internal returns (slice) - -Splits the slice, setting `self` to everything after the first occurrence of `needle`, and `token` to everything before it. If `needle` does not occur in `self`, `self` is set to the empty slice, and `token` is set to the entirety of `self`. - -Arguments: - - - self The slice to split. - - needle The text to search for in `self`. - - token An output parameter to which the first token is written. - -Returns `token`. - -### split(slice self, slice needle) internal returns (slice token) - -Splits the slice, setting `self` to everything after the first occurrence of `needle`, and returning everything before it. If `needle` does not occur in `self`, `self` is set to the empty slice, and the entirety of `self` is returned. - -Arguments: - - - self The slice to split. - - needle The text to search for in `self`. - -Returns The part of `self` up to the first occurrence of `delim`. - -### rsplit(slice self, slice needle, slice token) internal returns (slice) - -Splits the slice, setting `self` to everything before the last occurrence of `needle`, and `token` to everything after it. If `needle` does not occur in `self`, `self` is set to the empty slice, and `token` is set to the entirety of `self`. - -Arguments: - - - self The slice to split. - - needle The text to search for in `self`. - - token An output parameter to which the first token is written. - -Returns `token`. - -### rsplit(slice self, slice needle) internal returns (slice token) - -Splits the slice, setting `self` to everything before the last occurrence of `needle`, and returning everything after it. If `needle` does not occur in `self`, `self` is set to the empty slice, and the entirety of `self` is returned. - -Arguments: - - - self The slice to split. - - needle The text to search for in `self`. - -Returns The part of `self` after the last occurrence of `delim`. - -### count(slice self, slice needle) internal returns (uint count) - -Counts the number of nonoverlapping occurrences of `needle` in `self`. - -Arguments: - - - self The slice to search. - - needle The text to search for in `self`. - -Returns The number of occurrences of `needle` found in `self`. - -### contains(slice self, slice needle) internal returns (bool) - -Returns True if `self` contains `needle`. - -Arguments: - - - self The slice to search. - - needle The text to search for in `self`. - -Returns True if `needle` is found in `self`, false otherwise. - -### concat(slice self, slice other) internal returns (string) - -Returns a newly allocated string containing the concatenation of `self` and `other`. - -Arguments: - - - self The first slice to concatenate. - - other The second slice to concatenate. - -Returns The concatenation of the two strings. - -### join(slice self, slice[] parts) internal returns (string) - -Joins an array of slices, using `self` as a delimiter, returning a newly allocated string. - -Arguments: - - - self The delimiter to use. - - parts A list of slices to join. - -Returns A newly allocated string containing all the slices in `parts`, joined with `self`. diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/dappfile b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/dappfile deleted file mode 100644 index 8772d97710..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/dappfile +++ /dev/null @@ -1,8 +0,0 @@ -version: 2.0.0 -tags: [] -layout: - sol_sources: . - build_dir: build -dependencies: {} -ignore: [] -name: ethereum-stringutils diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/LICENSE b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/LICENSE deleted file mode 100644 index 94a9ed024d..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/Makefile b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/Makefile deleted file mode 100644 index 661dac4868..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -all:; dapp build - -test: - -dapp --use solc:0.4.23 build - -dapp --use solc:0.4.26 build - -dapp --use solc:0.5.17 build - -dapp --use solc:0.6.12 build - -dapp --use solc:0.7.5 build - -demo: - DAPP_SRC=demo dapp --use solc:0.7.5 build - -hevm dapp-test --verbose 3 - -.PHONY: test demo diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/default.nix b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/default.nix deleted file mode 100644 index cf65419ab4..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ solidityPackage, dappsys }: solidityPackage { - name = "ds-test"; - src = ./src; -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/demo/demo.sol b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/demo/demo.sol deleted file mode 100644 index d3a7d81fca..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/demo/demo.sol +++ /dev/null @@ -1,223 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity >=0.4.23; - -import "../src/test.sol"; - -contract DemoTest is DSTest { - function test_this() public pure { - require(true); - } - function test_logs() public { - emit log("-- log(string)"); - emit log("a string"); - - emit log("-- log_named_uint(string, uint)"); - log_named_uint("uint", 512); - - emit log("-- log_named_int(string, int)"); - log_named_int("int", -512); - - emit log("-- log_named_address(string, address)"); - log_named_address("address", address(this)); - - emit log("-- log_named_bytes32(string, bytes32)"); - log_named_bytes32("bytes32", "a string"); - - emit log("-- log_named_bytes(string, bytes)"); - log_named_bytes("bytes", hex"cafefe"); - - emit log("-- log_named_string(string, string)"); - log_named_string("string", "a string"); - - emit log("-- log_named_decimal_uint(string, uint, uint)"); - log_named_decimal_uint("decimal uint", 1.0e18, 18); - - emit log("-- log_named_decimal_int(string, int, uint)"); - log_named_decimal_int("decimal int", -1.0e18, 18); - } - event log_old_named_uint(bytes32,uint); - function test_old_logs() public { - log_old_named_uint("key", 500); - log_named_bytes32("bkey", "val"); - } - function test_trace() public view { - this.echo("string 1", "string 2"); - } - function test_multiline() public { - emit log("a multiline\\n" "string"); - emit log("a multiline " "string"); - log_bytes("a string"); - log_bytes("a multiline\n" "string"); - log_bytes("a multiline\\n" "string"); - emit log(unicode"Ώ"); - logs(hex"0000"); - log_named_bytes("0x0000", hex"0000"); - logs(hex"ff"); - } - function echo(string memory s1, string memory s2) public pure - returns (string memory, string memory) - { - return (s1, s2); - } - - function prove_this(uint x) public { - log_named_uint("sym x", x); - assertGt(x + 1, 0); - } - - function test_logn() public { - assembly { - log0(0x01, 0x02) - log1(0x01, 0x02, 0x03) - log2(0x01, 0x02, 0x03, 0x04) - log3(0x01, 0x02, 0x03, 0x04, 0x05) - } - } - - event MyEvent(uint, uint indexed, uint, uint indexed); - function test_events() public { - emit MyEvent(1, 2, 3, 4); - } - - function test_asserts() public { - string memory err = "this test has failed!"; - emit log("## assertTrue(bool)\n"); - assertTrue(false); - emit log("\n"); - assertTrue(false, err); - - emit log("\n## assertEq(address,address)\n"); - assertEq(address(this), msg.sender); - emit log("\n"); - assertEq(address(this), msg.sender, err); - - emit log("\n## assertEq32(bytes32,bytes32)\n"); - assertEq32("bytes 1", "bytes 2"); - emit log("\n"); - assertEq32("bytes 1", "bytes 2", err); - - emit log("\n## assertEq(bytes32,bytes32)\n"); - assertEq32("bytes 1", "bytes 2"); - emit log("\n"); - assertEq32("bytes 1", "bytes 2", err); - - emit log("\n## assertEq(uint,uint)\n"); - assertEq(uint(0), 1); - emit log("\n"); - assertEq(uint(0), 1, err); - - emit log("\n## assertEq(int,int)\n"); - assertEq(-1, -2); - emit log("\n"); - assertEq(-1, -2, err); - - emit log("\n## assertEqDecimal(int,int,uint)\n"); - assertEqDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertEqDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertEqDecimal(uint,uint,uint)\n"); - assertEqDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertEqDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertGt(uint,uint)\n"); - assertGt(uint(0), 0); - emit log("\n"); - assertGt(uint(0), 0, err); - - emit log("\n## assertGt(int,int)\n"); - assertGt(-1, -1); - emit log("\n"); - assertGt(-1, -1, err); - - emit log("\n## assertGtDecimal(int,int,uint)\n"); - assertGtDecimal(-2.0e18, -1.1e18, 18); - emit log("\n"); - assertGtDecimal(-2.0e18, -1.1e18, 18, err); - - emit log("\n## assertGtDecimal(uint,uint,uint)\n"); - assertGtDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertGtDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertGe(uint,uint)\n"); - assertGe(uint(0), 1); - emit log("\n"); - assertGe(uint(0), 1, err); - - emit log("\n## assertGe(int,int)\n"); - assertGe(-1, 0); - emit log("\n"); - assertGe(-1, 0, err); - - emit log("\n## assertGeDecimal(int,int,uint)\n"); - assertGeDecimal(-2.0e18, -1.1e18, 18); - emit log("\n"); - assertGeDecimal(-2.0e18, -1.1e18, 18, err); - - emit log("\n## assertGeDecimal(uint,uint,uint)\n"); - assertGeDecimal(uint(1.0e18), 1.1e18, 18); - emit log("\n"); - assertGeDecimal(uint(1.0e18), 1.1e18, 18, err); - - emit log("\n## assertLt(uint,uint)\n"); - assertLt(uint(0), 0); - emit log("\n"); - assertLt(uint(0), 0, err); - - emit log("\n## assertLt(int,int)\n"); - assertLt(-1, -1); - emit log("\n"); - assertLt(-1, -1, err); - - emit log("\n## assertLtDecimal(int,int,uint)\n"); - assertLtDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertLtDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertLtDecimal(uint,uint,uint)\n"); - assertLtDecimal(uint(2.0e18), 1.1e18, 18); - emit log("\n"); - assertLtDecimal(uint(2.0e18), 1.1e18, 18, err); - - emit log("\n## assertLe(uint,uint)\n"); - assertLe(uint(1), 0); - emit log("\n"); - assertLe(uint(1), 0, err); - - emit log("\n## assertLe(int,int)\n"); - assertLe(0, -1); - emit log("\n"); - assertLe(0, -1, err); - - emit log("\n## assertLeDecimal(int,int,uint)\n"); - assertLeDecimal(-1.0e18, -1.1e18, 18); - emit log("\n"); - assertLeDecimal(-1.0e18, -1.1e18, 18, err); - - emit log("\n## assertLeDecimal(uint,uint,uint)\n"); - assertLeDecimal(uint(2.0e18), 1.1e18, 18); - emit log("\n"); - assertLeDecimal(uint(2.0e18), 1.1e18, 18, err); - - emit log("\n## assertEq(string,string)\n"); - string memory s1 = "string 1"; - string memory s2 = "string 2"; - assertEq(s1, s2); - emit log("\n"); - assertEq(s1, s2, err); - - emit log("\n## assertEq0(bytes,bytes)\n"); - assertEq0(hex"abcdef01", hex"abcdef02"); - log("\n"); - assertEq0(hex"abcdef01", hex"abcdef02", err); - } -} - -contract DemoTestWithSetUp { - function setUp() public { - } - function test_pass() public pure { - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/src/test.sol b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/src/test.sol deleted file mode 100644 index 96d3c15434..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/lib/ds-test/src/test.sol +++ /dev/null @@ -1,434 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -pragma solidity >=0.4.23; - -contract DSTest { - event log (string); - event logs (bytes); - - event log_address (address); - event log_bytes32 (bytes32); - event log_int (int); - event log_uint (uint); - event log_bytes (bytes); - event log_string (string); - - event log_named_address (string key, address val); - event log_named_bytes32 (string key, bytes32 val); - event log_named_decimal_int (string key, int val, uint decimals); - event log_named_decimal_uint (string key, uint val, uint decimals); - event log_named_int (string key, int val); - event log_named_uint (string key, uint val); - event log_named_bytes (string key, bytes val); - event log_named_string (string key, string val); - - bool public IS_TEST = true; - bool public failed; - - address constant HEVM_ADDRESS = - address(bytes20(uint160(uint256(keccak256('hevm cheat code'))))); - - modifier mayRevert() { _; } - modifier testopts(string memory) { _; } - - function fail() internal { - failed = true; - } - - modifier logs_gas() { - uint startGas = gasleft(); - _; - uint endGas = gasleft(); - emit log_named_uint("gas", startGas - endGas); - } - - function assertTrue(bool condition) internal { - if (!condition) { - emit log("Error: Assertion Failed"); - fail(); - } - } - - function assertTrue(bool condition, string memory err) internal { - if (!condition) { - emit log_named_string("Error", err); - assertTrue(condition); - } - } - - function assertEq(address a, address b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [address]"); - emit log_named_address(" Expected", b); - emit log_named_address(" Actual", a); - fail(); - } - } - function assertEq(address a, address b, string memory err) internal { - if (a != b) { - emit log_named_string ("Error", err); - assertEq(a, b); - } - } - - function assertEq(bytes32 a, bytes32 b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [bytes32]"); - emit log_named_bytes32(" Expected", b); - emit log_named_bytes32(" Actual", a); - fail(); - } - } - function assertEq(bytes32 a, bytes32 b, string memory err) internal { - if (a != b) { - emit log_named_string ("Error", err); - assertEq(a, b); - } - } - function assertEq32(bytes32 a, bytes32 b) internal { - assertEq(a, b); - } - function assertEq32(bytes32 a, bytes32 b, string memory err) internal { - assertEq(a, b, err); - } - - function assertEq(int a, int b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [int]"); - emit log_named_int(" Expected", b); - emit log_named_int(" Actual", a); - fail(); - } - } - function assertEq(int a, int b, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - function assertEq(uint a, uint b) internal { - if (a != b) { - emit log("Error: a == b not satisfied [uint]"); - emit log_named_uint(" Expected", b); - emit log_named_uint(" Actual", a); - fail(); - } - } - function assertEq(uint a, uint b, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - function assertEqDecimal(int a, int b, uint decimals) internal { - if (a != b) { - emit log("Error: a == b not satisfied [decimal int]"); - emit log_named_decimal_int(" Expected", b, decimals); - emit log_named_decimal_int(" Actual", a, decimals); - fail(); - } - } - function assertEqDecimal(int a, int b, uint decimals, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEqDecimal(a, b, decimals); - } - } - function assertEqDecimal(uint a, uint b, uint decimals) internal { - if (a != b) { - emit log("Error: a == b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Expected", b, decimals); - emit log_named_decimal_uint(" Actual", a, decimals); - fail(); - } - } - function assertEqDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a != b) { - emit log_named_string("Error", err); - assertEqDecimal(a, b, decimals); - } - } - - function assertGt(uint a, uint b) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertGt(uint a, uint b, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGt(a, b); - } - } - function assertGt(int a, int b) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertGt(int a, int b, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGt(a, b); - } - } - function assertGtDecimal(int a, int b, uint decimals) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertGtDecimal(int a, int b, uint decimals, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGtDecimal(a, b, decimals); - } - } - function assertGtDecimal(uint a, uint b, uint decimals) internal { - if (a <= b) { - emit log("Error: a > b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertGtDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a <= b) { - emit log_named_string("Error", err); - assertGtDecimal(a, b, decimals); - } - } - - function assertGe(uint a, uint b) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertGe(uint a, uint b, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGe(a, b); - } - } - function assertGe(int a, int b) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertGe(int a, int b, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGe(a, b); - } - } - function assertGeDecimal(int a, int b, uint decimals) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertGeDecimal(int a, int b, uint decimals, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGeDecimal(a, b, decimals); - } - } - function assertGeDecimal(uint a, uint b, uint decimals) internal { - if (a < b) { - emit log("Error: a >= b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertGeDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a < b) { - emit log_named_string("Error", err); - assertGeDecimal(a, b, decimals); - } - } - - function assertLt(uint a, uint b) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertLt(uint a, uint b, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLt(a, b); - } - } - function assertLt(int a, int b) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertLt(int a, int b, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLt(a, b); - } - } - function assertLtDecimal(int a, int b, uint decimals) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertLtDecimal(int a, int b, uint decimals, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLtDecimal(a, b, decimals); - } - } - function assertLtDecimal(uint a, uint b, uint decimals) internal { - if (a >= b) { - emit log("Error: a < b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertLtDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a >= b) { - emit log_named_string("Error", err); - assertLtDecimal(a, b, decimals); - } - } - - function assertLe(uint a, uint b) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [uint]"); - emit log_named_uint(" Value a", a); - emit log_named_uint(" Value b", b); - fail(); - } - } - function assertLe(uint a, uint b, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLe(a, b); - } - } - function assertLe(int a, int b) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [int]"); - emit log_named_int(" Value a", a); - emit log_named_int(" Value b", b); - fail(); - } - } - function assertLe(int a, int b, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLe(a, b); - } - } - function assertLeDecimal(int a, int b, uint decimals) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [decimal int]"); - emit log_named_decimal_int(" Value a", a, decimals); - emit log_named_decimal_int(" Value b", b, decimals); - fail(); - } - } - function assertLeDecimal(int a, int b, uint decimals, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertLeDecimal(a, b, decimals); - } - } - function assertLeDecimal(uint a, uint b, uint decimals) internal { - if (a > b) { - emit log("Error: a <= b not satisfied [decimal uint]"); - emit log_named_decimal_uint(" Value a", a, decimals); - emit log_named_decimal_uint(" Value b", b, decimals); - fail(); - } - } - function assertLeDecimal(uint a, uint b, uint decimals, string memory err) internal { - if (a > b) { - emit log_named_string("Error", err); - assertGeDecimal(a, b, decimals); - } - } - - function assertEq(string memory a, string memory b) internal { - if (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))) { - emit log("Error: a == b not satisfied [string]"); - emit log_named_string(" Value a", a); - emit log_named_string(" Value b", b); - fail(); - } - } - function assertEq(string memory a, string memory b, string memory err) internal { - if (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))) { - emit log_named_string("Error", err); - assertEq(a, b); - } - } - - function checkEq0(bytes memory a, bytes memory b) internal pure returns (bool ok) { - ok = true; - if (a.length == b.length) { - for (uint i = 0; i < a.length; i++) { - if (a[i] != b[i]) { - ok = false; - } - } - } else { - ok = false; - } - } - function assertEq0(bytes memory a, bytes memory b) internal { - if (!checkEq0(a, b)) { - emit log("Error: a == b not satisfied [bytes]"); - emit log_named_bytes(" Expected", a); - emit log_named_bytes(" Actual", b); - fail(); - } - } - function assertEq0(bytes memory a, bytes memory b, string memory err) internal { - if (!checkEq0(a, b)) { - emit log_named_string("Error", err); - assertEq0(a, b); - } - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/src/strings.sol b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/src/strings.sol deleted file mode 100644 index c801990e8a..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/src/strings.sol +++ /dev/null @@ -1,727 +0,0 @@ -/* - * @title String & slice utility library for Solidity contracts. - * @author Nick Johnson - * - * @dev Functionality in this library is largely implemented using an - * abstraction called a 'slice'. A slice represents a part of a string - - * anything from the entire string to a single character, or even no - * characters at all (a 0-length slice). Since a slice only has to specify - * an offset and a length, copying and manipulating slices is a lot less - * expensive than copying and manipulating the strings they reference. - * - * To further reduce gas costs, most functions on slice that need to return - * a slice modify the original one instead of allocating a new one; for - * instance, `s.split(".")` will return the text up to the first '.', - * modifying s to only contain the remainder of the string after the '.'. - * In situations where you do not want to modify the original slice, you - * can make a copy first with `.copy()`, for example: - * `s.copy().split(".")`. Try and avoid using this idiom in loops; since - * Solidity has no memory management, it will result in allocating many - * short-lived slices that are later discarded. - * - * Functions that return two slices come in two versions: a non-allocating - * version that takes the second slice as an argument, modifying it in - * place, and an allocating version that allocates and returns the second - * slice; see `nextRune` for example. - * - * Functions that have to copy string data will return strings rather than - * slices; these can be cast back to slices for further processing if - * required. - * - * For convenience, some functions are provided with non-modifying - * variants that create a new slice and return both; for instance, - * `s.splitNew('.')` leaves s unmodified, and returns two values - * corresponding to the left and right parts of the string. - */ - -pragma solidity ^0.8.0; - -library strings { - struct slice { - uint _len; - uint _ptr; - } - - function memcpy(uint dest, uint src, uint length) private pure { - // Copy word-length chunks while possible - for(; length >= 32; length -= 32) { - assembly { - mstore(dest, mload(src)) - } - dest += 32; - src += 32; - } - - // Copy remaining bytes - uint mask = type(uint).max; - if (length > 0) { - mask = 256 ** (32 - length) - 1; - } - assembly { - let srcpart := and(mload(src), not(mask)) - let destpart := and(mload(dest), mask) - mstore(dest, or(destpart, srcpart)) - } - } - - /* - * @dev Returns a slice containing the entire string. - * @param self The string to make a slice from. - * @return A newly allocated slice containing the entire string. - */ - function toSlice(string memory self) internal pure returns (slice memory) { - uint ptr; - assembly { - ptr := add(self, 0x20) - } - return slice(bytes(self).length, ptr); - } - - /* - * @dev Returns the length of a null-terminated bytes32 string. - * @param self The value to find the length of. - * @return The length of the string, from 0 to 32. - */ - function len(bytes32 self) internal pure returns (uint) { - uint ret; - if (self == 0) - return 0; - if (uint(self) & type(uint128).max == 0) { - ret += 16; - self = bytes32(uint(self) / 0x100000000000000000000000000000000); - } - if (uint(self) & type(uint64).max == 0) { - ret += 8; - self = bytes32(uint(self) / 0x10000000000000000); - } - if (uint(self) & type(uint32).max == 0) { - ret += 4; - self = bytes32(uint(self) / 0x100000000); - } - if (uint(self) & type(uint16).max == 0) { - ret += 2; - self = bytes32(uint(self) / 0x10000); - } - if (uint(self) & type(uint8).max == 0) { - ret += 1; - } - return 32 - ret; - } - - /* - * @dev Returns a slice containing the entire bytes32, interpreted as a - * null-terminated utf-8 string. - * @param self The bytes32 value to convert to a slice. - * @return A new slice containing the value of the input argument up to the - * first null. - */ - function toSliceB32(bytes32 self) internal pure returns (slice memory ret) { - // Allocate space for `self` in memory, copy it there, and point ret at it - assembly { - let ptr := mload(0x40) - mstore(0x40, add(ptr, 0x20)) - mstore(ptr, self) - mstore(add(ret, 0x20), ptr) - } - ret._len = len(self); - } - - /* - * @dev Returns a new slice containing the same data as the current slice. - * @param self The slice to copy. - * @return A new slice containing the same data as `self`. - */ - function copy(slice memory self) internal pure returns (slice memory) { - return slice(self._len, self._ptr); - } - - /* - * @dev Copies a slice to a new string. - * @param self The slice to copy. - * @return A newly allocated string containing the slice's text. - */ - function toString(slice memory self) internal pure returns (string memory) { - string memory ret = new string(self._len); - uint retptr; - assembly { retptr := add(ret, 32) } - - memcpy(retptr, self._ptr, self._len); - return ret; - } - - /* - * @dev Returns the length in runes of the slice. Note that this operation - * takes time proportional to the length of the slice; avoid using it - * in loops, and call `slice.empty()` if you only need to know whether - * the slice is empty or not. - * @param self The slice to operate on. - * @return The length of the slice in runes. - */ - function len(slice memory self) internal pure returns (uint l) { - // Starting at ptr-31 means the LSB will be the byte we care about - uint ptr = self._ptr - 31; - uint end = ptr + self._len; - for (l = 0; ptr < end; l++) { - uint8 b; - assembly { b := and(mload(ptr), 0xFF) } - if (b < 0x80) { - ptr += 1; - } else if(b < 0xE0) { - ptr += 2; - } else if(b < 0xF0) { - ptr += 3; - } else if(b < 0xF8) { - ptr += 4; - } else if(b < 0xFC) { - ptr += 5; - } else { - ptr += 6; - } - } - } - - /* - * @dev Returns true if the slice is empty (has a length of 0). - * @param self The slice to operate on. - * @return True if the slice is empty, False otherwise. - */ - function empty(slice memory self) internal pure returns (bool) { - return self._len == 0; - } - - /* - * @dev Returns a positive number if `other` comes lexicographically after - * `self`, a negative number if it comes before, or zero if the - * contents of the two slices are equal. Comparison is done per-rune, - * on unicode codepoints. - * @param self The first slice to compare. - * @param other The second slice to compare. - * @return The result of the comparison. - */ - function compare(slice memory self, slice memory other) internal pure returns (int) { - uint shortest = self._len; - if (other._len < self._len) - shortest = other._len; - - uint selfptr = self._ptr; - uint otherptr = other._ptr; - for (uint idx = 0; idx < shortest; idx += 32) { - uint a; - uint b; - assembly { - a := mload(selfptr) - b := mload(otherptr) - } - if (a != b) { - // Mask out irrelevant bytes and check again - uint mask = type(uint).max; // 0xffff... - if(shortest < 32) { - mask = ~(2 ** (8 * (32 - shortest + idx)) - 1); - } - unchecked { - uint diff = (a & mask) - (b & mask); - if (diff != 0) - return int(diff); - } - } - selfptr += 32; - otherptr += 32; - } - return int(self._len) - int(other._len); - } - - /* - * @dev Returns true if the two slices contain the same text. - * @param self The first slice to compare. - * @param self The second slice to compare. - * @return True if the slices are equal, false otherwise. - */ - function equals(slice memory self, slice memory other) internal pure returns (bool) { - return compare(self, other) == 0; - } - - /* - * @dev Extracts the first rune in the slice into `rune`, advancing the - * slice to point to the next rune and returning `self`. - * @param self The slice to operate on. - * @param rune The slice that will contain the first rune. - * @return `rune`. - */ - function nextRune(slice memory self, slice memory rune) internal pure returns (slice memory) { - rune._ptr = self._ptr; - - if (self._len == 0) { - rune._len = 0; - return rune; - } - - uint l; - uint b; - // Load the first byte of the rune into the LSBs of b - assembly { b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF) } - if (b < 0x80) { - l = 1; - } else if(b < 0xE0) { - l = 2; - } else if(b < 0xF0) { - l = 3; - } else { - l = 4; - } - - // Check for truncated codepoints - if (l > self._len) { - rune._len = self._len; - self._ptr += self._len; - self._len = 0; - return rune; - } - - self._ptr += l; - self._len -= l; - rune._len = l; - return rune; - } - - /* - * @dev Returns the first rune in the slice, advancing the slice to point - * to the next rune. - * @param self The slice to operate on. - * @return A slice containing only the first rune from `self`. - */ - function nextRune(slice memory self) internal pure returns (slice memory ret) { - nextRune(self, ret); - } - - /* - * @dev Returns the number of the first codepoint in the slice. - * @param self The slice to operate on. - * @return The number of the first codepoint in the slice. - */ - function ord(slice memory self) internal pure returns (uint ret) { - if (self._len == 0) { - return 0; - } - - uint word; - uint length; - uint divisor = 2 ** 248; - - // Load the rune into the MSBs of b - assembly { word:= mload(mload(add(self, 32))) } - uint b = word / divisor; - if (b < 0x80) { - ret = b; - length = 1; - } else if(b < 0xE0) { - ret = b & 0x1F; - length = 2; - } else if(b < 0xF0) { - ret = b & 0x0F; - length = 3; - } else { - ret = b & 0x07; - length = 4; - } - - // Check for truncated codepoints - if (length > self._len) { - return 0; - } - - for (uint i = 1; i < length; i++) { - divisor = divisor / 256; - b = (word / divisor) & 0xFF; - if (b & 0xC0 != 0x80) { - // Invalid UTF-8 sequence - return 0; - } - ret = (ret * 64) | (b & 0x3F); - } - - return ret; - } - - /* - * @dev Returns the keccak-256 hash of the slice. - * @param self The slice to hash. - * @return The hash of the slice. - */ - function keccak(slice memory self) internal pure returns (bytes32 ret) { - assembly { - ret := keccak256(mload(add(self, 32)), mload(self)) - } - } - - /* - * @dev Returns true if `self` starts with `needle`. - * @param self The slice to operate on. - * @param needle The slice to search for. - * @return True if the slice starts with the provided text, false otherwise. - */ - function startsWith(slice memory self, slice memory needle) internal pure returns (bool) { - if (self._len < needle._len) { - return false; - } - - if (self._ptr == needle._ptr) { - return true; - } - - bool equal; - assembly { - let length := mload(needle) - let selfptr := mload(add(self, 0x20)) - let needleptr := mload(add(needle, 0x20)) - equal := eq(keccak256(selfptr, length), keccak256(needleptr, length)) - } - return equal; - } - - /* - * @dev If `self` starts with `needle`, `needle` is removed from the - * beginning of `self`. Otherwise, `self` is unmodified. - * @param self The slice to operate on. - * @param needle The slice to search for. - * @return `self` - */ - function beyond(slice memory self, slice memory needle) internal pure returns (slice memory) { - if (self._len < needle._len) { - return self; - } - - bool equal = true; - if (self._ptr != needle._ptr) { - assembly { - let length := mload(needle) - let selfptr := mload(add(self, 0x20)) - let needleptr := mload(add(needle, 0x20)) - equal := eq(keccak256(selfptr, length), keccak256(needleptr, length)) - } - } - - if (equal) { - self._len -= needle._len; - self._ptr += needle._len; - } - - return self; - } - - /* - * @dev Returns true if the slice ends with `needle`. - * @param self The slice to operate on. - * @param needle The slice to search for. - * @return True if the slice starts with the provided text, false otherwise. - */ - function endsWith(slice memory self, slice memory needle) internal pure returns (bool) { - if (self._len < needle._len) { - return false; - } - - uint selfptr = self._ptr + self._len - needle._len; - - if (selfptr == needle._ptr) { - return true; - } - - bool equal; - assembly { - let length := mload(needle) - let needleptr := mload(add(needle, 0x20)) - equal := eq(keccak256(selfptr, length), keccak256(needleptr, length)) - } - - return equal; - } - - /* - * @dev If `self` ends with `needle`, `needle` is removed from the - * end of `self`. Otherwise, `self` is unmodified. - * @param self The slice to operate on. - * @param needle The slice to search for. - * @return `self` - */ - function until(slice memory self, slice memory needle) internal pure returns (slice memory) { - if (self._len < needle._len) { - return self; - } - - uint selfptr = self._ptr + self._len - needle._len; - bool equal = true; - if (selfptr != needle._ptr) { - assembly { - let length := mload(needle) - let needleptr := mload(add(needle, 0x20)) - equal := eq(keccak256(selfptr, length), keccak256(needleptr, length)) - } - } - - if (equal) { - self._len -= needle._len; - } - - return self; - } - - // Returns the memory address of the first byte of the first occurrence of - // `needle` in `self`, or the first byte after `self` if not found. - function findPtr(uint selflen, uint selfptr, uint needlelen, uint needleptr) private pure returns (uint) { - uint ptr = selfptr; - uint idx; - - if (needlelen <= selflen) { - if (needlelen <= 32) { - bytes32 mask; - if (needlelen > 0) { - mask = bytes32(~(2 ** (8 * (32 - needlelen)) - 1)); - } - - bytes32 needledata; - assembly { needledata := and(mload(needleptr), mask) } - - uint end = selfptr + selflen - needlelen; - bytes32 ptrdata; - assembly { ptrdata := and(mload(ptr), mask) } - - while (ptrdata != needledata) { - if (ptr >= end) - return selfptr + selflen; - ptr++; - assembly { ptrdata := and(mload(ptr), mask) } - } - return ptr; - } else { - // For long needles, use hashing - bytes32 hash; - assembly { hash := keccak256(needleptr, needlelen) } - - for (idx = 0; idx <= selflen - needlelen; idx++) { - bytes32 testHash; - assembly { testHash := keccak256(ptr, needlelen) } - if (hash == testHash) - return ptr; - ptr += 1; - } - } - } - return selfptr + selflen; - } - - // Returns the memory address of the first byte after the last occurrence of - // `needle` in `self`, or the address of `self` if not found. - function rfindPtr(uint selflen, uint selfptr, uint needlelen, uint needleptr) private pure returns (uint) { - uint ptr; - - if (needlelen <= selflen) { - if (needlelen <= 32) { - bytes32 mask; - if (needlelen > 0) { - mask = bytes32(~(2 ** (8 * (32 - needlelen)) - 1)); - } - - bytes32 needledata; - assembly { needledata := and(mload(needleptr), mask) } - - ptr = selfptr + selflen - needlelen; - bytes32 ptrdata; - assembly { ptrdata := and(mload(ptr), mask) } - - while (ptrdata != needledata) { - if (ptr <= selfptr) - return selfptr; - ptr--; - assembly { ptrdata := and(mload(ptr), mask) } - } - return ptr + needlelen; - } else { - // For long needles, use hashing - bytes32 hash; - assembly { hash := keccak256(needleptr, needlelen) } - ptr = selfptr + (selflen - needlelen); - while (ptr >= selfptr) { - bytes32 testHash; - assembly { testHash := keccak256(ptr, needlelen) } - if (hash == testHash) - return ptr + needlelen; - ptr -= 1; - } - } - } - return selfptr; - } - - /* - * @dev Modifies `self` to contain everything from the first occurrence of - * `needle` to the end of the slice. `self` is set to the empty slice - * if `needle` is not found. - * @param self The slice to search and modify. - * @param needle The text to search for. - * @return `self`. - */ - function find(slice memory self, slice memory needle) internal pure returns (slice memory) { - uint ptr = findPtr(self._len, self._ptr, needle._len, needle._ptr); - self._len -= ptr - self._ptr; - self._ptr = ptr; - return self; - } - - /* - * @dev Modifies `self` to contain the part of the string from the start of - * `self` to the end of the first occurrence of `needle`. If `needle` - * is not found, `self` is set to the empty slice. - * @param self The slice to search and modify. - * @param needle The text to search for. - * @return `self`. - */ - function rfind(slice memory self, slice memory needle) internal pure returns (slice memory) { - uint ptr = rfindPtr(self._len, self._ptr, needle._len, needle._ptr); - self._len = ptr - self._ptr; - return self; - } - - /* - * @dev Splits the slice, setting `self` to everything after the first - * occurrence of `needle`, and `token` to everything before it. If - * `needle` does not occur in `self`, `self` is set to the empty slice, - * and `token` is set to the entirety of `self`. - * @param self The slice to split. - * @param needle The text to search for in `self`. - * @param token An output parameter to which the first token is written. - * @return `token`. - */ - function split(slice memory self, slice memory needle, slice memory token) internal pure returns (slice memory) { - uint ptr = findPtr(self._len, self._ptr, needle._len, needle._ptr); - token._ptr = self._ptr; - token._len = ptr - self._ptr; - if (ptr == self._ptr + self._len) { - // Not found - self._len = 0; - } else { - self._len -= token._len + needle._len; - self._ptr = ptr + needle._len; - } - return token; - } - - /* - * @dev Splits the slice, setting `self` to everything after the first - * occurrence of `needle`, and returning everything before it. If - * `needle` does not occur in `self`, `self` is set to the empty slice, - * and the entirety of `self` is returned. - * @param self The slice to split. - * @param needle The text to search for in `self`. - * @return The part of `self` up to the first occurrence of `delim`. - */ - function split(slice memory self, slice memory needle) internal pure returns (slice memory token) { - split(self, needle, token); - } - - /* - * @dev Splits the slice, setting `self` to everything before the last - * occurrence of `needle`, and `token` to everything after it. If - * `needle` does not occur in `self`, `self` is set to the empty slice, - * and `token` is set to the entirety of `self`. - * @param self The slice to split. - * @param needle The text to search for in `self`. - * @param token An output parameter to which the first token is written. - * @return `token`. - */ - function rsplit(slice memory self, slice memory needle, slice memory token) internal pure returns (slice memory) { - uint ptr = rfindPtr(self._len, self._ptr, needle._len, needle._ptr); - token._ptr = ptr; - token._len = self._len - (ptr - self._ptr); - if (ptr == self._ptr) { - // Not found - self._len = 0; - } else { - self._len -= token._len + needle._len; - } - return token; - } - - /* - * @dev Splits the slice, setting `self` to everything before the last - * occurrence of `needle`, and returning everything after it. If - * `needle` does not occur in `self`, `self` is set to the empty slice, - * and the entirety of `self` is returned. - * @param self The slice to split. - * @param needle The text to search for in `self`. - * @return The part of `self` after the last occurrence of `delim`. - */ - function rsplit(slice memory self, slice memory needle) internal pure returns (slice memory token) { - rsplit(self, needle, token); - } - - /* - * @dev Counts the number of nonoverlapping occurrences of `needle` in `self`. - * @param self The slice to search. - * @param needle The text to search for in `self`. - * @return The number of occurrences of `needle` found in `self`. - */ - function count(slice memory self, slice memory needle) internal pure returns (uint cnt) { - uint ptr = findPtr(self._len, self._ptr, needle._len, needle._ptr) + needle._len; - while (ptr <= self._ptr + self._len) { - cnt++; - ptr = findPtr(self._len - (ptr - self._ptr), ptr, needle._len, needle._ptr) + needle._len; - } - } - - /* - * @dev Returns True if `self` contains `needle`. - * @param self The slice to search. - * @param needle The text to search for in `self`. - * @return True if `needle` is found in `self`, false otherwise. - */ - function contains(slice memory self, slice memory needle) internal pure returns (bool) { - return rfindPtr(self._len, self._ptr, needle._len, needle._ptr) != self._ptr; - } - - /* - * @dev Returns a newly allocated string containing the concatenation of - * `self` and `other`. - * @param self The first slice to concatenate. - * @param other The second slice to concatenate. - * @return The concatenation of the two strings. - */ - function concat(slice memory self, slice memory other) internal pure returns (string memory) { - string memory ret = new string(self._len + other._len); - uint retptr; - assembly { retptr := add(ret, 32) } - memcpy(retptr, self._ptr, self._len); - memcpy(retptr + self._len, other._ptr, other._len); - return ret; - } - - /* - * @dev Joins an array of slices, using `self` as a delimiter, returning a - * newly allocated string. - * @param self The delimiter to use. - * @param parts A list of slices to join. - * @return A newly allocated string containing all the slices in `parts`, - * joined with `self`. - */ - function join(slice memory self, slice[] memory parts) internal pure returns (string memory) { - if (parts.length == 0) - return ""; - - uint length = self._len * (parts.length - 1); - for(uint i = 0; i < parts.length; i++) - length += parts[i]._len; - - string memory ret = new string(length); - uint retptr; - assembly { retptr := add(ret, 32) } - - for(uint i = 0; i < parts.length; i++) { - memcpy(retptr, parts[i]._ptr, parts[i]._len); - retptr += parts[i]._len; - if (i < parts.length - 1) { - memcpy(retptr, self._ptr, self._len); - retptr += self._len; - } - } - - return ret; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/src/strings.t.sol b/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/src/strings.t.sol deleted file mode 100644 index bc3581cc27..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/lib/solidity-stringutils/src/strings.t.sol +++ /dev/null @@ -1,216 +0,0 @@ -pragma solidity ^0.8.0; - -import 'ds-test/test.sol'; -import './strings.sol'; - -contract StringsTest is DSTest { - using strings for *; - - - function abs(int x) private pure returns (int) { - if(x < 0) - return -x; - return x; - } - - function sign(int x) private pure returns (int) { - return x == 0 ? int(0) : (x < 0 ? -1 : int(1)); - } - - function assertEq0(string memory a, string memory b) internal { - assertEq0(bytes(a), bytes(b)); - } - - function assertEq0(strings.slice memory a, strings.slice memory b) internal { - assertEq0(a.toString(), b.toString()); - } - - function assertEq0(strings.slice memory a, string memory b) internal { - assertEq0(a.toString(), b); - } - - function testSliceToString() public { - string memory test = "Hello, world!"; - assertEq0(test, test.toSlice().toString()); - } - - function testBytes32Len() public { - bytes32 test; - for(uint i = 0; i <= 32; i++) { - assertEq(i, test.len()); - test = bytes32((uint(test) / 0x100) | 0x2000000000000000000000000000000000000000000000000000000000000000); - } - } - - - function testToSliceB32() public { - assertEq0(bytes32("foobar").toSliceB32(), "foobar".toSlice()); - } - - function testCopy() public { - string memory test = "Hello, world!"; - strings.slice memory s1 = test.toSlice(); - strings.slice memory s2 = s1.copy(); - s1._len = 0; - assertEq(s2._len, bytes(test).length); - } - - function testLen() public { - assertEq("".toSlice().len(), 0); - assertEq("Hello, world!".toSlice().len(), 13); - assertEq(unicode"naïve".toSlice().len(), 5); - assertEq(unicode"こんにちは".toSlice().len(), 5); - } - - function testEmpty() public { - assertTrue("".toSlice().empty()); - assertTrue(!"x".toSlice().empty()); - } - - function testEquals() public { - assertTrue("".toSlice().equals("".toSlice())); - assertTrue("foo".toSlice().equals("foo".toSlice())); - assertTrue(!"foo".toSlice().equals("bar".toSlice())); - } - - function testNextRune() public { - strings.slice memory s = unicode"a¡ࠀ𐀡".toSlice(); - assertEq0(s.nextRune(), "a"); - assertEq0(s, unicode"¡ࠀ𐀡"); - assertEq0(s.nextRune(), unicode"¡"); - assertEq0(s, unicode"ࠀ𐀡"); - assertEq0(s.nextRune(), unicode"ࠀ"); - assertEq0(s, unicode"𐀡"); - assertEq0(s.nextRune(), unicode"𐀡"); - assertEq0(s, ""); - assertEq0(s.nextRune(), ""); - } - - function testOrd() public { - assertEq("a".toSlice().ord(), 0x61); - assertEq(unicode"¡".toSlice().ord(), 0xA1); - assertEq(unicode"ࠀ".toSlice().ord(), 0x800); - assertEq(unicode"𐀡".toSlice().ord(), 0x10021); - } - - function testCompare() public { - - assertEq(sign("foobie".toSlice().compare("foobie".toSlice())), 0); - assertEq(sign("foobie".toSlice().compare("foobif".toSlice())), -1); - assertEq(sign("foobie".toSlice().compare("foobid".toSlice())), 1); - assertEq(sign("foobie".toSlice().compare("foobies".toSlice())), -1); - assertEq(sign("foobie".toSlice().compare("foobi".toSlice())), 1); - assertEq(sign("foobie".toSlice().compare("doobie".toSlice())), 1); - assertEq(sign("01234567890123456789012345678901".toSlice().compare("012345678901234567890123456789012".toSlice())), -1); - assertEq(sign("0123456789012345678901234567890123".toSlice().compare("1123456789012345678901234567890123".toSlice())), -1); - assertEq(sign("foo.bar".toSlice().split(".".toSlice()).compare("foo".toSlice())), 0); - } - - function testStartsWith() public { - strings.slice memory s = "foobar".toSlice(); - assertTrue(s.startsWith("foo".toSlice())); - assertTrue(!s.startsWith("oob".toSlice())); - assertTrue(s.startsWith("".toSlice())); - assertTrue(s.startsWith(s.copy().rfind("foo".toSlice()))); - } - - function testBeyond() public { - strings.slice memory s = "foobar".toSlice(); - assertEq0(s.beyond("foo".toSlice()), "bar"); - assertEq0(s, "bar"); - assertEq0(s.beyond("foo".toSlice()), "bar"); - assertEq0(s.beyond("bar".toSlice()), ""); - assertEq0(s, ""); - } - - function testEndsWith() public { - strings.slice memory s = "foobar".toSlice(); - assertTrue(s.endsWith("bar".toSlice())); - assertTrue(!s.endsWith("oba".toSlice())); - assertTrue(s.endsWith("".toSlice())); - assertTrue(s.endsWith(s.copy().find("bar".toSlice()))); - } - - function testUntil() public { - strings.slice memory s = "foobar".toSlice(); - assertEq0(s.until("bar".toSlice()), "foo"); - assertEq0(s, "foo"); - assertEq0(s.until("bar".toSlice()), "foo"); - assertEq0(s.until("foo".toSlice()), ""); - assertEq0(s, ""); - } - - function testFind() public { - assertEq0("abracadabra".toSlice().find("abracadabra".toSlice()), "abracadabra"); - assertEq0("abracadabra".toSlice().find("bra".toSlice()), "bracadabra"); - assertTrue("abracadabra".toSlice().find("rab".toSlice()).empty()); - assertTrue("12345".toSlice().find("123456".toSlice()).empty()); - assertEq0("12345".toSlice().find("".toSlice()), "12345"); - assertEq0("12345".toSlice().find("5".toSlice()), "5"); - } - - function testRfind() public { - assertEq0("abracadabra".toSlice().rfind("bra".toSlice()), "abracadabra"); - assertEq0("abracadabra".toSlice().rfind("cad".toSlice()), "abracad"); - assertTrue("12345".toSlice().rfind("123456".toSlice()).empty()); - assertEq0("12345".toSlice().rfind("".toSlice()), "12345"); - assertEq0("12345".toSlice().rfind("1".toSlice()), "1"); - } - - function testSplit() public { - strings.slice memory s = "foo->bar->baz".toSlice(); - strings.slice memory delim = "->".toSlice(); - assertEq0(s.split(delim), "foo"); - assertEq0(s, "bar->baz"); - assertEq0(s.split(delim), "bar"); - assertEq0(s.split(delim), "baz"); - assertTrue(s.empty()); - assertEq0(s.split(delim), ""); - assertEq0(".".toSlice().split(".".toSlice()), ""); - } - - function testRsplit() public { - strings.slice memory s = "foo->bar->baz".toSlice(); - strings.slice memory delim = "->".toSlice(); - assertEq0(s.rsplit(delim), "baz"); - assertEq0(s.rsplit(delim), "bar"); - assertEq0(s.rsplit(delim), "foo"); - assertTrue(s.empty()); - assertEq0(s.rsplit(delim), ""); - } - - function testCount() public { - assertEq("1121123211234321".toSlice().count("1".toSlice()), 7); - assertEq("ababababa".toSlice().count("aba".toSlice()), 2); - } - - function testContains() public { - assertTrue("foobar".toSlice().contains("f".toSlice())); - assertTrue("foobar".toSlice().contains("o".toSlice())); - assertTrue("foobar".toSlice().contains("r".toSlice())); - assertTrue("foobar".toSlice().contains("".toSlice())); - assertTrue("foobar".toSlice().contains("foobar".toSlice())); - assertTrue(!"foobar".toSlice().contains("s".toSlice())); - } - - function testConcat() public { - assertEq0("foo".toSlice().concat("bar".toSlice()), "foobar"); - assertEq0("".toSlice().concat("bar".toSlice()), "bar"); - assertEq0("foo".toSlice().concat("".toSlice()), "foo"); - } - - function testJoin() public { - strings.slice[] memory parts = new strings.slice[](4); - parts[0] = "zero".toSlice(); - parts[1] = "one".toSlice(); - parts[2] = "".toSlice(); - parts[3] = "two".toSlice(); - - assertEq0(" ".toSlice().join(parts), "zero one two"); - assertEq0("".toSlice().join(parts), "zeroonetwo"); - - parts = new strings.slice[](1); - parts[0] = "zero".toSlice(); - assertEq0(" ".toSlice().join(parts), "zero"); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/remappings.txt b/packages/wallet-contracts/lib/foundry-huff/remappings.txt deleted file mode 100644 index 1722d907ea..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/remappings.txt +++ /dev/null @@ -1,2 +0,0 @@ -forge-std/=lib/forge-std/src/ -stringutils/=lib/solidity-stringutils/ \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/scripts/binary_check.sh b/packages/wallet-contracts/lib/foundry-huff/scripts/binary_check.sh deleted file mode 100644 index 725a058b50..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/scripts/binary_check.sh +++ /dev/null @@ -1,11 +0,0 @@ -#! /bin/bash - -if ! [[ "$(npm list -g huffc)" =~ "empty" ]]; then - # huffc was installed via npm, return 0x00 - echo -n 0x00 -elif [[ "$(yarn global list)" =~ "huffc" ]]; then - # huffc was installed via yarn, return 0x00 - echo -n 0x00 -else - echo -n 0x01 -fi diff --git a/packages/wallet-contracts/lib/foundry-huff/scripts/file_writer.sh b/packages/wallet-contracts/lib/foundry-huff/scripts/file_writer.sh deleted file mode 100644 index 93e3a8d325..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/scripts/file_writer.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/bash - -echo "$2" > $1 diff --git a/packages/wallet-contracts/lib/foundry-huff/scripts/rand_bytes.sh b/packages/wallet-contracts/lib/foundry-huff/scripts/rand_bytes.sh deleted file mode 100644 index fdd9921067..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/scripts/rand_bytes.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/bash - -echo -n $(hexdump -n 16 -v -e '"0x" 32/1 "%02x" "\n"' /dev/urandom) \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/scripts/read_and_append.sh b/packages/wallet-contracts/lib/foundry-huff/scripts/read_and_append.sh deleted file mode 100644 index a14336571e..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/scripts/read_and_append.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/bash - -cat $2 >> $1 diff --git a/packages/wallet-contracts/lib/foundry-huff/src/HuffConfig.sol b/packages/wallet-contracts/lib/foundry-huff/src/HuffConfig.sol deleted file mode 100644 index a6f8b09a43..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/HuffConfig.sol +++ /dev/null @@ -1,247 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.13 <0.9.0; - -import {Vm} from "forge-std/Vm.sol"; -import {strings} from "stringutils/strings.sol"; - -contract HuffConfig { - using strings for *; - - /// @notice Initializes cheat codes in order to use ffi to compile Huff contracts - Vm public constant vm = Vm(address(bytes20(uint160(uint256(keccak256("hevm cheat code")))))); - - /// @notice Struct that represents a constant to be passed to the `-c` flag - struct Constant { - string key; - string value; - } - - /// @notice additional code to append to the source file - string public code; - - /// @notice arguments to append to the bytecode - bytes public args; - - /// @notice value to deploy the contract with - uint256 public value; - - /// @notice address that will be the `msg.sender` (op: caller) in the constructor - /// @dev set to config address to ensure backwards compatibility - address public deployer = address(this); - - /// @notice whether to broadcast the deployment tx - bool public should_broadcast; - - /// @notice supported evm versions - string public evm_version; - - /// @notice constant overrides for the current compilation environment - Constant[] public const_overrides; - - /// @notice sets the code to be appended to the source file - function with_code(string memory code_) public returns (HuffConfig) { - code = code_; - return this; - } - - /// @notice sets the arguments to be appended to the bytecode - function with_args(bytes memory args_) public returns (HuffConfig) { - args = args_; - return this; - } - - /// @notice sets the amount of wei to deploy the contract with - function with_value(uint256 value_) public returns (HuffConfig) { - value = value_; - return this; - } - - /// @notice sets the caller of the next deployment - function with_deployer(address _deployer) public returns (HuffConfig) { - deployer = _deployer; - return this; - } - - /// @notice sets the evm version to compile with - function with_evm_version(string memory _evm_version) public returns (HuffConfig) { - evm_version = _evm_version; - return this; - } - - /// @notice sets a constant to a bytes memory value in the current compilation environment - /// @dev The `value` string must contain a valid hex number that is <= 32 bytes - /// i.e. "0x01", "0xa57b", "0x0de0b6b3a7640000", etc. - function with_constant(string memory key, string memory value_) public returns (HuffConfig) { - const_overrides.push(Constant(key, value_)); - return this; - } - - /// @notice sets a constant to an address value in the current compilation environment - function with_addr_constant(string memory key, address value_) public returns (HuffConfig) { - const_overrides.push(Constant(key, bytesToString(abi.encodePacked(value_)))); - return this; - } - - /// @notice sets a constant to a bytes32 value in the current compilation environment - function with_bytes32_constant(string memory key, bytes32 value_) public returns (HuffConfig) { - const_overrides.push(Constant(key, bytesToString(abi.encodePacked(value_)))); - return this; - } - - /// @notice sets a constant to a uint256 value in the current compilation environment - function with_uint_constant(string memory key, uint256 value_) public returns (HuffConfig) { - const_overrides.push(Constant(key, bytesToString(abi.encodePacked(value_)))); - return this; - } - - /// @notice sets whether to broadcast the deployment - function set_broadcast(bool broadcast) public returns (HuffConfig) { - should_broadcast = broadcast; - return this; - } - - /// @notice Checks for huffc binary conflicts - function binary_check() public { - string[] memory bincheck = new string[](1); - bincheck[0] = "./lib/foundry-huff/scripts/binary_check.sh"; - bytes memory retData = vm.ffi(bincheck); - bytes8 first_bytes = retData[0]; - bool decoded = first_bytes == bytes8(hex"01"); - require( - decoded, "Invalid huffc binary. Run `curl -L get.huff.sh | bash` and `huffup` to fix." - ); - } - - function bytes32ToString(bytes32 x) internal pure returns (string memory) { - string memory result; - for (uint256 j = 0; j < x.length; j++) { - result = string.concat(result, string(abi.encodePacked(uint8(x[j]) % 26 + 97))); - } - return result; - } - - function bytesToString(bytes memory data) public pure returns (string memory) { - bytes memory alphabet = "0123456789abcdef"; - - bytes memory str = new bytes(2 + data.length * 2); - str[0] = "0"; - str[1] = "x"; - for (uint256 i = 0; i < data.length; i++) { - str[2 + i * 2] = alphabet[uint256(uint8(data[i] >> 4))]; - str[3 + i * 2] = alphabet[uint256(uint8(data[i] & 0x0f))]; - } - return string(str); - } - - /// @notice Get the evm version string | else return default ("shanghai") - function get_evm_version() public view returns (string memory) { - bytes32 _evm_version = bytes32(bytes(abi.encodePacked(evm_version))); - if (_evm_version == bytes32(0x0)) { - return "shanghai"; - } - return evm_version; - } - - /// @notice Get the creation bytecode of a contract - function creation_code(string memory file) public payable returns (bytes memory bytecode) { - binary_check(); - - // Split the file into its parts - strings.slice memory s = file.toSlice(); - strings.slice memory delim = "/".toSlice(); - string[] memory parts = new string[](s.count(delim) + 1); - for (uint256 i = 0; i < parts.length; i++) { - parts[i] = s.split(delim).toString(); - } - - // Get the system time with our script - string[] memory time = new string[](1); - time[0] = "./lib/foundry-huff/scripts/rand_bytes.sh"; - bytes memory retData = vm.ffi(time); - string memory rand_bytes = bytes32ToString(keccak256(abi.encode(bytes32(retData)))); - - // Re-concatenate the file with a "__TEMP__" prefix - string memory tempFile = parts[0]; - if (parts.length <= 1) { - tempFile = string.concat("__TEMP__", rand_bytes, tempFile); - } else { - for (uint256 i = 1; i < parts.length - 1; i++) { - tempFile = string.concat(tempFile, "/", parts[i]); - } - tempFile = string.concat(tempFile, "/", "__TEMP__", rand_bytes, parts[parts.length - 1]); - } - - // Paste the code in a new temp file - string[] memory create_cmds = new string[](3); - // TODO: create_cmds[0] = "$(find . -name \"file_writer.sh\")"; - create_cmds[0] = "./lib/foundry-huff/scripts/file_writer.sh"; - create_cmds[1] = string.concat("src/", tempFile, ".huff"); - create_cmds[2] = string.concat(code, "\n"); - vm.ffi(create_cmds); - - // Append the real code to the temp file - string[] memory append_cmds = new string[](3); - append_cmds[0] = "./lib/foundry-huff/scripts/read_and_append.sh"; - append_cmds[1] = string.concat("src/", tempFile, ".huff"); - append_cmds[2] = string.concat("src/", file, ".huff"); - vm.ffi(append_cmds); - - /// Create a list of strings with the commands necessary to compile Huff contracts - string[] memory cmds = new string[](5); - if (const_overrides.length > 0) { - cmds = new string[](6 + const_overrides.length); - cmds[5] = "-c"; - - Constant memory cur_const; - for (uint256 i; i < const_overrides.length; i++) { - cur_const = const_overrides[i]; - cmds[6 + i] = string.concat(cur_const.key, "=", cur_const.value); - } - } - - cmds[0] = "huffc"; - cmds[1] = string(string.concat("src/", tempFile, ".huff")); - cmds[2] = "-b"; - cmds[3] = "-e"; - cmds[4] = get_evm_version(); - - /// @notice compile the Huff contract and return the bytecode - bytecode = vm.ffi(cmds); - - // Clean up temp files - string[] memory cleanup = new string[](2); - cleanup[0] = "rm"; - cleanup[1] = string.concat("src/", tempFile, ".huff"); - - // set `msg.sender` for upcoming create context - vm.prank(deployer); - - - vm.ffi(cleanup); - } - - /// @notice get creation code of a contract plus encoded arguments - function creation_code_with_args(string memory file) public payable returns (bytes memory bytecode) { - bytecode = creation_code(file); - return bytes.concat(bytecode, args); - } - - /// @notice Deploy the Contract - function deploy(string memory file) public payable returns (address) { - bytes memory concatenated = creation_code_with_args(file); - - /// @notice deploy the bytecode with the create instruction - address deployedAddress; - if (should_broadcast) vm.broadcast(); - assembly { - let val := sload(value.slot) - deployedAddress := create(val, add(concatenated, 0x20), mload(concatenated)) - } - - /// @notice check that the deployment was successful - require(deployedAddress != address(0), "HuffDeployer could not deploy contract"); - - /// @notice return the address that the contract was deployed to - return deployedAddress; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/HuffDeployer.sol b/packages/wallet-contracts/lib/foundry-huff/src/HuffDeployer.sol deleted file mode 100644 index 1608e524e2..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/HuffDeployer.sol +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.13 <0.9.0; - -import {Vm} from "forge-std/Vm.sol"; -import {HuffConfig} from "./HuffConfig.sol"; - -library HuffDeployer { - /// @notice Create a new huff config - function config() public returns (HuffConfig) { - return new HuffConfig(); - } - - // @notice Deterministically create a new huff config using create2 and a salt - function config_with_create_2(uint256 salt) public returns (HuffConfig) { - return new HuffConfig{salt: bytes32(salt)}(); - } - - // @notice Get the address of a HuffConfig deployed with config_with_create_2 - function get_config_with_create_2(uint256 salt) public view returns (address) { - return - address( - uint160( - uint256( - keccak256( - abi.encodePacked( - bytes1(0xff), address(this), bytes32(salt), keccak256(type(HuffConfig).creationCode) - ) - ) - ) - ) - ); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @return The address that the contract was deployed to - function deploy(string memory fileName) internal returns (address) { - return config().deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @return The address that the contract was deployed to - function broadcast(string memory fileName) internal returns (address) { - return config().set_broadcast(true).deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @param value - Value to deploy with - /// @return The address that the contract was deployed to - function deploy_with_value(string memory fileName, uint256 value) internal returns (address) { - return config().with_value(value).deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @param value - Value to deploy with - /// @return The address that the contract was deployed to - function broadcast_with_value(string memory fileName, uint256 value) - internal - returns (address) - { - return config().set_broadcast(true).with_value(value).deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @param args - Constructor Args to append to the bytecode - /// @return The address that the contract was deployed to - function deploy_with_args(string memory fileName, bytes memory args) - internal - returns (address) - { - return config().with_args(args).deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @param args - Constructor Args to append to the bytecode - /// @return The address that the contract was deployed to - function broadcast_with_args(string memory fileName, bytes memory args) - internal - returns (address) - { - return config().set_broadcast(true).with_args(args).deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @param code - Code to append to the file source code (e.g. a constructor macro to make the contract instantiable) - /// @return The address that the contract was deployed to - function deploy_with_code(string memory fileName, string memory code) - internal - returns (address) - { - return config().with_code(code).deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @param code - Code to append to the file source code (e.g. a constructor macro to make the contract instantiable) - /// @return The address that the contract was deployed to - function broadcast_with_code(string memory fileName, string memory code) - internal - returns (address) - { - return config().set_broadcast(true).with_code(code).deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @param code - Code to append to the file source code (e.g. a constructor macro to make the contract instantiable) - /// @param args - Constructor Args to append to the bytecode - /// @return The address that the contract was deployed to - function deploy_with_code_args(string memory fileName, string memory code, bytes memory args) - internal - returns (address) - { - return config().with_code(code).with_args(args).deploy(fileName); - } - - /// @notice Compiles a Huff contract and returns the address that the contract was deployeod to - /// @param fileName - The file name of the Huff contract. For example, the file name for "SimpleStore.huff" is "SimpleStore" - /// @param code - Code to append to the file source code (e.g. a constructor macro to make the contract instantiable) - /// @param args - Constructor Args to append to the bytecode - /// @return The address that the contract was deployed to - function broadcast_with_code_args(string memory fileName, string memory code, bytes memory args) - internal - returns (address) - { - return config().set_broadcast(true).with_code(code).with_args(args).deploy(fileName); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/depreciated/StatefulDeployer.sol b/packages/wallet-contracts/lib/foundry-huff/src/depreciated/StatefulDeployer.sol deleted file mode 100644 index b67b98e5d4..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/depreciated/StatefulDeployer.sol +++ /dev/null @@ -1,73 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.13 <0.9.0; - -import {Vm} from "forge-std/Vm.sol"; -import {strings} from "stringutils/strings.sol"; -import {HuffDeployer} from "../HuffDeployer.sol"; - -contract StatefulDeployer { - using strings for *; - - /// @notice Initializes cheat codes in order to use ffi to compile Huff contracts - Vm public constant vm = Vm(address(bytes20(uint160(uint256(keccak256("hevm cheat code")))))); - - /// @notice additional code to append to the source file - string public code; - - /// @notice arguments to append to the bytecode - bytes public args; - - /// @notice sets the code to be appended to the source file - function setCode(string memory acode) public { - code = acode; - } - - /// @notice sets the arguments to be appended to the bytecode - function setArgs(bytes memory aargs) public { - args = aargs; - } - - /// @notice Deployment wrapper - function deploy(string memory file) public returns (address) { - // Split the file into it's parts - strings.slice memory s = file.toSlice(); - strings.slice memory delim = "/".toSlice(); - string[] memory parts = new string[](s.count(delim) + 1); - for (uint256 i = 0; i < parts.length; i++) { - parts[i] = s.split(delim).toString(); - } - - // Re-concatenate the file with a "__TEMP__" prefix - string memory tempFile = parts[0]; - for (uint256 i = 1; i < parts.length - 1; i++) { - tempFile = string.concat(tempFile, "/", parts[i]); - } - tempFile = string.concat(tempFile, "/", "__TEMP__", parts[parts.length - 1]); - - // Paste the code in a new temp file - string[] memory create_cmds = new string[](3); - create_cmds[0] = "./scripts/file_writer.sh"; - create_cmds[1] = string.concat("src/", tempFile, ".huff"); - create_cmds[2] = string.concat(code, "\n"); - vm.ffi(create_cmds); - - // Append the real code to the temp file - string[] memory append_cmds = new string[](3); - append_cmds[0] = "./scripts/read_and_append.sh"; - append_cmds[1] = string.concat("src/", tempFile, ".huff"); - append_cmds[2] = string.concat("src/", file, ".huff"); - vm.ffi(append_cmds); - - // Deploy with args the temp file - address deployed = HuffDeployer.deploy_with_args(tempFile, args); - - // Clean up temp files - string[] memory cleanup = new string[](2); - cleanup[0] = "rm"; - cleanup[1] = string.concat("src/", tempFile, ".huff"); - vm.ffi(cleanup); - - // Return the deployed address - return deployed; - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/depreciated/StatefulDeployer.t.sol b/packages/wallet-contracts/lib/foundry-huff/src/depreciated/StatefulDeployer.t.sol deleted file mode 100644 index 4773965524..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/depreciated/StatefulDeployer.t.sol +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -import "forge-std/Test.sol"; - -import {INumber} from "../test/interfaces/INumber.sol"; -import {IConstructor} from "../test/interfaces/IConstructor.sol"; -import {StatefulDeployer} from "./StatefulDeployer.sol"; - -contract StatefulDeployerTest is Test { - StatefulDeployer public deployer; - IConstructor public construct; - - function setUp() public { - deployer = new StatefulDeployer(); - } - - function testSetArgs(bytes memory some) public { - deployer.setArgs(some); - assertEq(deployer.args(), some); - } - - function testSetCode(string memory code) public { - deployer.setCode(code); - assertEq(deployer.code(), code); - } - - function testDeployWithArgsAndCode() public { - deployer.setArgs(bytes.concat(abi.encode(uint256(0x420)), abi.encode(uint256(0x420)))); - deployer.setCode( - "" "#define macro CONSTRUCTOR() = takes(0) returns (0) { \n" - " // Copy the first argument into memory \n" - " 0x20 // [size] - byte size to copy \n" - " 0x40 codesize sub // [offset, size] - offset in the code to copy from \n" - " 0x00 // [mem, offset, size] - offset in memory to copy to \n" - " codecopy // [] \n" - " // Store the first argument in storage \n" - " 0x00 mload // [arg] \n" - " [CONSTRUCTOR_ARG_ONE] // [CONSTRUCTOR_ARG_ONE, arg] \n" - " sstore // [] \n" - " // Copy the second argument into memory \n" - " 0x20 // [size] - byte size to copy \n" - " 0x20 codesize sub // [offset, size] - offset in the code to copy from \n" - " 0x00 // [mem, offset, size] - offset in memory to copy to \n" - " codecopy // [] \n" - " // Store the second argument in storage \n" - " 0x00 mload // [arg] \n" - " [CONSTRUCTOR_ARG_TWO] // [CONSTRUCTOR_ARG_TWO, arg] \n" - " sstore // [] \n" "}" - ); - - construct = IConstructor(deployer.deploy("test/contracts/NoConstructor")); - assertEq(address(0x420), construct.getArgOne()); - assertEq(uint256(0x420), construct.getArgTwo()); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/HuffConfig.t.sol b/packages/wallet-contracts/lib/foundry-huff/src/test/HuffConfig.t.sol deleted file mode 100644 index 03fdb7bebd..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/HuffConfig.t.sol +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -import "forge-std/Test.sol"; - -import {INumber} from "./interfaces/INumber.sol"; -import {IConstructor} from "./interfaces/IConstructor.sol"; -import {HuffConfig} from "../HuffConfig.sol"; - -contract HuffConfigTest is Test { - HuffConfig public config; - INumber public number; - - function setUp() public { - config = new HuffConfig(); - } - - function testWithDeployer(address deployer) public { - config.with_deployer(deployer); - assertEq(config.deployer(), deployer); - } - - function testWithArgs(bytes memory some) public { - config.with_args(some); - assertEq(config.args(), some); - } - - function testWithValue(uint256 value) public { - config.with_value(value); - assertEq(config.value(), value); - } - - function testWithCode(string memory code) public { - config.with_code(code); - assertEq(config.code(), code); - } - - function testWithConstantOverrides(string memory key, string memory value) public { - config.with_constant(key, value); - (string memory k, string memory v) = config.const_overrides(0); - assertEq(key, k); - assertEq(value, v); - } - - function testSetBroadcast(bool broadcast) public { - config.set_broadcast(broadcast); - bool b = config.should_broadcast(); - assertEq(b, broadcast); - } - - function testWithEvmVersion() public { - config.with_evm_version("paris"); - assertEq(config.evm_version(), "paris"); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/HuffDeployer.t.sol b/packages/wallet-contracts/lib/foundry-huff/src/test/HuffDeployer.t.sol deleted file mode 100644 index c0496de141..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/HuffDeployer.t.sol +++ /dev/null @@ -1,276 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -import "forge-std/Test.sol"; - -import {HuffConfig} from "../HuffConfig.sol"; -import {HuffDeployer} from "../HuffDeployer.sol"; -import {INumber} from "./interfaces/INumber.sol"; -import {IConstructor} from "./interfaces/IConstructor.sol"; -import {IRememberCreator} from "./interfaces/IRememberCreator.sol"; - -contract HuffDeployerTest is Test { - INumber number; - IConstructor structor; - - event ArgumentsUpdated(address indexed one, uint256 indexed two); - - function setUp() public { - number = INumber(HuffDeployer.deploy("test/contracts/Number")); - - // Backwards-compatible Constructor creation - vm.recordLogs(); - structor = IConstructor( - HuffDeployer.deploy_with_args( - "test/contracts/Constructor", - bytes.concat(abi.encode(address(0x420)), abi.encode(uint256(0x420))) - ) - ); - Vm.Log[] memory entries = vm.getRecordedLogs(); - - assertEq(entries.length, 1); - assertEq(entries[0].topics.length, 3); - assertEq(entries[0].topics[0], bytes32(uint256(keccak256("ArgumentsUpdated(address,uint256)")))); - assertEq(entries[0].topics[1], bytes32(uint256(uint160(address(0x420))))); - assertEq(entries[0].topics[2], bytes32(uint256(0x420))); - - } - - function testChaining() public { - // Defined Constructor - string memory constructor_macro = "#define macro CONSTRUCTOR() = takes(0) returns (0) {" - " // Copy the first argument into memory \n" - " 0x20 // [size] - byte size to copy \n" - " 0x40 codesize sub // [offset, size] - offset in the code to copy from\n " - " 0x00 // [mem, offset, size] - offset in memory to copy to \n" - " codecopy // [] \n" - " // Store the first argument in storage\n" - " 0x00 mload dup1 // [arg1, arg1] \n" - " [CONSTRUCTOR_ARG_ONE] // [CONSTRUCTOR_ARG_ONE, arg1, arg1] \n" - " sstore // [arg1] \n" - " // Copy the second argument into memory \n" - " 0x20 // [size, arg1] - byte size to copy \n" - " 0x20 codesize sub // [offset, size, arg1] - offset in the code to copy from \n" - " 0x00 // [mem, offset, size, arg1] - offset in memory to copy to \n" - " codecopy // [arg1] \n" - " // Store the second argument in storage \n" - " 0x00 mload dup1 // [arg2, arg2, arg1] \n" - " [CONSTRUCTOR_ARG_TWO] // [CONSTRUCTOR_ARG_TWO, arg2, arg2, arg1] \n" - " sstore // [arg2, arg1] \n" - " // Emit the owner updated event \n" - " swap1 // [arg1, arg2] \n" - " [ARGUMENTS_TOPIC] // [sig, arg1, arg2] \n" - " 0x00 0x00 // [0, 0, sig, arg1, arg2] \n" - " log3 // [] \n" "}"; - - // New pattern - vm.recordLogs(); - IConstructor chained = IConstructor( - HuffDeployer.config().with_args( - bytes.concat(abi.encode(address(0x420)), abi.encode(uint256(0x420))) - ).with_code(constructor_macro).deploy("test/contracts/NoConstructor") - ); - - Vm.Log[] memory entries = vm.getRecordedLogs(); - assertEq(entries.length, 1); - assertEq(entries[0].topics.length, 3); - assertEq(entries[0].topics[0], bytes32(uint256(keccak256("ArgumentsUpdated(address,uint256)")))); - assertEq(entries[0].topics[1], bytes32(uint256(uint160(address(0x420))))); - assertEq(entries[0].topics[2], bytes32(uint256(0x420))); - - assertEq(address(0x420), chained.getArgOne()); - assertEq(uint256(0x420), chained.getArgTwo()); - } - - function testChaining_Create2() public { - // Defined Constructor - string memory constructor_macro = "#define macro CONSTRUCTOR() = takes(0) returns (0) {" - " // Copy the first argument into memory \n" - " 0x20 // [size] - byte size to copy \n" - " 0x40 codesize sub // [offset, size] - offset in the code to copy from\n " - " 0x00 // [mem, offset, size] - offset in memory to copy to \n" - " codecopy // [] \n" " // Store the first argument in storage\n" - " 0x00 mload dup1 // [arg1, arg1] \n" - " [CONSTRUCTOR_ARG_ONE] // [CONSTRUCTOR_ARG_ONE, arg1, arg1] \n" - " sstore // [arg1] \n" " // Copy the second argument into memory \n" - " 0x20 // [size, arg1] - byte size to copy \n" - " 0x20 codesize sub // [offset, size, arg1] - offset in the code to copy from \n" - " 0x00 // [mem, offset, size, arg1] - offset in memory to copy to \n" - " codecopy // [arg1] \n" " // Store the second argument in storage \n" - " 0x00 mload dup1 // [arg2, arg2, arg1] \n" - " [CONSTRUCTOR_ARG_TWO] // [CONSTRUCTOR_ARG_TWO, arg2, arg2, arg1] \n" - " sstore // [arg2, arg1] \n" " // Emit the owner updated event \n" - " swap1 // [arg1, arg2] \n" - " [ARGUMENTS_TOPIC] // [sig, arg1, arg2] \n" - " 0x00 0x00 // [0, 0, sig, arg1, arg2] \n" - " log3 // [] \n" "}"; - - // New pattern - vm.recordLogs(); - IConstructor chained = IConstructor( - HuffDeployer.config_with_create_2(1).with_args(bytes.concat(abi.encode(address(0x420)), abi.encode(uint256(0x420)))) - .with_code(constructor_macro).deploy("test/contracts/NoConstructor") - ); - - Vm.Log[] memory entries = vm.getRecordedLogs(); - assertEq(entries.length, 1); - assertEq(entries[0].topics.length, 3); - assertEq(entries[0].topics[0], bytes32(uint256(keccak256("ArgumentsUpdated(address,uint256)")))); - assertEq(entries[0].topics[1], bytes32(uint256(uint160(address(0x420))))); - assertEq(entries[0].topics[2], bytes32(uint256(0x420))); - - assertEq(address(0x420), chained.getArgOne()); - assertEq(uint256(0x420), chained.getArgTwo()); - } - - function testArgOne() public { - assertEq(address(0x420), structor.getArgOne()); - } - - function testArgTwo() public { - assertEq(uint256(0x420), structor.getArgTwo()); - } - - function testBytecode() public { - bytes memory b = bytes( - hex"5f3560e01c80633fb5c1cb1461001b578063f2c9ecd814610021575b6004355f555b5f545f5260205ff3" - ); - assertEq(getCode(address(number)), b); - } - - function testWithValueDeployment() public { - uint256 value = 1 ether; - HuffDeployer.config().with_value(value).deploy{value: value}( - "test/contracts/ConstructorNeedsValue" - ); - } - - function testWithValueDeployment_Create2() public { - uint256 value = 1 ether; - HuffDeployer.config_with_create_2(1).with_value(value).deploy{value: value}("test/contracts/ConstructorNeedsValue"); - } - - function testConstantOverride() public { - // Test address constant - address a = 0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF; - address deployed = HuffDeployer.config().with_addr_constant("a", a).with_constant( - "b", "0x420" - ).deploy("test/contracts/ConstOverride"); - assertEq(getCode(deployed), hex"73DeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF610420"); - - // Test uint constant - address deployed_2 = HuffDeployer.config().with_uint_constant("a", 32).with_constant( - "b", "0x420" - ).deploy("test/contracts/ConstOverride"); - assertEq(getCode(deployed_2), hex"6020610420"); - - // Test bytes32 constant - address deployed_3 = HuffDeployer.config().with_bytes32_constant("a", bytes32(hex"01")) - .with_constant("b", "0x420").deploy("test/contracts/ConstOverride"); - assertEq( - getCode(deployed_3), - hex"7f0100000000000000000000000000000000000000000000000000000000000000610420" - ); - - // Keep default "a" value and assign "b", which is unassigned in "ConstOverride.huff" - address deployed_4 = - HuffDeployer.config().with_constant("b", "0x420").deploy("test/contracts/ConstOverride"); - assertEq(getCode(deployed_4), hex"6001610420"); - } - - function testConstantOverride_Create2() public { - // Test address constant - address a = 0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF; - address deployed = HuffDeployer.config_with_create_2(1).with_addr_constant("a", a).with_constant("b", "0x420").deploy( - "test/contracts/ConstOverride" - ); - assertEq(getCode(deployed), hex"73DeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF610420"); - - // Test uint constant - address deployed_2 = HuffDeployer.config_with_create_2(2).with_uint_constant("a", 32).with_constant("b", "0x420").deploy( - "test/contracts/ConstOverride" - ); - assertEq(getCode(deployed_2), hex"6020610420"); - - // Test bytes32 constant - address deployed_3 = HuffDeployer.config_with_create_2(3).with_bytes32_constant("a", bytes32(hex"01")).with_constant( - "b", "0x420" - ).deploy("test/contracts/ConstOverride"); - assertEq(getCode(deployed_3), hex"7f0100000000000000000000000000000000000000000000000000000000000000610420"); - - // Keep default "a" value and assign "b", which is unassigned in "ConstOverride.huff" - address deployed_4 = HuffDeployer.config_with_create_2(4).with_constant("b", "0x420").deploy("test/contracts/ConstOverride"); - assertEq(getCode(deployed_4), hex"6001610420"); - } - - function getCode(address who) internal view returns (bytes memory o_code) { - /// @solidity memory-safe-assembly - assembly { - // retrieve the size of the code, this needs assembly - let size := extcodesize(who) - // allocate output byte array - this could also be done without assembly - // by using o_code = new bytes(size) - o_code := mload(0x40) - // new "memory end" including padding - mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f)))) - // store length in memory - mstore(o_code, size) - // actually retrieve the code, this needs assembly - extcodecopy(who, add(o_code, 0x20), 0, size) - } - } - - function testSet(uint256 num) public { - number.setNumber(num); - assertEq(num, number.getNumber()); - } - - function testConstructorDefaultCaller() public { - HuffConfig config = HuffDeployer.config(); - IRememberCreator rememberer = IRememberCreator(config.deploy("test/contracts/RememberCreator")); - assertEq(rememberer.CREATOR(), address(config)); - } - - function runTestConstructorCaller(address deployer) public { - IRememberCreator rememberer = IRememberCreator( - HuffDeployer - .config() - .with_deployer(deployer) - .deploy("test/contracts/RememberCreator") - ); - assertEq(rememberer.CREATOR(), deployer); - } - - // @dev fuzzed test too slow, random examples and address(0) chosen - function testConstructorCaller() public { - runTestConstructorCaller(address(uint160(uint256(keccak256("random addr 1"))))); - runTestConstructorCaller(address(uint160(uint256(keccak256("random addr 2"))))); - runTestConstructorCaller(address(0)); - runTestConstructorCaller(address(uint160(0x1000))); - } - - /// @dev test that compilation is different with new evm versions - function testSettingEVMVersion() public { - /// expected bytecode for EVM version "paris" - bytes memory expectedParis = hex"6000"; - HuffConfig config = HuffDeployer.config().with_evm_version("paris"); - address withParis = config.deploy("test/contracts/EVMVersionCheck"); - - bytes memory parisBytecode = withParis.code; - assertEq(parisBytecode, expectedParis); - - /// expected bytecode for EVM version "shanghai" | default - bytes memory expectedShanghai = hex"5f"; - HuffConfig shanghaiConfig = HuffDeployer.config().with_evm_version("shanghai"); - address withShanghai = shanghaiConfig.deploy("test/contracts/EVMVersionCheck"); - bytes memory shanghaiBytecode = withShanghai.code; - assertEq(shanghaiBytecode, expectedShanghai); - - /// Default should be shanghai (latest) - HuffConfig defaultConfig = HuffDeployer.config().with_evm_version(""); - address withDefault = defaultConfig.deploy("test/contracts/EVMVersionCheck"); - - bytes memory defaultBytecode = withDefault.code; - assertEq(defaultBytecode, expectedShanghai); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/Logging.t.sol b/packages/wallet-contracts/lib/foundry-huff/src/test/Logging.t.sol deleted file mode 100644 index 829cc0511b..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/Logging.t.sol +++ /dev/null @@ -1,83 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -import "forge-std/Test.sol"; - -import {HuffConfig} from "../HuffConfig.sol"; -import {HuffDeployer} from "../HuffDeployer.sol"; -import {INumber} from "./interfaces/INumber.sol"; -import {IConstructor} from "./interfaces/IConstructor.sol"; - -contract LoggingTest is Test { - event LogOne(); - event LogTwo(address indexed a); - event LogThree(address indexed a, uint256 indexed b); - event LogFour(address indexed a, uint256 indexed b, bytes32 indexed c); - event Extended( - address indexed a, uint256 indexed b, bytes32 indexed h1, bytes32 h2, bytes32 two - ); - - function testLoggingWithArgs() public { - vm.recordLogs(); - HuffDeployer.deploy_with_args( - "test/contracts/LotsOfLogging", - bytes.concat(abi.encode(address(0x420)), abi.encode(uint256(0x420))) - ); - Vm.Log[] memory entries = vm.getRecordedLogs(); - - assertEq(entries.length, 5); - assertEq(entries[0].topics.length, 1); - assertEq(entries[0].topics[0], bytes32(uint256(keccak256("LogOne()")))); - assertEq(entries[1].topics.length, 2); - assertEq(entries[1].topics[0], bytes32(uint256(keccak256("LogTwo(address)")))); - // assertEq(entries[1].topics[1], ?); should be address from deployed config - assertEq(entries[2].topics.length, 3); - assertEq(entries[2].topics[0], bytes32(uint256(keccak256("LogThree(address,uint256)")))); - // assertEq(entries[2].topics[1], ?); should be address from deployed config - assertEq(entries[2].topics[2], bytes32(uint256(0x0))); - assertEq(entries[3].topics.length, 4); - assertEq(entries[3].topics[0], bytes32(uint256(keccak256("LogFour(address,uint256,bytes32)")))); - // assertEq(entries[3].topics[1], ?); should be address from deployed config - assertEq(entries[3].topics[2], bytes32(uint256(0x0))); - assertEq(entries[3].topics[3], bytes32(uint256(keccak256(abi.encode(1))))); - assertEq(entries[4].topics.length, 4); - assertEq(entries[4].topics[0], bytes32(uint256(keccak256("Extended(address,uint256,bytes32,bytes32,bytes32)")))); - // assertEq(entries[4].topics[1], ?); should be address from deployed config - assertEq(entries[4].topics[2], bytes32(uint256(0x0))); - assertEq(entries[4].topics[3], bytes32(uint256(keccak256(abi.encode(1))))); - assertEq(entries[4].data, abi.encode(keccak256(abi.encode(2)), keccak256(abi.encode(3)))); - } - - function testLoggingWithDeploy() public { - vm.expectEmit(false, true, true, true); - emit LogOne(); - emit LogTwo(address(0)); - emit LogThree(address(0), 0); - emit LogFour(address(0), 0, keccak256(abi.encode(1))); - emit Extended( - address(0), - 0, - keccak256(abi.encode(1)), - keccak256(abi.encode(2)), - keccak256(abi.encode(3)) - ); - HuffDeployer.deploy("test/contracts/LotsOfLogging"); - } - - function testConfigLogging() public { - HuffConfig config = HuffDeployer.config().with_args(abi.encode(address(0x420))); - vm.expectEmit(true, true, true, true); - emit LogOne(); - emit LogTwo(address(config)); - emit LogThree(address(config), 0); - emit LogFour(address(config), 0, keccak256(abi.encode(1))); - emit Extended( - address(config), - 0, - keccak256(abi.encode(1)), - keccak256(abi.encode(2)), - keccak256(abi.encode(3)) - ); - config.deploy("test/contracts/LotsOfLogging"); - } -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/ConstOverride.huff b/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/ConstOverride.huff deleted file mode 100644 index ce80a69fe2..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/ConstOverride.huff +++ /dev/null @@ -1,6 +0,0 @@ -#define constant a = 0x01 - -#define macro MAIN() = takes (0) returns (0) { - [a] - [b] -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/Constructor.huff b/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/Constructor.huff deleted file mode 100644 index ce3a0bc6d5..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/Constructor.huff +++ /dev/null @@ -1,69 +0,0 @@ -/* Interface */ -#define function getArgOne() view returns (address) -#define function getArgTwo() view returns (uint256) - -/* Storage Slots */ -#define constant CONSTRUCTOR_ARG_ONE = FREE_STORAGE_POINTER() -#define constant CONSTRUCTOR_ARG_TWO = FREE_STORAGE_POINTER() - -/* Events */ -#define event ArgumentsUpdated(address indexed one, uint256 indexed two) - -#define constant ARGUMENTS_TOPIC = 0xd0a6a6b9636b3b1e85120bfc8c36f7bc862769b48e0854deaf8780636a71ce7d - -/* Constructor */ -#define macro CONSTRUCTOR() = takes(0) returns (0) { - // Copy the first argument into memory - 0x20 // [size] - byte size to copy - 0x40 codesize sub // [offset, size] - offset in the code to copy from - 0x00 // [mem, offset, size] - offset in memory to copy to - codecopy // [] - - // Store the first argument in storage - 0x00 mload dup1 // [arg1, arg1] - [CONSTRUCTOR_ARG_ONE] // [CONSTRUCTOR_ARG_ONE, arg1, arg1] - sstore // [arg1] - - // Copy the second argument into memory - 0x20 // [size, arg1] - byte size to copy - 0x20 codesize sub // [offset, size, arg1] - offset in the code to copy from - 0x00 // [mem, offset, size, arg1] - offset in memory to copy to - codecopy // [arg1] - - // Store the second argument in storage - 0x00 mload dup1 // [arg2, arg2, arg1] - [CONSTRUCTOR_ARG_TWO] // [CONSTRUCTOR_ARG_TWO, arg2, arg2, arg1] - sstore // [arg2, arg1] - - // Emit the owner updated event - swap1 // [arg1, arg2] - [ARGUMENTS_TOPIC] // [sig, arg1, arg2] - 0x00 0x00 // [0, 0, sig, arg1, arg2] - log3 // [] -} - -/* First Argument Accessor */ -#define macro GET_ARG_ONE() = takes (0) returns (0) { - [CONSTRUCTOR_ARG_ONE] sload - 0x00 mstore - 0x20 0x00 return -} - -/* Second Argument Accessor */ -#define macro GET_ARG_TWO() = takes (0) returns (0) { - [CONSTRUCTOR_ARG_TWO] sload - 0x00 mstore - 0x20 0x00 return -} - -/* Main Macro */ -#define macro MAIN() = takes (0) returns (0) { - 0x00 calldataload 0xE0 shr - dup1 0xbb01e52d eq arg_one jumpi - dup1 0x98e45be4 eq arg_two jumpi - - arg_one: - GET_ARG_ONE() - arg_two: - GET_ARG_TWO() -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/ConstructorNeedsValue.huff b/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/ConstructorNeedsValue.huff deleted file mode 100644 index 27da3e78b7..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/ConstructorNeedsValue.huff +++ /dev/null @@ -1,16 +0,0 @@ - -#define macro CONSTRUCTOR() = takes (0) returns (0) { - callvalue // [msg.value] - iszero // [is_msg_value_zero] - iszero // [is_msg_value_non_zero] - deposited // [deposited_jumpdest, is_msg_value_non_zero] - jumpi // [] - 0x00 0x00 revert - deposited: -} - -#define macro MAIN() = takes (0) returns (0) { - 0x00 calldataload 0xE0 shr - 0x00 mstore - 0x20 0x00 return -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/EVMVersionCheck.huff b/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/EVMVersionCheck.huff deleted file mode 100644 index 960917a32a..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/EVMVersionCheck.huff +++ /dev/null @@ -1,5 +0,0 @@ - - -#define macro MAIN() = { - 0x00 -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/LotsOfLogging.huff b/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/LotsOfLogging.huff deleted file mode 100644 index f2bfe6cbd6..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/LotsOfLogging.huff +++ /dev/null @@ -1,56 +0,0 @@ -/* Events */ -#define event LogOne() -#define event LogTwo(address indexed a) -#define event LogThree(address indexed a, uint256 indexed b) -#define event LogFour(address indexed a, uint256 indexed b, bytes32 indexed c) -#define event Extended(address indexed a, uint256 indexed b, bytes32 indexed h1, bytes32 h2, bytes32 two) - -/* Constructor */ -#define macro CONSTRUCTOR() = takes(0) returns (0) { - // Empty Anonymous Log - // 0x00 0x00 log0 - - // LogOne - __EVENT_HASH(LogOne) // [hash] - 0x00 0x00 log1 // [] - - // LogTwo - caller // [address] - __EVENT_HASH(LogTwo) // [hash, address] - 0x00 0x00 log2 // [] - - // LogThree - selfbalance // [balance] - caller // [address, balance] - __EVENT_HASH(LogThree) // [hash, address, balance] - 0x00 0x00 log3 // [] - - // LogFour - 0x01 0x00 mstore // [] - 0x20 0x00 sha3 // [bytes32_hash] - selfbalance // [balance, bytes32_hash] - caller // [address, balance, bytes32_hash] - __EVENT_HASH(LogFour) // [hash, address, balance, bytes32_hash] - 0x00 0x00 log4 // [] - - // Evented Log - 0x01 0x00 mstore // [] - 0x20 0x00 sha3 // [hash1] - 0x02 0x00 mstore // [hash1] - 0x20 0x00 sha3 // [hash2, hash1] - 0x00 mstore // [hash1] - 0x03 0x20 mstore // [hash1] - 0x20 0x20 sha3 // [two, hash1] - 0x20 mstore // [hash1] - selfbalance // [balance, hash1] - caller // [address, balance, hash1] - __EVENT_HASH(Extended) // [hash, address, balance, hash1] - 0x40 0x00 log4 // [] -} - -/* Main Macro - Does Nothing */ -#define macro MAIN() = takes (0) returns (0) { - 0x00 calldataload 0xE0 shr - 0x00 mstore - 0x20 0x00 return -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/NoConstructor.huff b/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/NoConstructor.huff deleted file mode 100644 index 4bf49c8ba5..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/NoConstructor.huff +++ /dev/null @@ -1,38 +0,0 @@ -/* Interface */ -#define function getArgOne() view returns (address) -#define function getArgTwo() view returns (uint256) - -/* Storage Slots */ -#define constant CONSTRUCTOR_ARG_ONE = FREE_STORAGE_POINTER() -#define constant CONSTRUCTOR_ARG_TWO = FREE_STORAGE_POINTER() - -/* Events */ -#define event ArgumentsUpdated(address indexed one, uint256 indexed two) - -#define constant ARGUMENTS_TOPIC = 0xd0a6a6b9636b3b1e85120bfc8c36f7bc862769b48e0854deaf8780636a71ce7d - -/* First Argument Accessor */ -#define macro GET_ARG_ONE() = takes (0) returns (0) { - [CONSTRUCTOR_ARG_ONE] sload - 0x00 mstore - 0x20 0x00 return -} - -/* Second Argument Accessor */ -#define macro GET_ARG_TWO() = takes (0) returns (0) { - [CONSTRUCTOR_ARG_TWO] sload - 0x00 mstore - 0x20 0x00 return -} - -/* Main Macro */ -#define macro MAIN() = takes (0) returns (0) { - 0x00 calldataload 0xE0 shr - dup1 0xbb01e52d eq arg_one jumpi - dup1 0x98e45be4 eq arg_two jumpi - - arg_one: - GET_ARG_ONE() - arg_two: - GET_ARG_TWO() -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/Number.huff b/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/Number.huff deleted file mode 100644 index d6813e4b18..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/Number.huff +++ /dev/null @@ -1,38 +0,0 @@ -/* Interface */ -#define function setNumber(uint256) nonpayable returns () -#define function getNumber() view returns (uint256) - -/* Storage Slots */ -#define constant NUMBER_LOCATION = FREE_STORAGE_POINTER() - -/* Methods */ -#define macro SET_NUMBER() = takes (0) returns (0) { - 0x04 calldataload // [number] - [NUMBER_LOCATION] // [ptr, number] - sstore // [] -} - -#define macro GET_NUMBER() = takes (0) returns (0) { - // Load number from storage. - [NUMBER_LOCATION] // [ptr] - sload // [number] - - // Store number in memory. - 0x00 mstore - - // Return number - 0x20 0x00 return -} - -#define macro MAIN() = takes (0) returns (0) { - // Identify which function is being called. - 0x00 calldataload 0xE0 shr - dup1 0x3fb5c1cb eq set jumpi - dup1 0xf2c9ecd8 eq get jumpi - - set: - SET_NUMBER() - get: - GET_NUMBER() - -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/RememberCreator.huff b/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/RememberCreator.huff deleted file mode 100644 index cab97c15be..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/contracts/RememberCreator.huff +++ /dev/null @@ -1,24 +0,0 @@ -#define constant CREATOR_SLOT = FREE_STORAGE_POINTER() - -#define function CREATOR() view returns (address) - -#define macro CONSTRUCTOR() = takes(0) returns(0) { - caller [CREATOR_SLOT] sstore -} - -#define macro MAIN() = takes(0) returns(0) { - 0x00 calldataload 0xE0 shr // [selector] - __FUNC_SIG(CREATOR) eq get_creator jumpi - - // no selector matched, revert - base_error: - returndatasize returndatasize revert - - get_creator: - // check no call value - callvalue base_error jumpi - // read and return creator - [CREATOR_SLOT] sload // [creator] - returndatasize mstore // [] - 0x20 returndatasize return -} \ No newline at end of file diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/IConstructor.sol b/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/IConstructor.sol deleted file mode 100644 index c63d409bda..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/IConstructor.sol +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -interface IConstructor { - function getArgOne() external returns (address); - function getArgTwo() external returns (uint256); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/INumber.sol b/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/INumber.sol deleted file mode 100644 index 5fabb79f1d..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/INumber.sol +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -interface INumber { - function setNumber(uint256) external; - function getNumber() external returns (uint256); -} diff --git a/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/IRememberCreator.sol b/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/IRememberCreator.sol deleted file mode 100644 index a9b6ec71d6..0000000000 --- a/packages/wallet-contracts/lib/foundry-huff/src/test/interfaces/IRememberCreator.sol +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.7.0 <0.9.0; - -interface IRememberCreator { - function CREATOR() external view returns (address); -} diff --git a/packages/wallet-contracts/networks/arbitrum.json b/packages/wallet-contracts/networks/arbitrum.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/arbitrum.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/arbitrumGoerli.json b/packages/wallet-contracts/networks/arbitrumGoerli.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/arbitrumGoerli.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/arbitrumNova.json b/packages/wallet-contracts/networks/arbitrumNova.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/arbitrumNova.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/avalanche.json b/packages/wallet-contracts/networks/avalanche.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/avalanche.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/avalancheFuji.json b/packages/wallet-contracts/networks/avalancheFuji.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/avalancheFuji.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/bnb.json b/packages/wallet-contracts/networks/bnb.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/bnb.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/bnbTestnet.json b/packages/wallet-contracts/networks/bnbTestnet.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/bnbTestnet.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/gnosis.json b/packages/wallet-contracts/networks/gnosis.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/gnosis.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/goerli.json b/packages/wallet-contracts/networks/goerli.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/goerli.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/hardhat.json b/packages/wallet-contracts/networks/hardhat.json deleted file mode 100644 index 67df434ce5..0000000000 --- a/packages/wallet-contracts/networks/hardhat.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xE1846F966D116B86d65481Fe81886219D698b60D" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0xB39E1ed61caC9E8eE8CDD3218765cF6a7fE390db" - }, - { - "contractName": "GuestModule", - "address": "0x28Ec0675C7b40ed78EBcBBbDF39e5652c0787B18" - }, - { - "contractName": "SequenceUtils", - "address": "0x4817Fe9f2352E88991A7c84E4385708Ccff05704" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/mainnet.json b/packages/wallet-contracts/networks/mainnet.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/mainnet.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/mumbai.json b/packages/wallet-contracts/networks/mumbai.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/mumbai.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/optimism.json b/packages/wallet-contracts/networks/optimism.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/optimism.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/polygon.json b/packages/wallet-contracts/networks/polygon.json deleted file mode 100644 index c58ed64f4f..0000000000 --- a/packages/wallet-contracts/networks/polygon.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - }, - { - "contractName": "TrustFactory", - "address": "0x4483FaA9dEEDd6D6FaCFee9c686f1E394A1280f9" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/networks/polygonZkevm.json b/packages/wallet-contracts/networks/polygonZkevm.json deleted file mode 100644 index d927325022..0000000000 --- a/packages/wallet-contracts/networks/polygonZkevm.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "contractName": "WalletFactory", - "address": "0xFaA5c0b14d1bED5C888Ca655B9a8A5911F78eF4A" - }, - { - "contractName": "MainModule", - "address": "0xfBf8f1A5E00034762D928f46d438B947f5d4065d" - }, - { - "contractName": "MainModuleUpgradable", - "address": "0x4222dcA3974E39A8b41c411FeDDE9b09Ae14b911" - }, - { - "contractName": "GuestModule", - "address": "0xfea230Ee243f88BC698dD8f1aE93F8301B6cdfaE" - }, - { - "contractName": "SequenceUtils", - "address": "0xdbbFa3cB3B087B64F4ef5E3D20Dda2488AA244e6" - } -] \ No newline at end of file diff --git a/packages/wallet-contracts/package-lock.json b/packages/wallet-contracts/package-lock.json deleted file mode 100644 index a4413c31c8..0000000000 --- a/packages/wallet-contracts/package-lock.json +++ /dev/null @@ -1,23598 +0,0 @@ -{ - "name": "@0xsequence/wallet-contracts", - "version": "3.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@0xsequence/wallet-contracts", - "version": "3.0.1", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/wallet": "^2.3.33", - "@typechain/ethers-v6": "^0.5.1", - "0xsequence": "^1.10.15", - "ethers": "^6.15.0", - "keccak256": "^1.0.6" - }, - "devDependencies": { - "@nomicfoundation/hardhat-ethers": "^4.0.3", - "@nomicfoundation/hardhat-verify": "^3.0.7", - "@nomiclabs/hardhat-truffle5": "^2.1.0", - "@nomiclabs/hardhat-web3": "^2.1.0", - "@tenderly/hardhat-tenderly": "^2.3.0", - "@types/chai": "^4.3.20", - "@types/chai-as-promised": "^7.1.8", - "@types/chai-string": "^1.4.5", - "@types/mocha": "^8.2.3", - "@typescript-eslint/eslint-plugin": "^8.46.4", - "@typescript-eslint/parser": "^8.46.4", - "bn-chai": "^1.0.1", - "chai": "^4.5.0", - "chai-as-promised": "^7.1.2", - "chai-bignumber": "^3.1.0", - "chai-shallow-deep-equal": "^1.4.6", - "chai-string": "^1.6.0", - "child_process": "^1.0.2", - "dotenv": "^8.6.0", - "eslint": "^9.39.1", - "eslint-config-prettier": "^8.10.2", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-prettier": "^3.4.1", - "ethereum-waffle": "^4.0.10", - "ganache-cli": "6.12.2", - "hardhat": "^2.27.0", - "hardhat-gas-reporter": "1.0.10", - "husky": "^9.1.7", - "ora": "^5.4.1", - "rimraf": "^3.0.2", - "scrypt": "github:barrysteyn/node-scrypt#fb60a8d3c158fe115a624b5ffa7480f3a24b03fb", - "solhint": "^3.6.2", - "solidity-coverage": "^0.7.22", - "threads": "^1.7.0", - "ts-node": "^10.9.2", - "typechain": "^8.3.2", - "typescript": "^4.9.5", - "yesno": "^0.3.1" - } - }, - "node_modules/@0xsequence/abi": { - "version": "2.3.33", - "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-2.3.33.tgz", - "integrity": "sha512-SSkzgtcsludAzXAVhTRlgxjTSKtqdpnqX2uivomRN9FFEIfKjOzNtSN7LmGA+nhEF9fW6ILAAJfIhjZgmMNz9w==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/account": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/account/-/account-1.10.15.tgz", - "integrity": "sha512-NJhnOKWSRMj5YuI58HFTf3gC2Ld0FvUw6DUTikpF8JTx3xExWjafz5PJrQkJ/SpIYvS5GQJTB0Hjx6d6j1/dSQ==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/migration": "1.10.15", - "@0xsequence/network": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/sessions": "1.10.15", - "@0xsequence/utils": "1.10.15", - "@0xsequence/wallet": "1.10.15", - "ethers": "^5.5.2" - } - }, - "node_modules/@0xsequence/account/node_modules/@0xsequence/abi": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-1.10.15.tgz", - "integrity": "sha512-nuh68P8tRDzIMIH7mnGX1Eab0jsYVGhZa7IlNIs8CfTnGoanxLS+MGk5ioZBa6+slzxb9VP8mnQ5QhAWeFySeg==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/account/node_modules/@0xsequence/core": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/core/-/core-1.10.15.tgz", - "integrity": "sha512-wrE5soJSqrhhm7pC+NxckLR0lJSOnsHPLKdDqWeTRmyuhtZ4e0DsrcoeoD40I/3Bd77tdZ1GGbq00CryV7JfFw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5" - } - }, - "node_modules/@0xsequence/account/node_modules/@0xsequence/indexer": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/indexer/-/indexer-1.10.15.tgz", - "integrity": "sha512-bc2gAIEplMcmWJMwLuXZZ0wifoxuV/zHyWzEdbQ5+9ruIXArxyoG0Ue9fMEzKWHfsAWyBKBJCCFbr4XJEQ5YjA==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/account/node_modules/@0xsequence/network": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/network/-/network-1.10.15.tgz", - "integrity": "sha512-wHp8RGqFrncuoIh0ityO/jUobliargQ7SWlvZCf8Ez0T7uiXDEDokrFSN2F9FIl6i5a5NmcEpXhfhwS/L0pN2w==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "1.10.15", - "@0xsequence/indexer": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/account/node_modules/@0xsequence/relayer": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/relayer/-/relayer-1.10.15.tgz", - "integrity": "sha512-QpNAzRjqCl9xJdXzErQA0kmv2jzEXPfVlPwutbgmrCEIj+rHdw3M+kiG0MWBnOqxoSEA98oJnxXmpBL5mkCA6g==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/account/node_modules/@0xsequence/signhub": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/signhub/-/signhub-1.10.15.tgz", - "integrity": "sha512-9yZWb8d2aXoWOQp0XC81hkS+hLWxO/pZIyCRtNVdif0/SPA86v6e96xPmuj45KONYgiH33ROVDpeJEKhOEo0jg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "1.10.15", - "ethers": "^5.5.2" - } - }, - "node_modules/@0xsequence/account/node_modules/@0xsequence/utils": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/utils/-/utils-1.10.15.tgz", - "integrity": "sha512-LIrQS5J+3MOER+i7ajX7fiT6ga3QoDf8wsi5KY/2eFZS39sbCXGzg1ORxjtee++c/S/h4nuRYX1IRuseGYJWPw==", - "license": "Apache-2.0", - "dependencies": { - "js-base64": "^3.7.2" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/account/node_modules/@0xsequence/wallet": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/wallet/-/wallet-1.10.15.tgz", - "integrity": "sha512-UhaIaiK3IF+bv1flg/N1yuGPZXos/orJlwAd9GbPDHOIBqkBsniyraDcO+xwBKWMBHhQL6NqfSDI9j/Zxv7ocg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/network": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/signhub": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/account/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/@0xsequence/api": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/api/-/api-1.10.15.tgz", - "integrity": "sha512-FHzJLsOF/RU66pndfFP38yqLIaNiy46uv4f6DsJvnFSoHYfbkZjpx5m+M+vig0oN6RhtqU+sKL78z1IYF6JTkA==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/core": { - "version": "2.3.33", - "resolved": "https://registry.npmjs.org/@0xsequence/core/-/core-2.3.33.tgz", - "integrity": "sha512-P0xkHk7GelGOlW6lW+d1AnnK2PbBfamiC02l2ms5M1hxYZ7LJmam1yb9zDRRiaWoPSpKJruArzQV9RlgY3W3xw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "2.3.33", - "@0xsequence/utils": "2.3.33" - }, - "peerDependencies": { - "ethers": ">=6" - } - }, - "node_modules/@0xsequence/ethauth": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@0xsequence/ethauth/-/ethauth-0.8.1.tgz", - "integrity": "sha512-P21cxRSS+2mDAqFVAJt0lwQFtbObX+Ewlj8DMyDELp81+QbfHFh6LCyu8dTXNdBx6UbmRFOCSBno5Txd50cJPQ==", - "license": "MIT", - "dependencies": { - "js-base64": "^3.7.2" - }, - "peerDependencies": { - "ethers": ">=5.5" - } - }, - "node_modules/@0xsequence/guard": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/guard/-/guard-1.10.15.tgz", - "integrity": "sha512-YrHIrOXDGn+xOUcA7DI+ROW42cJqiL9WVaLKGAaGwjHLz/QKLiH1MmECWJMM76JczjA6Th8G9YZUFwO99Cpzpg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/account": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/signhub": "1.10.15", - "@0xsequence/utils": "1.10.15", - "ethers": "^5.7.2" - } - }, - "node_modules/@0xsequence/guard/node_modules/@0xsequence/abi": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-1.10.15.tgz", - "integrity": "sha512-nuh68P8tRDzIMIH7mnGX1Eab0jsYVGhZa7IlNIs8CfTnGoanxLS+MGk5ioZBa6+slzxb9VP8mnQ5QhAWeFySeg==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/guard/node_modules/@0xsequence/core": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/core/-/core-1.10.15.tgz", - "integrity": "sha512-wrE5soJSqrhhm7pC+NxckLR0lJSOnsHPLKdDqWeTRmyuhtZ4e0DsrcoeoD40I/3Bd77tdZ1GGbq00CryV7JfFw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5" - } - }, - "node_modules/@0xsequence/guard/node_modules/@0xsequence/signhub": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/signhub/-/signhub-1.10.15.tgz", - "integrity": "sha512-9yZWb8d2aXoWOQp0XC81hkS+hLWxO/pZIyCRtNVdif0/SPA86v6e96xPmuj45KONYgiH33ROVDpeJEKhOEo0jg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "1.10.15", - "ethers": "^5.5.2" - } - }, - "node_modules/@0xsequence/guard/node_modules/@0xsequence/utils": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/utils/-/utils-1.10.15.tgz", - "integrity": "sha512-LIrQS5J+3MOER+i7ajX7fiT6ga3QoDf8wsi5KY/2eFZS39sbCXGzg1ORxjtee++c/S/h4nuRYX1IRuseGYJWPw==", - "license": "Apache-2.0", - "dependencies": { - "js-base64": "^3.7.2" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/guard/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/@0xsequence/indexer": { - "version": "2.3.33", - "resolved": "https://registry.npmjs.org/@0xsequence/indexer/-/indexer-2.3.33.tgz", - "integrity": "sha512-GjS6he4bKl3LtT9mZ/hFUVMTK3wzr54s5STf1Mi4wsfVk5nmkggJPWmnCbBJvQyAWt1uLjSDZSN00/Esl17thQ==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/metadata": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/metadata/-/metadata-1.10.15.tgz", - "integrity": "sha512-eakkeV4ZtSkyo80JglSUdkUwOjYHAO5udCYAet6ekzHYgiF62dS9WcJdrrWkE2umAXn1sF94tQHf/OFZJGWwIg==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/migration": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/migration/-/migration-1.10.15.tgz", - "integrity": "sha512-muZllmKQOz3yEyJULrhDpycpML2IOH+KJiBN70reKPoMm/pxx/B4v4PAFOkd3oZ1ynSqcF0TkHqGmeyf5/SZ3g==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/wallet": "1.10.15", - "ethers": "^5.5.2" - } - }, - "node_modules/@0xsequence/migration/node_modules/@0xsequence/abi": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-1.10.15.tgz", - "integrity": "sha512-nuh68P8tRDzIMIH7mnGX1Eab0jsYVGhZa7IlNIs8CfTnGoanxLS+MGk5ioZBa6+slzxb9VP8mnQ5QhAWeFySeg==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/migration/node_modules/@0xsequence/core": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/core/-/core-1.10.15.tgz", - "integrity": "sha512-wrE5soJSqrhhm7pC+NxckLR0lJSOnsHPLKdDqWeTRmyuhtZ4e0DsrcoeoD40I/3Bd77tdZ1GGbq00CryV7JfFw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5" - } - }, - "node_modules/@0xsequence/migration/node_modules/@0xsequence/indexer": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/indexer/-/indexer-1.10.15.tgz", - "integrity": "sha512-bc2gAIEplMcmWJMwLuXZZ0wifoxuV/zHyWzEdbQ5+9ruIXArxyoG0Ue9fMEzKWHfsAWyBKBJCCFbr4XJEQ5YjA==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/migration/node_modules/@0xsequence/network": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/network/-/network-1.10.15.tgz", - "integrity": "sha512-wHp8RGqFrncuoIh0ityO/jUobliargQ7SWlvZCf8Ez0T7uiXDEDokrFSN2F9FIl6i5a5NmcEpXhfhwS/L0pN2w==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "1.10.15", - "@0xsequence/indexer": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/migration/node_modules/@0xsequence/relayer": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/relayer/-/relayer-1.10.15.tgz", - "integrity": "sha512-QpNAzRjqCl9xJdXzErQA0kmv2jzEXPfVlPwutbgmrCEIj+rHdw3M+kiG0MWBnOqxoSEA98oJnxXmpBL5mkCA6g==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/migration/node_modules/@0xsequence/signhub": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/signhub/-/signhub-1.10.15.tgz", - "integrity": "sha512-9yZWb8d2aXoWOQp0XC81hkS+hLWxO/pZIyCRtNVdif0/SPA86v6e96xPmuj45KONYgiH33ROVDpeJEKhOEo0jg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "1.10.15", - "ethers": "^5.5.2" - } - }, - "node_modules/@0xsequence/migration/node_modules/@0xsequence/utils": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/utils/-/utils-1.10.15.tgz", - "integrity": "sha512-LIrQS5J+3MOER+i7ajX7fiT6ga3QoDf8wsi5KY/2eFZS39sbCXGzg1ORxjtee++c/S/h4nuRYX1IRuseGYJWPw==", - "license": "Apache-2.0", - "dependencies": { - "js-base64": "^3.7.2" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/migration/node_modules/@0xsequence/wallet": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/wallet/-/wallet-1.10.15.tgz", - "integrity": "sha512-UhaIaiK3IF+bv1flg/N1yuGPZXos/orJlwAd9GbPDHOIBqkBsniyraDcO+xwBKWMBHhQL6NqfSDI9j/Zxv7ocg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/network": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/signhub": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/@0xsequence/migration/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/@0xsequence/network": { - "version": "2.3.33", - "resolved": "https://registry.npmjs.org/@0xsequence/network/-/network-2.3.33.tgz", - "integrity": "sha512-0sTGguIitsGcjz6nlFBQBPhowC55RlO4UR8zKdFbukIfleTgAxbnyKDxp0apQhj229PeUK0BMyVeLei0b7EHjg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "2.3.33", - "@0xsequence/indexer": "2.3.33", - "@0xsequence/relayer": "2.3.33", - "@0xsequence/utils": "2.3.33" - }, - "peerDependencies": { - "ethers": ">=6" - } - }, - "node_modules/@0xsequence/relayer": { - "version": "2.3.33", - "resolved": "https://registry.npmjs.org/@0xsequence/relayer/-/relayer-2.3.33.tgz", - "integrity": "sha512-vHHi6pSstBomaM+GZwaj0FNlIbtcLfr89gSUpIIyrsIETWA0CeWbvLs0K02TeDPUiC0z2fh3Yi0bA77yv/gZFw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "2.3.33", - "@0xsequence/core": "2.3.33", - "@0xsequence/utils": "2.3.33" - }, - "peerDependencies": { - "ethers": ">=6" - } - }, - "node_modules/@0xsequence/replacer": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/replacer/-/replacer-1.10.15.tgz", - "integrity": "sha512-ZV9cl/oDqCZf0cJUclGqTWY8iGuvGrXzUBT2w1AvneuQWjqYWIEzvXRBnscHVEtTEdOIV9sqBaC0MiK0TedC8Q==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5" - } - }, - "node_modules/@0xsequence/replacer/node_modules/@0xsequence/abi": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-1.10.15.tgz", - "integrity": "sha512-nuh68P8tRDzIMIH7mnGX1Eab0jsYVGhZa7IlNIs8CfTnGoanxLS+MGk5ioZBa6+slzxb9VP8mnQ5QhAWeFySeg==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/replacer/node_modules/@0xsequence/core": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/core/-/core-1.10.15.tgz", - "integrity": "sha512-wrE5soJSqrhhm7pC+NxckLR0lJSOnsHPLKdDqWeTRmyuhtZ4e0DsrcoeoD40I/3Bd77tdZ1GGbq00CryV7JfFw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5" - } - }, - "node_modules/@0xsequence/sessions": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/sessions/-/sessions-1.10.15.tgz", - "integrity": "sha512-Zack16p3p92sO3ZFfZFz9Fa9Nlkxkt3ew48xnsnN3P3XCJFLX+MM7hoNOpkS3yQFVEb5QDhYrrAfE019U5hgww==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "1.10.15", - "@0xsequence/migration": "1.10.15", - "@0xsequence/replacer": "1.10.15", - "ethers": "^5.5.2", - "idb": "^7.1.1" - } - }, - "node_modules/@0xsequence/sessions/node_modules/@0xsequence/abi": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-1.10.15.tgz", - "integrity": "sha512-nuh68P8tRDzIMIH7mnGX1Eab0jsYVGhZa7IlNIs8CfTnGoanxLS+MGk5ioZBa6+slzxb9VP8mnQ5QhAWeFySeg==", - "license": "Apache-2.0" - }, - "node_modules/@0xsequence/sessions/node_modules/@0xsequence/core": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/core/-/core-1.10.15.tgz", - "integrity": "sha512-wrE5soJSqrhhm7pC+NxckLR0lJSOnsHPLKdDqWeTRmyuhtZ4e0DsrcoeoD40I/3Bd77tdZ1GGbq00CryV7JfFw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5" - } - }, - "node_modules/@0xsequence/sessions/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/@0xsequence/signhub": { - "version": "2.3.33", - "resolved": "https://registry.npmjs.org/@0xsequence/signhub/-/signhub-2.3.33.tgz", - "integrity": "sha512-Ve3gvn6dzXRVdd2eEfCoL3UvehxKbEtYcpxNnX/7CxcvGU5a61Ol7WkM4tKScz1zc6AMdX8YE2C7VDN46ew0/Q==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "2.3.33" - }, - "peerDependencies": { - "ethers": ">=6" - } - }, - "node_modules/@0xsequence/utils": { - "version": "2.3.33", - "resolved": "https://registry.npmjs.org/@0xsequence/utils/-/utils-2.3.33.tgz", - "integrity": "sha512-qaPlV5oMaJKIf1j4GVYoN2OthoL9EVgblglUJIKp3/Tgfs0B85GOxc92BCSjLRn7NYzaW9P5FIsDAcCQifQdDQ==", - "license": "Apache-2.0", - "dependencies": { - "js-base64": "^3.7.2" - }, - "peerDependencies": { - "ethers": ">=6" - } - }, - "node_modules/@0xsequence/wallet": { - "version": "2.3.33", - "resolved": "https://registry.npmjs.org/@0xsequence/wallet/-/wallet-2.3.33.tgz", - "integrity": "sha512-jl5zrnvcqr9f4pNtP7q63rf0FPe7noC6hVn0eTaO8YXDy9a/8rkkhstcTLYQFdNhii7XMY85kJcmBb4ws7EglA==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "2.3.33", - "@0xsequence/core": "2.3.33", - "@0xsequence/network": "2.3.33", - "@0xsequence/relayer": "2.3.33", - "@0xsequence/signhub": "2.3.33", - "@0xsequence/utils": "2.3.33" - }, - "peerDependencies": { - "ethers": ">=6" - } - }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "license": "MIT" - }, - "node_modules/@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.932.0.tgz", - "integrity": "sha512-C7XVPe2XI8An6HgCv6RmoIp9ShdUVqcNFKzdu+HGcxCHZhqg5kvvWjfG0nJuI+CarwBUQqxYdwnBWSrZaBMuYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.932.0", - "@aws-sdk/credential-provider-node": "3.932.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.932.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.932.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/eventstream-serde-browser": "^4.2.5", - "@smithy/eventstream-serde-config-resolver": "^4.3.5", - "@smithy/eventstream-serde-node": "^4.2.5", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.932.0.tgz", - "integrity": "sha512-XHqHa5iv2OQsKoM2tUQXs7EAyryploC00Wg0XSFra/KAKqyGizUb5XxXsGlyqhebB29Wqur+zwiRwNmejmN0+Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.932.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.932.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.932.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/core": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.932.0.tgz", - "integrity": "sha512-AS8gypYQCbNojwgjvZGkJocC2CoEICDx9ZJ15ILsv+MlcCVLtUJSRSx3VzJOUY2EEIaGLRrPNlIqyn/9/fySvA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.930.0", - "@aws-sdk/xml-builder": "3.930.0", - "@smithy/core": "^3.18.2", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.932.0.tgz", - "integrity": "sha512-ozge/c7NdHUDyHqro6+P5oHt8wfKSUBN+olttiVfBe9Mw3wBMpPa3gQ0pZnG+gwBkKskBuip2bMR16tqYvUSEA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.932.0.tgz", - "integrity": "sha512-b6N9Nnlg8JInQwzBkUq5spNaXssM3h3zLxGzpPrnw0nHSIWPJPTbZzA5Ca285fcDUFuKP+qf3qkuqlAjGOdWhg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/util-stream": "^4.5.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.932.0.tgz", - "integrity": "sha512-ZBjSAXVGy7danZRHCRMJQ7sBkG1Dz39thYlvTiUaf9BKZ+8ymeiFhuTeV1OkWUBBnY0ki2dVZJvboTqfINhNxA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.932.0", - "@aws-sdk/credential-provider-env": "3.932.0", - "@aws-sdk/credential-provider-http": "3.932.0", - "@aws-sdk/credential-provider-process": "3.932.0", - "@aws-sdk/credential-provider-sso": "3.932.0", - "@aws-sdk/credential-provider-web-identity": "3.932.0", - "@aws-sdk/nested-clients": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.932.0.tgz", - "integrity": "sha512-SEG9t2taBT86qe3gTunfrK8BxT710GVLGepvHr+X5Pw+qW225iNRaGN0zJH+ZE/j91tcW9wOaIoWnURkhR5wIg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.932.0", - "@aws-sdk/credential-provider-http": "3.932.0", - "@aws-sdk/credential-provider-ini": "3.932.0", - "@aws-sdk/credential-provider-process": "3.932.0", - "@aws-sdk/credential-provider-sso": "3.932.0", - "@aws-sdk/credential-provider-web-identity": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.932.0.tgz", - "integrity": "sha512-BodZYKvT4p/Dkm28Ql/FhDdS1+p51bcZeMMu2TRtU8PoMDHnVDhHz27zASEKSZwmhvquxHrZHB0IGuVqjZUtSQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.932.0.tgz", - "integrity": "sha512-XYmkv+ltBjjmPZ6AmR1ZQZkQfD0uzG61M18/Lif3HAGxyg3dmod0aWx9aL6lj9SvxAGqzscrx5j4PkgLqjZruw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.932.0", - "@aws-sdk/core": "3.932.0", - "@aws-sdk/token-providers": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.932.0.tgz", - "integrity": "sha512-Yw/hYNnC1KHuVIQF9PkLXbuKN7ljx70OSbJYDRufllQvej3kRwNcqQSnzI1M4KaObccqKaE6srg22DqpPy9p8w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.932.0", - "@aws-sdk/nested-clients": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.930.0.tgz", - "integrity": "sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.930.0.tgz", - "integrity": "sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.930.0.tgz", - "integrity": "sha512-gv0sekNpa2MBsIhm2cjP3nmYSfI4nscx/+K9u9ybrWZBWUIC4kL2sV++bFjjUz4QxUIlvKByow3/a9ARQyCu7Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.930.0", - "@aws/lambda-invoke-store": "^0.1.1", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.932.0.tgz", - "integrity": "sha512-9BGTbJyA/4PTdwQWE9hAFIJGpsYkyEW20WON3i15aDqo5oRZwZmqaVageOD57YYqG8JDJjvcwKyDdR4cc38dvg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@smithy/core": "^3.18.2", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.932.0.tgz", - "integrity": "sha512-E2ucBfiXSpxZflHTf3UFbVwao4+7v7ctAeg8SWuglc1UMqMlpwMFFgWiSONtsf0SR3+ZDoWGATyCXOfDWerJuw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.932.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.932.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.932.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.930.0.tgz", - "integrity": "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.932.0.tgz", - "integrity": "sha512-43u82ulVuHK4zWhcSPyuPS18l0LNHi3QJQ1YtP2MfP8bPf5a6hMYp5e3lUr9oTDEWcpwBYtOW0m1DVmoU/3veA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.932.0", - "@aws-sdk/nested-clients": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/types": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.930.0.tgz", - "integrity": "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.930.0.tgz", - "integrity": "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-endpoints": "^3.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", - "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.930.0.tgz", - "integrity": "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.932.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.932.0.tgz", - "integrity": "sha512-/kC6cscHrZL74TrZtgiIL5jJNbVsw9duGGPurmaVgoCbP7NnxyaSWEurbNV3VPNPhNE3bV3g4Ci+odq+AlsYQg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "3.932.0", - "@aws-sdk/types": "3.930.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - } - }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", - "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "fast-xml-parser": "5.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws/lambda-invoke-store": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz", - "integrity": "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", - "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bytecodealliance/preview2-shim": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.17.0.tgz", - "integrity": "sha512-JorcEwe4ud0x5BS/Ar2aQWOQoFzjq/7jcnxYXCvSMh0oRm0dQXzOA+hqLDBnOMks1LLBA7dmiLLsEBl09Yd6iQ==", - "dev": true, - "license": "(Apache-2.0 WITH LLVM-exception)" - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@databeat/tracker": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@databeat/tracker/-/tracker-0.9.3.tgz", - "integrity": "sha512-eGsiNU/CRFujcNtUUqvBiqveCs6S6SiAhalXPDodbk74d3FzvLqHDn5k6WfOEJIhrP3CbYgfMXL0nk51s/rQsg==", - "license": "Apache 2.0", - "dependencies": { - "@noble/hashes": "^1.5.0" - } - }, - "node_modules/@databeat/tracker/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ensdomains/address-encoder": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz", - "integrity": "sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==", - "dev": true, - "license": "BSD", - "dependencies": { - "bech32": "^1.1.3", - "blakejs": "^1.1.0", - "bn.js": "^4.11.8", - "bs58": "^4.0.1", - "crypto-addr-codec": "^0.1.7", - "nano-base32": "^1.0.1", - "ripemd160": "^2.0.2" - } - }, - "node_modules/@ensdomains/address-encoder/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ensdomains/ens": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", - "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", - "deprecated": "Please use @ensdomains/ens-contracts", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "bluebird": "^3.5.2", - "eth-ens-namehash": "^2.0.8", - "solc": "^0.4.20", - "testrpc": "0.0.1", - "web3-utils": "^1.0.0-beta.31" - } - }, - "node_modules/@ensdomains/ensjs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz", - "integrity": "sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==", - "dev": true, - "license": "ISC", - "dependencies": { - "@babel/runtime": "^7.4.4", - "@ensdomains/address-encoder": "^0.1.7", - "@ensdomains/ens": "0.4.5", - "@ensdomains/resolver": "0.2.4", - "content-hash": "^2.5.2", - "eth-ens-namehash": "^2.0.8", - "ethers": "^5.0.13", - "js-sha3": "^0.8.0" - } - }, - "node_modules/@ensdomains/ensjs/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/@ensdomains/resolver": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", - "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", - "deprecated": "Please use @ensdomains/ens-contracts", - "dev": true - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", - "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@ethereum-waffle/chai": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-4.0.10.tgz", - "integrity": "sha512-X5RepE7Dn8KQLFO7HHAAe+KeGaX/by14hn90wePGBhzL54tq4Y8JscZFu+/LCwCl6TnkAAy5ebiMoqJ37sFtWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethereum-waffle/provider": "4.0.5", - "debug": "^4.3.4", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*" - } - }, - "node_modules/@ethereum-waffle/compiler": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-4.0.3.tgz", - "integrity": "sha512-5x5U52tSvEVJS6dpCeXXKvRKyf8GICDwiTwUvGD3/WD+DpvgvaoHOL82XqpTSUHgV3bBq6ma5/8gKUJUIAnJCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@resolver-engine/imports": "^0.3.3", - "@resolver-engine/imports-fs": "^0.3.3", - "@typechain/ethers-v5": "^10.0.0", - "@types/mkdirp": "^0.5.2", - "@types/node-fetch": "^2.6.1", - "mkdirp": "^0.5.1", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*", - "solc": "*", - "typechain": "^8.0.0" - } - }, - "node_modules/@ethereum-waffle/compiler/node_modules/@typechain/ethers-v5": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", - "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - }, - "peerDependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "ethers": "^5.1.3", - "typechain": "^8.1.1", - "typescript": ">=4.3.0" - } - }, - "node_modules/@ethereum-waffle/ens": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-4.0.3.tgz", - "integrity": "sha512-PVLcdnTbaTfCrfSOrvtlA9Fih73EeDvFS28JQnT5M5P4JMplqmchhcZB1yg/fCtx4cvgHlZXa0+rOCAk2Jk0Jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "@ensdomains/ens": "^0.4.4", - "@ensdomains/resolver": "^0.2.4", - "ethers": "*" - } - }, - "node_modules/@ethereum-waffle/mock-contract": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-4.0.4.tgz", - "integrity": "sha512-LwEj5SIuEe9/gnrXgtqIkWbk2g15imM/qcJcxpLyAkOj981tQxXmtV4XmQMZsdedEsZ/D/rbUAOtZbgwqgUwQA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*" - } - }, - "node_modules/@ethereum-waffle/provider": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-4.0.5.tgz", - "integrity": "sha512-40uzfyzcrPh+Gbdzv89JJTMBlZwzya1YLDyim8mVbEqYLP5VRYWoGp0JMyaizgV3hMoUFRqJKVmIUw4v7r3hYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethereum-waffle/ens": "4.0.3", - "@ganache/ethereum-options": "0.1.4", - "debug": "^4.3.4", - "ganache": "7.4.3" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*" - } - }, - "node_modules/@ethereumjs/block": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.6.3.tgz", - "integrity": "sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^2.6.5", - "@ethereumjs/tx": "^3.5.2", - "ethereumjs-util": "^7.1.5", - "merkle-patricia-tree": "^4.2.4" - } - }, - "node_modules/@ethereumjs/blockchain": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz", - "integrity": "sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/block": "^3.6.2", - "@ethereumjs/common": "^2.6.4", - "@ethereumjs/ethash": "^1.1.0", - "debug": "^4.3.3", - "ethereumjs-util": "^7.1.5", - "level-mem": "^5.0.1", - "lru-cache": "^5.1.1", - "semaphore-async-await": "^1.5.1" - } - }, - "node_modules/@ethereumjs/common": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", - "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.5" - } - }, - "node_modules/@ethereumjs/ethash": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.1.0.tgz", - "integrity": "sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/block": "^3.5.0", - "@types/levelup": "^4.3.0", - "buffer-xor": "^2.0.1", - "ethereumjs-util": "^7.1.1", - "miller-rabin": "^4.0.0" - } - }, - "node_modules/@ethereumjs/ethash/node_modules/buffer-xor": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", - "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.1" - } - }, - "node_modules/@ethereumjs/rlp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", - "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", - "dev": true, - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp.cjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/tx": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", - "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^2.6.4", - "ethereumjs-util": "^7.1.5" - } - }, - "node_modules/@ethereumjs/util": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz", - "integrity": "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^5.0.2", - "ethereum-cryptography": "^2.2.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/util/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/@ethereumjs/vm": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.6.0.tgz", - "integrity": "sha512-J2m/OgjjiGdWF2P9bj/4LnZQ1zRoZhY8mRNVw/N3tXliGI8ai1sI1mlDPkLpeUUM4vq54gH6n0ZlSpz8U/qlYQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/block": "^3.6.0", - "@ethereumjs/blockchain": "^5.5.0", - "@ethereumjs/common": "^2.6.0", - "@ethereumjs/tx": "^3.4.0", - "async-eventemitter": "^0.2.4", - "core-js-pure": "^3.0.1", - "debug": "^2.2.0", - "ethereumjs-util": "^7.1.3", - "functional-red-black-tree": "^1.0.1", - "mcl-wasm": "^0.7.1", - "merkle-patricia-tree": "^4.2.2", - "rustbn.js": "~0.2.0" - } - }, - "node_modules/@ethereumjs/vm/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@ethereumjs/vm/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ethersproject/abi": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", - "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", - "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/networks": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/web": "^5.8.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", - "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", - "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/rlp": "^5.8.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", - "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", - "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/properties": "^5.8.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", - "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", - "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", - "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", - "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^5.8.0", - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/transactions": "^5.8.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", - "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/base64": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", - "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/basex": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/pbkdf2": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/wordlists": "^5.8.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", - "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hdnode": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/pbkdf2": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "license": "MIT" - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", - "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", - "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" - }, - "node_modules/@ethersproject/networks": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", - "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", - "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/sha2": "^5.8.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", - "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", - "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/base64": "^5.8.0", - "@ethersproject/basex": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/networks": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/rlp": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/web": "^5.8.0", - "bech32": "1.1.4", - "ws": "8.18.0" - } - }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@ethersproject/random": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", - "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", - "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", - "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", - "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "bn.js": "^5.2.1", - "elliptic": "6.6.1", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", - "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/strings": "^5.8.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", - "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", - "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/rlp": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", - "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", - "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/hdnode": "^5.8.0", - "@ethersproject/json-wallets": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/wordlists": "^5.8.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", - "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/base64": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", - "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@ganache/ethereum-address": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-address/-/ethereum-address-0.1.4.tgz", - "integrity": "sha512-sTkU0M9z2nZUzDeHRzzGlW724xhMLXo2LeX1hixbnjHWY1Zg1hkqORywVfl+g5uOO8ht8T0v+34IxNxAhmWlbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ganache/utils": "0.1.4" - } - }, - "node_modules/@ganache/ethereum-options": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-options/-/ethereum-options-0.1.4.tgz", - "integrity": "sha512-i4l46taoK2yC41FPkcoDlEVoqHS52wcbHPqJtYETRWqpOaoj9hAg/EJIHLb1t6Nhva2CdTO84bG+qlzlTxjAHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ganache/ethereum-address": "0.1.4", - "@ganache/ethereum-utils": "0.1.4", - "@ganache/options": "0.1.4", - "@ganache/utils": "0.1.4", - "bip39": "3.0.4", - "seedrandom": "3.0.5" - } - }, - "node_modules/@ganache/ethereum-utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/ethereum-utils/-/ethereum-utils-0.1.4.tgz", - "integrity": "sha512-FKXF3zcdDrIoCqovJmHLKZLrJ43234Em2sde/3urUT/10gSgnwlpFmrv2LUMAmSbX3lgZhW/aSs8krGhDevDAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethereumjs/common": "2.6.0", - "@ethereumjs/tx": "3.4.0", - "@ethereumjs/vm": "5.6.0", - "@ganache/ethereum-address": "0.1.4", - "@ganache/rlp": "0.1.4", - "@ganache/utils": "0.1.4", - "emittery": "0.10.0", - "ethereumjs-abi": "0.6.8", - "ethereumjs-util": "7.1.3" - } - }, - "node_modules/@ganache/ethereum-utils/node_modules/@ethereumjs/common": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.0.tgz", - "integrity": "sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.3" - } - }, - "node_modules/@ganache/ethereum-utils/node_modules/@ethereumjs/tx": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.4.0.tgz", - "integrity": "sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^2.6.0", - "ethereumjs-util": "^7.1.3" - } - }, - "node_modules/@ganache/ethereum-utils/node_modules/ethereumjs-util": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz", - "integrity": "sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ganache/options": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/options/-/options-0.1.4.tgz", - "integrity": "sha512-zAe/craqNuPz512XQY33MOAG6Si1Xp0hCvfzkBfj2qkuPcbJCq6W/eQ5MB6SbXHrICsHrZOaelyqjuhSEmjXRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ganache/utils": "0.1.4", - "bip39": "3.0.4", - "seedrandom": "3.0.5" - } - }, - "node_modules/@ganache/rlp": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/rlp/-/rlp-0.1.4.tgz", - "integrity": "sha512-Do3D1H6JmhikB+6rHviGqkrNywou/liVeFiKIpOBLynIpvZhRCgn3SEDxyy/JovcaozTo/BynHumfs5R085MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ganache/utils": "0.1.4", - "rlp": "2.2.6" - } - }, - "node_modules/@ganache/rlp/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ganache/rlp/node_modules/rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "bn.js": "^4.11.1" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/@ganache/utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ganache/utils/-/utils-0.1.4.tgz", - "integrity": "sha512-oatUueU3XuXbUbUlkyxeLLH3LzFZ4y5aSkNbx6tjSIhVTPeh+AuBKYt4eQ73FFcTB3nj/gZoslgAh5CN7O369w==", - "dev": true, - "license": "MIT", - "dependencies": { - "emittery": "0.10.0", - "keccak": "3.0.1", - "seedrandom": "3.0.5" - }, - "optionalDependencies": { - "@trufflesuite/bigint-buffer": "1.1.9" - } - }, - "node_modules/@ganache/utils/node_modules/keccak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", - "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nomicfoundation/edr": { - "version": "0.12.0-next.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.15.tgz", - "integrity": "sha512-JMLvnro2cxSq1h/A2WYo018o5R4ns7ut/A6WoiBfXKDj/OSN8mRnEpDaICIrk6fopbAfMi6MmP8TQefDs+lKAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.15", - "@nomicfoundation/edr-darwin-x64": "0.12.0-next.15", - "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.15", - "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.15", - "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.15", - "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.15", - "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.15" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.12.0-next.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.15.tgz", - "integrity": "sha512-y/Z7fOaPxLzYTFDwWE/s4TIxvgq2cQhs6HKKh7+aJSQ6RxKrja5iKQEWg3D71jtgwizhGQpFQHtYXxmzWAjwyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.12.0-next.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.15.tgz", - "integrity": "sha512-hLDkDmtxOyUnlf1Mem6S8TKjCZh6yiWSA8kasqq7HSDa1/QmJou5eY1zFbw2xBky3StEUx5vfn3NpgBHTOCSBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.12.0-next.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.15.tgz", - "integrity": "sha512-+cHxrjLG3ILNj4+bRQ4uRBVfeCEhYYIqteZjiyryB2UXzyUJHaEqCRVxxJpiqzpsXTpTgVAsEuwYwERgT/1a5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.12.0-next.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.15.tgz", - "integrity": "sha512-ppGDxVbGofWYkiFw8NrE+JlhNE39FTCXzvE586ZBaUqV3TMDcwnTkDltxzbl5YPmhNp3Qne3pJfJ0NB330Js+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.12.0-next.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.15.tgz", - "integrity": "sha512-ifOr9sAuBbnJpZtGYtFkEkwTXBsM9pT9tq7KXT3eOYBWw3TJIsP3DfnTgYF+pZObxBFyBtMJnyy0j1ItL+s9rg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.12.0-next.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.15.tgz", - "integrity": "sha512-Jc0HZZOJAcPjxj3FbgtWQQGe6OmI6xiblFBAmXUGothxTZ3rn1YZeHqXews9MEjL8MCvHvfAjfLRkafSyyXX2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.12.0-next.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.15.tgz", - "integrity": "sha512-TFbhcY1J+IRB4nVwXAvw/a5gy3o7+AQ83vfxT3Sk/z4Kk6v3c6Xkizy6IY6vTtpSWWmiuAh998QYq8D7LHIc3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@nomicfoundation/hardhat-errors": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.5.tgz", - "integrity": "sha512-8Ayqf6hFM1glmrSxrXgX6n2pn5uTlHNxEB8N5Me0DOeOGB67PRIrQdiO+RzUhrNW5YgWUNWBevOLQbW06uQ79g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nomicfoundation/hardhat-utils": "^3.0.1" - } - }, - "node_modules/@nomicfoundation/hardhat-ethers": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-4.0.3.tgz", - "integrity": "sha512-DtYjmHtPM1BenmNm5ZMVn5fTGD4RdDPGE/ElpaLUjDGbkQnn4ytvhqnGsY+osLaWFvDxKfhdI8fyISg53bk8Qw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nomicfoundation/hardhat-errors": "^3.0.2", - "@nomicfoundation/hardhat-utils": "^3.0.5", - "debug": "^4.3.2", - "ethereum-cryptography": "^2.2.1", - "ethers": "^6.14.0" - }, - "peerDependencies": { - "hardhat": "^3.0.7" - } - }, - "node_modules/@nomicfoundation/hardhat-ethers/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nomicfoundation/hardhat-ethers/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nomicfoundation/hardhat-ethers/node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/@nomicfoundation/hardhat-utils": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.5.tgz", - "integrity": "sha512-5zkQSuSxkwK7fQxKswJ1GGc/3AuWBSmxA7GhczTPLx28dAXQnubRU8nA48SkCkKesJq5x4TROP+XheSE2VkLUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@streamparser/json-node": "^0.0.22", - "debug": "^4.3.2", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^2.2.1", - "fast-equals": "^5.0.1", - "json-stream-stringify": "^3.1.6", - "rfdc": "^1.3.1", - "undici": "^6.16.1" - } - }, - "node_modules/@nomicfoundation/hardhat-utils/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nomicfoundation/hardhat-utils/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nomicfoundation/hardhat-utils/node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/@nomicfoundation/hardhat-utils/node_modules/undici": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", - "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@nomicfoundation/hardhat-verify": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-3.0.7.tgz", - "integrity": "sha512-2Px2Zldg2oRJvy7odx8hZ0lZ4yjkW8XLr6umqcKl5z36+XifKRanzd8phoLEGQ8SRBNaVsaw0EDHi9Q0QTUu3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^5.8.0", - "@nomicfoundation/hardhat-errors": "^3.0.3", - "@nomicfoundation/hardhat-utils": "^3.0.5", - "@nomicfoundation/hardhat-zod-utils": "^3.0.0", - "cbor2": "^1.9.0", - "chalk": "^5.3.0", - "debug": "^4.3.2", - "semver": "^7.6.3", - "zod": "^3.23.8" - }, - "peerDependencies": { - "hardhat": "^3.0.0" - } - }, - "node_modules/@nomicfoundation/hardhat-verify/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@nomicfoundation/hardhat-verify/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nomicfoundation/hardhat-zod-utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-zod-utils/-/hardhat-zod-utils-3.0.1.tgz", - "integrity": "sha512-I6/pyYiS9p2lLkzQuedr1ScMocH+ew8l233xTi+LP92gjEiviJDxselpkzgU01MUM0t6BPpfP8yMO958LDEJVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nomicfoundation/hardhat-errors": "^3.0.0", - "@nomicfoundation/hardhat-utils": "^3.0.2" - }, - "peerDependencies": { - "zod": "^3.23.8" - } - }, - "node_modules/@nomicfoundation/ignition-core": { - "version": "0.15.14", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.14.tgz", - "integrity": "sha512-BRgNaApHTdmk0NNTVYMltRXUFQGaWKHKnaaOyp9TG/BsUUkW3mH1ds5+rM4UBUIHivIyh3fKFDCOGJIJcQG9aw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethersproject/address": "5.6.1", - "@nomicfoundation/solidity-analyzer": "^0.1.1", - "cbor": "^9.0.0", - "debug": "^4.3.2", - "ethers": "^6.14.0", - "fs-extra": "^10.0.0", - "immer": "10.0.2", - "lodash": "4.17.21", - "ndjson": "2.0.0" - } - }, - "node_modules/@nomicfoundation/ignition-core/node_modules/@ethersproject/address": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", - "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.6.2", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/keccak256": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/rlp": "^5.6.1" - } - }, - "node_modules/@nomicfoundation/ignition-core/node_modules/cbor": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", - "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@nomicfoundation/ignition-core/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@nomicfoundation/ignition-core/node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@nomicfoundation/ignition-core/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@nomicfoundation/ignition-ui": { - "version": "0.15.13", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.13.tgz", - "integrity": "sha512-HbTszdN1iDHCkUS9hLeooqnLEW2U45FaqFwFEYT8nIno2prFZhG+n68JEERjmfFCB5u0WgbuJwk3CgLoqtSL7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nomicfoundation/slang": { - "version": "0.18.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.18.3.tgz", - "integrity": "sha512-YqAWgckqbHM0/CZxi9Nlf4hjk9wUNLC9ngWCWBiqMxPIZmzsVKYuChdlrfeBPQyvQQBoOhbx+7C1005kLVQDZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bytecodealliance/preview2-shim": "0.17.0" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz", - "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - }, - "optionalDependencies": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz", - "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz", - "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz", - "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz", - "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz", - "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz", - "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz", - "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@nomiclabs/hardhat-truffle5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-truffle5/-/hardhat-truffle5-2.1.2.tgz", - "integrity": "sha512-y5I9S5/vl3izamwYvvDmhO2zrvHmuKlGqU3J/vWbnbzN83kX1bm8f/F/NG9QtEfVUa6dGfCJxg7YEo5xFCqSZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nomiclabs/truffle-contract": "^4.2.23", - "@types/chai": "^4.2.0", - "chai": "^4.2.0", - "ethereumjs-util": "^7.1.4", - "fs-extra": "^7.0.1" - }, - "peerDependencies": { - "@nomiclabs/hardhat-web3": "^2.1.0", - "hardhat": "^2.26.0", - "web3": "^1.0.0-beta.36" - } - }, - "node_modules/@nomiclabs/hardhat-web3": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-web3/-/hardhat-web3-2.1.2.tgz", - "integrity": "sha512-ChnUInQ5AES1iJSNXq00JfWfQZkVUIkkSt2dtrB/8r+CfW/XeBTkvE5G+OTJTVSMme7lgqk9aieOI7d6GU6v1g==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "hardhat": "^2.26.0", - "web3": "^1.0.0-beta.36" - } - }, - "node_modules/@nomiclabs/truffle-contract": { - "version": "4.5.10", - "resolved": "https://registry.npmjs.org/@nomiclabs/truffle-contract/-/truffle-contract-4.5.10.tgz", - "integrity": "sha512-nF/6InFV+0hUvutyFgsdOMCoYlr//2fJbRER4itxYtQtc4/O1biTwZIKRu+5l2J5Sq6LU2WX7vZHtDgQdhWxIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ensdomains/ensjs": "^2.0.1", - "@truffle/blockchain-utils": "^0.1.3", - "@truffle/contract-schema": "^3.4.7", - "@truffle/debug-utils": "^6.0.22", - "@truffle/error": "^0.1.0", - "@truffle/interface-adapter": "^0.5.16", - "bignumber.js": "^7.2.1", - "ethereum-ens": "^0.8.0", - "ethers": "^4.0.0-beta.1", - "source-map-support": "^0.5.19" - }, - "peerDependencies": { - "web3": "^1.2.1", - "web3-core-helpers": "^1.2.1", - "web3-core-promievent": "^1.2.1", - "web3-eth-abi": "^1.2.1", - "web3-utils": "^1.2.1" - } - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nomiclabs/truffle-contract/node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true - }, - "node_modules/@openzeppelin/defender-sdk-base-client": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-2.7.0.tgz", - "integrity": "sha512-J5IpvbFfdIJM4IadBcXfhCXVdX2yEpaZtRR1ecq87d8CdkmmEpniYfef/yVlG98yekvu125LaIRg0yXQOt9Bdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@aws-sdk/client-lambda": "^3.563.0", - "amazon-cognito-identity-js": "^6.3.6", - "async-retry": "^1.3.3" - } - }, - "node_modules/@openzeppelin/defender-sdk-deploy-client": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-2.7.0.tgz", - "integrity": "sha512-YOHZmnHmM1y6uSqXWGfk2/5/ae4zZJE6xG92yFEAIOy8vqh1dxznWMsoCcAXRXTCWc8RdCDpFdMfEy4SBTyYtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@openzeppelin/defender-sdk-base-client": "^2.7.0", - "axios": "^1.7.4", - "lodash": "^4.17.21" - } - }, - "node_modules/@openzeppelin/defender-sdk-network-client": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/defender-sdk-network-client/-/defender-sdk-network-client-2.7.0.tgz", - "integrity": "sha512-4CYWPa9+kSjojE5KS7kRmP161qsBATdp97TCrzyDdGoVahj0GyqgafRL9AAjm0eHZOM1c7EIYEpbvYRtFi8vyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@openzeppelin/defender-sdk-base-client": "^2.7.0", - "axios": "^1.7.4", - "lodash": "^4.17.21" - } - }, - "node_modules/@openzeppelin/upgrades-core": { - "version": "1.44.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.44.2.tgz", - "integrity": "sha512-m6iorjyhPK9ow5/trNs7qsBC/SOzJCO51pvvAF2W9nOiZ1t0RtCd+rlRmRmlWTv4M33V0wzIUeamJ2BPbzgUXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nomicfoundation/slang": "^0.18.3", - "bignumber.js": "^9.1.2", - "cbor": "^10.0.0", - "chalk": "^4.1.0", - "compare-versions": "^6.0.0", - "debug": "^4.1.1", - "ethereumjs-util": "^7.0.3", - "minimatch": "^9.0.5", - "minimist": "^1.2.7", - "proper-lockfile": "^4.1.1", - "solidity-ast": "^0.4.60" - }, - "bin": { - "openzeppelin-upgrades-core": "dist/cli/cli.js" - } - }, - "node_modules/@openzeppelin/upgrades-core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@openzeppelin/upgrades-core/node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@openzeppelin/upgrades-core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@openzeppelin/upgrades-core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@openzeppelin/upgrades-core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@openzeppelin/upgrades-core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@openzeppelin/upgrades-core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@resolver-engine/core": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz", - "integrity": "sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==", - "dev": true, - "license": "LGPL-3.0-or-later", - "dependencies": { - "debug": "^3.1.0", - "is-url": "^1.2.4", - "request": "^2.85.0" - } - }, - "node_modules/@resolver-engine/core/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@resolver-engine/fs": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz", - "integrity": "sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==", - "dev": true, - "license": "LGPL-3.0-or-later", - "dependencies": { - "@resolver-engine/core": "^0.3.3", - "debug": "^3.1.0" - } - }, - "node_modules/@resolver-engine/fs/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@resolver-engine/imports": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz", - "integrity": "sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==", - "dev": true, - "license": "LGPL-3.0-or-later", - "dependencies": { - "@resolver-engine/core": "^0.3.3", - "debug": "^3.1.0", - "hosted-git-info": "^2.6.0", - "path-browserify": "^1.0.0", - "url": "^0.11.0" - } - }, - "node_modules/@resolver-engine/imports-fs": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz", - "integrity": "sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==", - "dev": true, - "license": "LGPL-3.0-or-later", - "dependencies": { - "@resolver-engine/fs": "^0.3.3", - "@resolver-engine/imports": "^0.3.3", - "debug": "^3.1.0" - } - }, - "node_modules/@resolver-engine/imports-fs/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@resolver-engine/imports/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", - "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.4.0", - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", - "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@sentry/core": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/hub/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/minimal": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", - "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/node/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/tracing/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@smithy/abort-controller": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", - "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", - "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "3.18.4", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.4.tgz", - "integrity": "sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-serde": "^4.2.6", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", - "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-codec": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", - "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.9.0", - "@smithy/util-hex-encoding": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", - "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", - "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", - "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", - "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-codec": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", - "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", - "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", - "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", - "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", - "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.11.tgz", - "integrity": "sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.18.4", - "@smithy/middleware-serde": "^4.2.6", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-middleware": "^4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.11.tgz", - "integrity": "sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/service-error-classification": "^4.2.5", - "@smithy/smithy-client": "^4.9.7", - "@smithy/types": "^4.9.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", - "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", - "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", - "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", - "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", - "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", - "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-builder": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", - "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-uri-escape": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", - "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", - "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", - "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/signature-v4": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", - "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-uri-escape": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/smithy-client": { - "version": "4.9.7", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.7.tgz", - "integrity": "sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.18.4", - "@smithy/middleware-endpoint": "^4.3.11", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-stream": "^4.5.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/types": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", - "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/url-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", - "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-base64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", - "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", - "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", - "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-buffer-from": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", - "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-config-provider": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", - "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.10.tgz", - "integrity": "sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.7", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.13", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.13.tgz", - "integrity": "sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/config-resolver": "^4.4.3", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.7", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", - "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", - "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-middleware": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", - "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-retry": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", - "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/service-error-classification": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-stream": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", - "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", - "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", - "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-waiter": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", - "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/uuid": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", - "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@solidity-parser/parser": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", - "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "node_modules/@streamparser/json": { - "version": "0.0.22", - "resolved": "https://registry.npmjs.org/@streamparser/json/-/json-0.0.22.tgz", - "integrity": "sha512-b6gTSBjJ8G8SuO3Gbbj+zXbVx8NSs1EbpbMKpzGLWMdkR+98McH9bEjSz3+0mPJf68c5nxa3CrJHp5EQNXM6zQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@streamparser/json-node": { - "version": "0.0.22", - "resolved": "https://registry.npmjs.org/@streamparser/json-node/-/json-node-0.0.22.tgz", - "integrity": "sha512-sJT2ptNRwqB1lIsQrQlCoWk5rF4tif9wDh+7yluAGijJamAhrHGYpFB/Zg3hJeceoZypi74ftXk8DHzwYpbZSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@streamparser/json": "^0.0.22" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@tenderly/hardhat-tenderly": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tenderly/hardhat-tenderly/-/hardhat-tenderly-2.3.0.tgz", - "integrity": "sha512-Q21HeQofncnrH33Ys4Xd2HRgxl+4E/HgUqUIu6l734Cpw07KMwlsTicEML0nlVPgLDmtNrJv4cnFn4SypwioaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@nomicfoundation/hardhat-ignition": "^0.15.5", - "@nomicfoundation/hardhat-verify": "^2.0.8", - "@openzeppelin/hardhat-upgrades": "^3.0.1", - "@openzeppelin/upgrades-core": "^1.32.2", - "axios": "^1.6.7", - "ethers": "^6.8.1", - "fs-extra": "^10.1.0", - "hardhat-deploy": "^0.11.43", - "tenderly": "^0.9.1", - "ts-node": "^10.9.1", - "tslog": "^4.3.1", - "typescript": "^5.5.4" - }, - "peerDependencies": { - "ethers": "^6.8.1", - "hardhat": "^2.22.6" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/@nomicfoundation/hardhat-ethers": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.1.2.tgz", - "integrity": "sha512-7xEaz2X8p47qWIAqtV2z03MmusheHm8bvY2mDlxo9JiT2BgSx59GSdv5+mzwOvsuKDbTij7oqDnwFyYOlHREEQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^4.1.1", - "lodash.isequal": "^4.5.0" - }, - "peerDependencies": { - "ethers": "^6.14.0", - "hardhat": "^2.26.0" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/@nomicfoundation/hardhat-ignition": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.15.tgz", - "integrity": "sha512-4uLp5MOyaW0gUYGAxiA8GikGIo8SLBijpxakFI3BpofUoeRXnnQdNtRJT9aAKD8ENfvFQrNFin0Z1VlXjXurkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nomicfoundation/ignition-core": "^0.15.14", - "@nomicfoundation/ignition-ui": "^0.15.13", - "chalk": "^4.0.0", - "debug": "^4.3.2", - "fs-extra": "^10.0.0", - "json5": "^2.2.3", - "prompts": "^2.4.2" - }, - "peerDependencies": { - "@nomicfoundation/hardhat-verify": "^2.1.0", - "hardhat": "^2.26.0" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/@nomicfoundation/hardhat-verify": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.1.3.tgz", - "integrity": "sha512-danbGjPp2WBhLkJdQy9/ARM3WQIK+7vwzE0urNem1qZJjh9f54Kf5f1xuQv8DvqewUAkuPxVt/7q4Grz5WjqSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^8.1.0", - "debug": "^4.1.1", - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.1.0", - "semver": "^6.3.0", - "table": "^6.8.0", - "undici": "^5.14.0" - }, - "peerDependencies": { - "hardhat": "^2.26.0" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/@openzeppelin/hardhat-upgrades": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-3.9.1.tgz", - "integrity": "sha512-pSDjlOnIpP+PqaJVe144dK6VVKZw2v6YQusyt0OOLiCsl+WUzfo4D0kylax7zjrOxqy41EK2ipQeIF4T+cCn2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@openzeppelin/defender-sdk-base-client": "^2.1.0", - "@openzeppelin/defender-sdk-deploy-client": "^2.1.0", - "@openzeppelin/defender-sdk-network-client": "^2.1.0", - "@openzeppelin/upgrades-core": "^1.41.0", - "chalk": "^4.1.0", - "debug": "^4.1.1", - "ethereumjs-util": "^7.1.5", - "proper-lockfile": "^4.1.1", - "undici": "^6.11.1" - }, - "bin": { - "migrate-oz-cli-project": "dist/scripts/migrate-oz-cli-project.js" - }, - "peerDependencies": { - "@nomicfoundation/hardhat-ethers": "^3.0.6", - "@nomicfoundation/hardhat-verify": "^2.0.14", - "ethers": "^6.6.0", - "hardhat": "^2.24.1" - }, - "peerDependenciesMeta": { - "@nomicfoundation/hardhat-verify": { - "optional": true - } - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/@openzeppelin/hardhat-upgrades/node_modules/undici": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", - "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "dev": true, - "license": "MIT", - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=12.19" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@tenderly/hardhat-tenderly/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@truffle/abi-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-1.0.3.tgz", - "integrity": "sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "dependencies": { - "change-case": "3.0.2", - "fast-check": "3.1.1", - "web3-utils": "1.10.0" - }, - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@truffle/abi-utils/node_modules/web3-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", - "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/blockchain-utils": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.9.tgz", - "integrity": "sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@truffle/codec": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.17.3.tgz", - "integrity": "sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "dependencies": { - "@truffle/abi-utils": "^1.0.3", - "@truffle/compile-common": "^0.9.8", - "big.js": "^6.0.3", - "bn.js": "^5.1.3", - "cbor": "^5.2.0", - "debug": "^4.3.1", - "lodash": "^4.17.21", - "semver": "^7.5.4", - "utf8": "^3.0.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@truffle/codec/node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@truffle/codec/node_modules/cbor": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", - "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.1", - "nofilter": "^1.0.4" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@truffle/codec/node_modules/nofilter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", - "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/codec/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@truffle/codec/node_modules/web3-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", - "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/compile-common": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.8.tgz", - "integrity": "sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "dependencies": { - "@truffle/error": "^0.2.2", - "colors": "1.4.0" - }, - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@truffle/compile-common/node_modules/@truffle/error": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", - "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@truffle/contract-schema": { - "version": "3.4.16", - "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.16.tgz", - "integrity": "sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.10.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@truffle/debug-utils": { - "version": "6.0.57", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.57.tgz", - "integrity": "sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "dependencies": { - "@truffle/codec": "^0.17.3", - "@trufflesuite/chromafi": "^3.0.0", - "bn.js": "^5.1.3", - "chalk": "^2.4.2", - "debug": "^4.3.1", - "highlightjs-solidity": "^2.0.6" - }, - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@truffle/error": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.1.1.tgz", - "integrity": "sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter": { - "version": "0.5.37", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.37.tgz", - "integrity": "sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^5.1.3", - "ethers": "^4.0.32", - "web3": "1.10.0" - }, - "engines": { - "node": "^16.20 || ^18.16 || >=20" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/ethers/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true - }, - "node_modules/@truffle/interface-adapter/node_modules/web3": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz", - "integrity": "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-bzz": "1.10.0", - "web3-core": "1.10.0", - "web3-eth": "1.10.0", - "web3-eth-personal": "1.10.0", - "web3-net": "1.10.0", - "web3-shh": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-bzz": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz", - "integrity": "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/node": "^12.12.6", - "got": "12.1.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz", - "integrity": "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/bn.js": "^5.1.1", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.10.0", - "web3-core-method": "1.10.0", - "web3-core-requestmanager": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core-helpers": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", - "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-eth-iban": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core-method": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", - "integrity": "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.10.0", - "web3-core-promievent": "1.10.0", - "web3-core-subscriptions": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core-promievent": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", - "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core-requestmanager": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", - "integrity": "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "util": "^0.12.5", - "web3-core-helpers": "1.10.0", - "web3-providers-http": "1.10.0", - "web3-providers-ipc": "1.10.0", - "web3-providers-ws": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-core-subscriptions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz", - "integrity": "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz", - "integrity": "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.10.0", - "web3-core-helpers": "1.10.0", - "web3-core-method": "1.10.0", - "web3-core-subscriptions": "1.10.0", - "web3-eth-abi": "1.10.0", - "web3-eth-accounts": "1.10.0", - "web3-eth-contract": "1.10.0", - "web3-eth-ens": "1.10.0", - "web3-eth-iban": "1.10.0", - "web3-eth-personal": "1.10.0", - "web3-net": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-abi": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz", - "integrity": "sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-accounts": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz", - "integrity": "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.1.5", - "scrypt-js": "^3.0.1", - "uuid": "^9.0.0", - "web3-core": "1.10.0", - "web3-core-helpers": "1.10.0", - "web3-core-method": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-accounts/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-contract": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz", - "integrity": "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/bn.js": "^5.1.1", - "web3-core": "1.10.0", - "web3-core-helpers": "1.10.0", - "web3-core-method": "1.10.0", - "web3-core-promievent": "1.10.0", - "web3-core-subscriptions": "1.10.0", - "web3-eth-abi": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-ens": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz", - "integrity": "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.10.0", - "web3-core-helpers": "1.10.0", - "web3-core-promievent": "1.10.0", - "web3-eth-abi": "1.10.0", - "web3-eth-contract": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-iban": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", - "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-eth-personal": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", - "integrity": "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.10.0", - "web3-core-helpers": "1.10.0", - "web3-core-method": "1.10.0", - "web3-net": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-net": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz", - "integrity": "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.10.0", - "web3-core-method": "1.10.0", - "web3-utils": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-providers-http": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz", - "integrity": "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "abortcontroller-polyfill": "^1.7.3", - "cross-fetch": "^3.1.4", - "es6-promise": "^4.2.8", - "web3-core-helpers": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-providers-ipc": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz", - "integrity": "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-providers-ws": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz", - "integrity": "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.10.0", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-shh": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz", - "integrity": "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.10.0", - "web3-core-method": "1.10.0", - "web3-core-subscriptions": "1.10.0", - "web3-net": "1.10.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/interface-adapter/node_modules/web3-utils": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", - "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider": { - "version": "0.2.64", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.64.tgz", - "integrity": "sha512-ZwPsofw4EsCq/2h0t73SPnnFezu4YQWBmK4FxFaOUX0F+o8NsZuHKyfJzuZwyZbiktYmefM3yD9rM0Dj4BhNbw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "dependencies": { - "@truffle/error": "^0.1.1", - "@truffle/interface-adapter": "^0.5.25", - "debug": "^4.3.1", - "web3": "1.7.4" - } - }, - "node_modules/@truffle/provider/node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/provider/node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/provider/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/provider/node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@truffle/provider/node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/provider/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@truffle/provider/node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/provider/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@truffle/provider/node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/provider/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/@truffle/provider/node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/provider/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/provider/node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@truffle/provider/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@truffle/provider/node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@truffle/provider/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@truffle/provider/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@truffle/provider/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/@truffle/provider/node_modules/web3": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", - "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-bzz": "1.7.4", - "web3-core": "1.7.4", - "web3-eth": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-shh": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-bzz": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", - "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", - "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/bn.js": "^5.1.0", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-requestmanager": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core-helpers": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz", - "integrity": "sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-eth-iban": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core-method": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", - "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core-promievent": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz", - "integrity": "sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core-requestmanager": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", - "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "util": "^0.12.0", - "web3-core-helpers": "1.7.4", - "web3-providers-http": "1.7.4", - "web3-providers-ipc": "1.7.4", - "web3-providers-ws": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-core-subscriptions": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", - "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", - "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-accounts": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-eth-ens": "1.7.4", - "web3-eth-iban": "1.7.4", - "web3-eth-personal": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-abi": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz", - "integrity": "sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-accounts": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", - "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethereumjs/common": "^2.5.0", - "@ethereumjs/tx": "^3.3.2", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-contract": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", - "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-ens": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", - "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-promievent": "1.7.4", - "web3-eth-abi": "1.7.4", - "web3-eth-contract": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-iban": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz", - "integrity": "sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-eth-personal": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", - "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.7.4", - "web3-core-helpers": "1.7.4", - "web3-core-method": "1.7.4", - "web3-net": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-net": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", - "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-utils": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-providers-http": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", - "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core-helpers": "1.7.4", - "xhr2-cookies": "1.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-providers-ipc": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", - "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-providers-ws": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", - "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.7.4", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-shh": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", - "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.7.4", - "web3-core-method": "1.7.4", - "web3-core-subscriptions": "1.7.4", - "web3-net": "1.7.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provider/node_modules/web3-utils": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", - "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@trufflesuite/bigint-buffer": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz", - "integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "node-gyp-build": "4.3.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@trufflesuite/bigint-buffer/node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/@trufflesuite/chromafi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz", - "integrity": "sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^4.1.0", - "chalk": "^2.3.2", - "cheerio": "^1.0.0-rc.2", - "detect-indent": "^5.0.0", - "highlight.js": "^10.4.1", - "lodash.merge": "^4.6.2", - "strip-ansi": "^4.0.0", - "strip-indent": "^2.0.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typechain/ethers-v6": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", - "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - }, - "peerDependencies": { - "ethers": "6.x", - "typechain": "^8.3.2", - "typescript": ">=4.7.0" - } - }, - "node_modules/@types/abstract-leveldown": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.5.tgz", - "integrity": "sha512-/2B0nQF4UdupuxeKTJA2+Rj1D+uDemo6P4kMwKCpbfpnzeVaWSELTsAw4Lxn3VJD6APtRrZOCuYo+4nHUQfTfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai-as-promised": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", - "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/chai-string": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@types/chai-string/-/chai-string-1.4.5.tgz", - "integrity": "sha512-IecXRMSnpUvRnTztdpSdjcmcW7EdNme65bfDCQMi7XrSEPGmyDYYTEfc5fcactWDA6ioSm8o7NUqg9QxjBCCEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/concat-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", - "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/level-errors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.2.tgz", - "integrity": "sha512-gyZHbcQ2X5hNXf/9KS2qGEmgDe9EN2WDM3rJ5Ele467C0nA1sLhtmv1bZiPMDYfAYCfPWft0uQIaTvXbASSTRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/levelup": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz", - "integrity": "sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/abstract-leveldown": "*", - "@types/level-errors": "*", - "@types/node": "*" - } - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mkdirp": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", - "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.4" - } - }, - "node_modules/@types/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/secp256k1": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.7.tgz", - "integrity": "sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz", - "integrity": "sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/type-utils": "8.46.4", - "@typescript-eslint/utils": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.46.4", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.4.tgz", - "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.4.tgz", - "integrity": "sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.4", - "@typescript-eslint/types": "^8.46.4", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", - "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz", - "integrity": "sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.4.tgz", - "integrity": "sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4", - "@typescript-eslint/utils": "8.46.4", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", - "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", - "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.46.4", - "@typescript-eslint/tsconfig-utils": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/visitor-keys": "8.46.4", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", - "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.4", - "@typescript-eslint/types": "8.46.4", - "@typescript-eslint/typescript-estree": "8.46.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", - "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.4", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/0xsequence": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/0xsequence/-/0xsequence-1.10.15.tgz", - "integrity": "sha512-HtETUgbXS35vllu5buoiH8TrlV7boNQ+Odtae3mFQPTtsd/9Px81gFzHJhtCbcivK3QV6UC6+4nmK6KOKqInlw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/account": "1.10.15", - "@0xsequence/api": "1.10.15", - "@0xsequence/auth": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/guard": "1.10.15", - "@0xsequence/indexer": "1.10.15", - "@0xsequence/metadata": "1.10.15", - "@0xsequence/migration": "1.10.15", - "@0xsequence/multicall": "1.10.15", - "@0xsequence/network": "1.10.15", - "@0xsequence/provider": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/sessions": "1.10.15", - "@0xsequence/signhub": "1.10.15", - "@0xsequence/utils": "1.10.15", - "@0xsequence/wallet": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/abi": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-1.10.15.tgz", - "integrity": "sha512-nuh68P8tRDzIMIH7mnGX1Eab0jsYVGhZa7IlNIs8CfTnGoanxLS+MGk5ioZBa6+slzxb9VP8mnQ5QhAWeFySeg==", - "license": "Apache-2.0" - }, - "node_modules/0xsequence/node_modules/@0xsequence/auth": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/auth/-/auth-1.10.15.tgz", - "integrity": "sha512-ZY8vf/l9J+1HWP4pIMNTRBDFVXgi22x8zmSLgE4xAo4JDZ6yiGAQPooJpRCs59gx1LtVI2Zt+KgvfW1qVxQDtQ==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/account": "1.10.15", - "@0xsequence/api": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/ethauth": "^0.8.1", - "@0xsequence/indexer": "1.10.15", - "@0xsequence/metadata": "1.10.15", - "@0xsequence/migration": "1.10.15", - "@0xsequence/network": "1.10.15", - "@0xsequence/sessions": "1.10.15", - "@0xsequence/signhub": "1.10.15", - "@0xsequence/utils": "1.10.15", - "@0xsequence/wallet": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/core": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/core/-/core-1.10.15.tgz", - "integrity": "sha512-wrE5soJSqrhhm7pC+NxckLR0lJSOnsHPLKdDqWeTRmyuhtZ4e0DsrcoeoD40I/3Bd77tdZ1GGbq00CryV7JfFw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/indexer": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/indexer/-/indexer-1.10.15.tgz", - "integrity": "sha512-bc2gAIEplMcmWJMwLuXZZ0wifoxuV/zHyWzEdbQ5+9ruIXArxyoG0Ue9fMEzKWHfsAWyBKBJCCFbr4XJEQ5YjA==", - "license": "Apache-2.0" - }, - "node_modules/0xsequence/node_modules/@0xsequence/multicall": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/multicall/-/multicall-1.10.15.tgz", - "integrity": "sha512-yFTMDZR9tUvm3lefYyuxhohtx6mFzdpmn+qDFk9Bjo5TeEu0SGJLjdd6U2AK3rDIcPPw7rl7VvBXLweNJOMjfw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/network": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/network": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/network/-/network-1.10.15.tgz", - "integrity": "sha512-wHp8RGqFrncuoIh0ityO/jUobliargQ7SWlvZCf8Ez0T7uiXDEDokrFSN2F9FIl6i5a5NmcEpXhfhwS/L0pN2w==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "1.10.15", - "@0xsequence/indexer": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/provider": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/provider/-/provider-1.10.15.tgz", - "integrity": "sha512-oPntN3xWvwEnPuZ4LoxWL50v7FLhJa8guOP27FFltm4sjxydYCZ37griBR093YW5NKtWO8mtmnnnTZChJS8Euw==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/account": "1.10.15", - "@0xsequence/auth": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/migration": "1.10.15", - "@0xsequence/network": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/utils": "1.10.15", - "@0xsequence/wallet": "1.10.15", - "@databeat/tracker": "^0.9.1", - "eventemitter2": "^6.4.5", - "webextension-polyfill": "^0.10.0" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/relayer": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/relayer/-/relayer-1.10.15.tgz", - "integrity": "sha512-QpNAzRjqCl9xJdXzErQA0kmv2jzEXPfVlPwutbgmrCEIj+rHdw3M+kiG0MWBnOqxoSEA98oJnxXmpBL5mkCA6g==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/signhub": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/signhub/-/signhub-1.10.15.tgz", - "integrity": "sha512-9yZWb8d2aXoWOQp0XC81hkS+hLWxO/pZIyCRtNVdif0/SPA86v6e96xPmuj45KONYgiH33ROVDpeJEKhOEo0jg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/core": "1.10.15", - "ethers": "^5.5.2" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/signhub/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/utils": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/utils/-/utils-1.10.15.tgz", - "integrity": "sha512-LIrQS5J+3MOER+i7ajX7fiT6ga3QoDf8wsi5KY/2eFZS39sbCXGzg1ORxjtee++c/S/h4nuRYX1IRuseGYJWPw==", - "license": "Apache-2.0", - "dependencies": { - "js-base64": "^3.7.2" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/0xsequence/node_modules/@0xsequence/wallet": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/@0xsequence/wallet/-/wallet-1.10.15.tgz", - "integrity": "sha512-UhaIaiK3IF+bv1flg/N1yuGPZXos/orJlwAd9GbPDHOIBqkBsniyraDcO+xwBKWMBHhQL6NqfSDI9j/Zxv7ocg==", - "license": "Apache-2.0", - "dependencies": { - "@0xsequence/abi": "1.10.15", - "@0xsequence/core": "1.10.15", - "@0xsequence/network": "1.10.15", - "@0xsequence/relayer": "1.10.15", - "@0xsequence/signhub": "1.10.15", - "@0xsequence/utils": "1.10.15" - }, - "peerDependencies": { - "ethers": ">=5.5 < 6" - } - }, - "node_modules/abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", - "dev": true, - "license": "ISC" - }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", - "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/abstract-leveldown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", - "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.3.0" - } - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "license": "MIT" - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/amazon-cognito-identity-js": { - "version": "6.3.16", - "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.16.tgz", - "integrity": "sha512-HPGSBGD6Q36t99puWh0LnptxO/4icnk2kqIQ9cTJ2tFQo5NMUnWQIgtrTAk8nm+caqUbjDzXzG56GBjI2tS6jQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-js": "1.2.2", - "buffer": "4.9.2", - "fast-base64-decode": "^1.0.0", - "isomorphic-unfetch": "^3.0.0", - "js-cookie": "^2.2.1" - } - }, - "node_modules/amazon-cognito-identity-js/node_modules/@aws-crypto/sha256-js": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", - "integrity": "sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^1.2.2", - "@aws-sdk/types": "^3.1.0", - "tslib": "^1.11.1" - } - }, - "node_modules/amazon-cognito-identity-js/node_modules/@aws-crypto/util": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-1.2.2.tgz", - "integrity": "sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.1.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/amazon-cognito-identity-js/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/amazon-cognito-identity-js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/amazon-cognito-identity-js/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true, - "license": "BSD-3-Clause OR MIT", - "optional": true, - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/antlr4": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz", - "integrity": "sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=16" - } - }, - "node_modules/antlr4ts": { - "version": "0.5.0-alpha.4", - "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", - "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/ast-parents": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz", - "integrity": "sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-eventemitter": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", - "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^2.4.0" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/async-retry/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", - "dev": true, - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base-x": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", - "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "license": "MIT" - }, - "node_modules/big-integer": { - "version": "1.6.36", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", - "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", - "dev": true, - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", - "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bigjs" - } - }, - "node_modules/bignumber.js": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", - "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - } - }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/bn-chai": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bn-chai/-/bn-chai-1.0.1.tgz", - "integrity": "sha512-7rJXt21DwYiLLpvzLaACixBBoUGkRV1iuFD3wElEhw8Ji9IiY/QsJRtvW+c7ChRgEOyLQkGaSGFUUqBKm21SNA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "chai": ">= 2.1.2 < 5" - } - }, - "node_modules/bn.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", - "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/bowser": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", - "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "license": "MIT" - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", - "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^5.2.1", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", - "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", - "dev": true, - "license": "ISC", - "dependencies": { - "bn.js": "^5.2.2", - "browserify-rsa": "^4.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.6.1", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.9", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/browserify-sign/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bufferutil": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", - "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", - "devOptional": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-lookup": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", - "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/cbor": { - "version": "10.0.11", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.11.tgz", - "integrity": "sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA==", - "dev": true, - "license": "MIT", - "dependencies": { - "nofilter": "^3.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/cbor2": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/cbor2/-/cbor2-1.12.0.tgz", - "integrity": "sha512-3Cco8XQhi27DogSp9Ri6LYNZLi/TBY/JVnDe+mj06NkBjW/ZYOtekaEU4wZ4xcRMNrFkDv8KNtOAqHyDfz3lYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.7" - } - }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", - "dev": true, - "license": "WTFPL", - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 6" - } - }, - "node_modules/chai-bignumber": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/chai-bignumber/-/chai-bignumber-3.1.0.tgz", - "integrity": "sha512-omxEc80jAU+pZwRmoWr3aEzeLad4JW3iBhLRQlgISvghBdIxrMT7mVAGsDz4WSyCkKowENshH2j9OABAhld7QQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/chai-shallow-deep-equal": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/chai-shallow-deep-equal/-/chai-shallow-deep-equal-1.4.6.tgz", - "integrity": "sha512-2fBsQVRwrHdNO7IPYmoeH/V9+tuBDDg3k054NKdZ7tWeoi0URPzt8P+LNqcJioLVBTH/WiNM6a8CT5nWMebhPg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "peerDependencies": { - "chai": ">= 1.9.0" - } - }, - "node_modules/chai-string": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.6.0.tgz", - "integrity": "sha512-sXV7whDmpax+8H++YaZelgin7aur1LGf9ZhjZa3ojETFJ0uPVuS4XEXuIagpZ/c8uVOtsSh4MwOjy5CBLjJSXA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "chai": "^4.1.2" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/change-case": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz", - "integrity": "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" - } - }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/cheerio": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", - "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.0.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.12.0", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=20.18.1" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cheerio/node_modules/undici": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", - "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/child_process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", - "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==", - "dev": true, - "license": "ISC" - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "license": "ISC" - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/cids/node_modules/multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", - "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true, - "license": "MIT" - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "license": "MIT", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", - "license": "MIT", - "dependencies": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/compare-versions": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", - "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/concat-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/constant-case": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", - "integrity": "sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-js-pure": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.49.0.tgz", - "integrity": "sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/crypto-addr-codec": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.8.tgz", - "integrity": "sha512-GqAK90iLLgP3FvhNmHbpT3wR6dEdaM8hZyZtLX29SPardh3OA13RFLHDR6sntGCgRWOfiHqW6sIyohpNqOtV/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "base-x": "^3.0.8", - "big-integer": "1.6.36", - "blakejs": "^1.1.0", - "bs58": "^4.0.1", - "ripemd160-min": "0.0.6", - "safe-buffer": "^5.2.0", - "sha3": "^2.1.1" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "dev": true, - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/death": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", - "dev": true - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/deferred-leveldown": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", - "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "abstract-leveldown": "~6.2.1", - "inherits": "^2.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/detect-port": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", - "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "address": "^1.0.1", - "debug": "4" - }, - "bin": { - "detect": "bin/detect-port.js", - "detect-port": "bin/detect-port.js" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", - "integrity": "sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=10" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, - "node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "license": "MIT" - }, - "node_modules/emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "dev": true, - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding-down": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", - "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "abstract-leveldown": "^6.2.1", - "inherits": "^2.0.3", - "level-codec": "^9.0.0", - "level-errors": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/enquirer/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/enquirer/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "dev": true, - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=0.12.0" - }, - "optionalDependencies": { - "source-map": "~0.2.0" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.1", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "dev": true, - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", - "dev": true, - "license": "ISC", - "dependencies": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - } - }, - "node_modules/eth-ens-namehash/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/eth-gas-reporter": { - "version": "0.2.27", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", - "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@solidity-parser/parser": "^0.14.0", - "axios": "^1.5.1", - "cli-table3": "^0.5.0", - "colors": "1.4.0", - "ethereum-cryptography": "^1.0.3", - "ethers": "^5.7.2", - "fs-readdir-recursive": "^1.1.0", - "lodash": "^4.17.14", - "markdown-table": "^1.1.3", - "mocha": "^10.2.0", - "req-cwd": "^2.0.0", - "sha1": "^1.1.1", - "sync-request": "^6.0.0" - }, - "peerDependencies": { - "@codechecks/client": "^0.1.0" - }, - "peerDependenciesMeta": { - "@codechecks/client": { - "optional": true - } - } - }, - "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT" - }, - "node_modules/eth-gas-reporter/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "colors": "^1.1.2" - } - }, - "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "node_modules/eth-gas-reporter/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/eth-gas-reporter/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/eth-lib/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/eth-lib/node_modules/ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "node_modules/ethereum-bloom-filters": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", - "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.4.0" - } - }, - "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/ethereum-ens": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ethereum-ens/-/ethereum-ens-0.8.0.tgz", - "integrity": "sha512-a8cBTF4AWw1Q1Y37V1LSCS9pRY4Mh3f8vCg5cbXCCEJ3eno1hbI/+Ccv9SZLISYpqQhaglP3Bxb/34lS4Qf7Bg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "bluebird": "^3.4.7", - "eth-ens-namehash": "^2.0.0", - "js-sha3": "^0.5.7", - "pako": "^1.0.4", - "underscore": "^1.8.3", - "web3": "^1.0.0-beta.34" - } - }, - "node_modules/ethereum-ens/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/ethereum-waffle": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-4.0.10.tgz", - "integrity": "sha512-iw9z1otq7qNkGDNcMoeNeLIATF9yKl1M8AIeu42ElfNBplq0e+5PeasQmm8ybY/elkZ1XyRO0JBQxQdVRb8bqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethereum-waffle/chai": "4.0.10", - "@ethereum-waffle/compiler": "4.0.3", - "@ethereum-waffle/mock-contract": "4.0.4", - "@ethereum-waffle/provider": "4.0.5", - "solc": "0.8.15", - "typechain": "^8.0.0" - }, - "bin": { - "waffle": "bin/waffle" - }, - "engines": { - "node": ">=10.0" - }, - "peerDependencies": { - "ethers": "*" - } - }, - "node_modules/ethereum-waffle/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/ethereum-waffle/node_modules/solc": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.15.tgz", - "integrity": "sha512-Riv0GNHNk/SddN/JyEuFKwbcWcEeho15iyupTSHw5Np6WuXA5D8kEHbyzDHi6sqmvLzu2l+8b1YmL8Ytple+8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solc.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "deprecated": "This library has been deprecated and usage is discouraged.", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - } - }, - "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ethereumjs-abi/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ethers": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.15.0.tgz", - "integrity": "sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/ethers/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" - }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "license": "MIT" - }, - "node_modules/eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dev": true, - "license": "ISC", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fast-base64-decode": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", - "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-check": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz", - "integrity": "sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pure-rand": "^5.0.1" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-equals": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.3.tgz", - "integrity": "sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-xml-parser": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", - "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^2.1.0" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "license": "MIT", - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/fmix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", - "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "imul": "^1.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", - "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==", - "dev": true, - "license": "MIT" - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true, - "license": "MIT" - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^2.6.0" - } - }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ganache": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.4.3.tgz", - "integrity": "sha512-RpEDUiCkqbouyE7+NMXG26ynZ+7sGiODU84Kz+FVoXUnQ4qQM4M8wif3Y4qUCt+D/eM1RVeGq0my62FPD6Y1KA==", - "bundleDependencies": [ - "@trufflesuite/bigint-buffer", - "emittery", - "keccak", - "leveldown", - "secp256k1", - "@types/bn.js", - "@types/lru-cache", - "@types/seedrandom" - ], - "dev": true, - "hasShrinkwrap": true, - "license": "MIT", - "dependencies": { - "@trufflesuite/bigint-buffer": "1.1.10", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "5.1.1", - "@types/seedrandom": "3.0.1", - "emittery": "0.10.0", - "keccak": "3.0.2", - "leveldown": "6.1.0", - "secp256k1": "4.0.3" - }, - "bin": { - "ganache": "dist/node/cli.js", - "ganache-cli": "dist/node/cli.js" - }, - "optionalDependencies": { - "bufferutil": "4.0.5", - "utf-8-validate": "5.0.7" - } - }, - "node_modules/ganache-cli": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.12.2.tgz", - "integrity": "sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw==", - "bundleDependencies": [ - "source-map-support", - "yargs", - "ethereumjs-util" - ], - "deprecated": "ganache-cli is now ganache; visit https://trfl.io/g7 for details", - "dev": true, - "license": "MIT", - "dependencies": { - "ethereumjs-util": "6.2.1", - "source-map-support": "0.5.12", - "yargs": "13.2.4" - }, - "bin": { - "ganache-cli": "cli.js" - } - }, - "node_modules/ganache-cli/node_modules/@types/bn.js": { - "version": "4.11.6", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache-cli/node_modules/@types/node": { - "version": "14.11.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/@types/pbkdf2": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache-cli/node_modules/@types/secp256k1": { - "version": "4.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache-cli/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/base-x": { - "version": "3.0.8", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ganache-cli/node_modules/blakejs": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/ganache-cli/node_modules/bn.js": { - "version": "4.11.9", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/brorand": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/browserify-aes": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ganache-cli/node_modules/bs58": { - "version": "4.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/ganache-cli/node_modules/bs58check": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/ganache-cli/node_modules/buffer-from": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/buffer-xor": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/cipher-base": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ganache-cli/node_modules/cliui": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/ganache-cli/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/ganache-cli/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/create-hash": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/ganache-cli/node_modules/create-hmac": { - "version": "1.1.7", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/ganache-cli/node_modules/cross-spawn": { - "version": "6.0.5", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/ganache-cli/node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/elliptic": { - "version": "6.5.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "node_modules/ganache-cli/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/end-of-stream": { - "version": "1.4.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/ganache-cli/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "node_modules/ganache-cli/node_modules/ethereumjs-util": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "MPL-2.0", - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ganache-cli/node_modules/ethjs-util": { - "version": "0.1.6", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ganache-cli/node_modules/evp_bytestokey": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ganache-cli/node_modules/execa": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/ganache-cli/node_modules/get-stream": { - "version": "4.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/hash-base": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/hash.js": { - "version": "1.1.7", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/ganache-cli/node_modules/hmac-drbg": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ganache-cli/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/invert-kv": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/is-hex-prefixed": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ganache-cli/node_modules/is-stream": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/keccak": { - "version": "3.0.1", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache-cli/node_modules/lcid": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "invert-kv": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/map-age-cleaner": { - "version": "0.1.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/md5.js": { - "version": "1.3.5", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/ganache-cli/node_modules/mem": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/minimalistic-assert": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/nice-try": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/node-addon-api": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/node-gyp-build": { - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/ganache-cli/node_modules/npm-run-path": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/ganache-cli/node_modules/os-locale": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/p-defer": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/p-finally": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/p-is-promise": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ganache-cli/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/path-key": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/pbkdf2": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/ganache-cli/node_modules/pump": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/ganache-cli/node_modules/randombytes": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/ganache-cli/node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ganache-cli/node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/require-main-filename": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/ripemd160": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/ganache-cli/node_modules/rlp": { - "version": "2.2.6", - "dev": true, - "inBundle": true, - "license": "MPL-2.0", - "dependencies": { - "bn.js": "^4.11.1" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/ganache-cli/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/scrypt-js": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/secp256k1": { - "version": "4.0.2", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache-cli/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/ganache-cli/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/setimmediate": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/sha.js": { - "version": "2.4.11", - "dev": true, - "inBundle": true, - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/ganache-cli/node_modules/shebang-command": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/shebang-regex": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/signal-exit": { - "version": "3.0.3", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/source-map-support": { - "version": "0.5.12", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/ganache-cli/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/ganache-cli/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/strip-eof": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/strip-hex-prefix": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ganache-cli/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/which": { - "version": "1.3.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/ganache-cli/node_modules/which-module": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/wrap-ansi": { - "version": "5.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/y18n": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/yargs": { - "version": "13.2.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - } - }, - "node_modules/ganache-cli/node_modules/yargs-parser": { - "version": "13.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz", - "integrity": "sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "node-gyp-build": "4.4.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer/node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/ganache/node_modules/@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache/node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/@types/node": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz", - "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/@types/seedrandom": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.1.tgz", - "integrity": "sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/ganache/node_modules/bufferutil": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", - "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", - "dev": true, - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - } - }, - "node_modules/ganache/node_modules/catering": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.0.tgz", - "integrity": "sha512-M5imwzQn6y+ODBfgi+cfgZv2hIUI6oYU/0f35Mdb1ujGeqeoI5tOnl9Q13DTH7LW+7er+NYq8stNOKZD/Z3U/A==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "queue-tick": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache/node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/ganache/node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ganache/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, - "node_modules/ganache/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache/node_modules/keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache/node_modules/leveldown": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", - "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "abstract-leveldown": "^7.2.0", - "napi-macros": "~2.0.0", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3", - "catering": "^2.0.0", - "is-buffer": "^2.0.5", - "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/level-concat-iterator": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", - "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "catering": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/leveldown/node_modules/level-supports": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", - "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ganache/node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache/node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/ganache/node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/queue-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", - "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ganache/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache/node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/ganache/node_modules/utf-8-validate": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", - "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", - "dev": true, - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - } - }, - "node_modules/ganache/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/ghost-testrpc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", - "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" - }, - "bin": { - "testrpc-sc": "index.js" - } - }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", - "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.6.0", - "@szmarczak/http-timer": "^5.0.1", - "@types/cacheable-request": "^6.0.2", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^6.0.4", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "form-data-encoder": "1.7.1", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/hardhat": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.27.0.tgz", - "integrity": "sha512-du7ecjx1/ueAUjvtZhVkJvWytPCjlagG3ZktYTphfzAbc1Flc6sRolw5mhKL/Loub1EIFRaflutM4bdB/YsUUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethereumjs/util": "^9.1.0", - "@ethersproject/abi": "^5.1.2", - "@nomicfoundation/edr": "^0.12.0-next.7", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "boxen": "^5.1.2", - "chokidar": "^4.0.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "find-up": "^5.0.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "json-stream-stringify": "^3.1.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "micro-eth-signer": "^0.14.0", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "picocolors": "^1.1.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.8.26", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tinyglobby": "^0.2.6", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/hardhat-deploy": { - "version": "0.11.45", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.45.tgz", - "integrity": "sha512-aC8UNaq3JcORnEUIwV945iJuvBwi65tjHVDU3v6mOcqik7WAzHVCJ7cwmkkipsHrWysrB5YvGF1q9S1vIph83w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.7.0", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-web3": "^0.14.3" - } - }, - "node_modules/hardhat-deploy/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/hardhat-deploy/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/hardhat-deploy/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/hardhat-deploy/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/hardhat-deploy/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/hardhat-deploy/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/hardhat-deploy/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" - } - }, - "node_modules/hardhat-deploy/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/hardhat-deploy/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat-deploy/node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/hardhat-deploy/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/hardhat-deploy/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat-deploy/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/hardhat-deploy/node_modules/zksync-web3": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz", - "integrity": "sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==", - "deprecated": "This package has been deprecated in favor of zksync-ethers@5.0.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ethers": "^5.7.0" - } - }, - "node_modules/hardhat-gas-reporter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", - "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.25", - "sha1": "^1.1.1" - }, - "peerDependencies": { - "hardhat": "^2.0.2" - } - }, - "node_modules/hardhat/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT" - }, - "node_modules/hardhat/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/hardhat/node_modules/@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/hardhat/node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/hardhat/node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "node_modules/hardhat/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hardhat/node_modules/solc": { - "version": "0.8.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz", - "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solc.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/hardhat/node_modules/solc/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/hardhat/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", - "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/hash-base/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hash-base/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/hash-base/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/hash-base/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" - } - }, - "node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/highlightjs-solidity": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz", - "integrity": "sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-basic": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", - "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", - "dev": true, - "license": "ISC" - }, - "node_modules/http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^10.0.3" - } - }, - "node_modules/http-response-object/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", - "dev": true, - "license": "MIT", - "bin": { - "husky": "bin.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "license": "ISC" - }, - "node_modules/idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "2.1.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/immer": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", - "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imul": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", - "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fp-ts": "^1.0.0" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^1.1.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-observable": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-2.1.0.tgz", - "integrity": "sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "upper-case": "^1.1.0" - } - }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-base64": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", - "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", - "license": "BSD-3-Clause" - }, - "node_modules/js-cookie": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "node_modules/json-bigint/node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stream-stringify": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", - "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=7.10.1" - } - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "license": "ISC" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonschema": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", - "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/keccak": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", - "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/keccak256": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", - "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", - "license": "MIT", - "dependencies": { - "bn.js": "^5.2.0", - "buffer": "^6.0.3", - "keccak": "^3.0.2" - } - }, - "node_modules/keccak256/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/level-codec": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", - "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", - "deprecated": "Superseded by level-transcoder (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/level-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", - "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "errno": "~0.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-iterator-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", - "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0", - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-mem": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz", - "integrity": "sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==", - "deprecated": "Superseded by memory-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "level-packager": "^5.0.3", - "memdown": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-packager": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", - "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "encoding-down": "^6.3.0", - "levelup": "^4.3.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-ws": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz", - "integrity": "sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^3.1.0", - "xtend": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^1.1.2" - } - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", - "dev": true, - "license": "MIT" - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/match-all": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.7.tgz", - "integrity": "sha512-qSpsBKarh55r9KyXzFC3xBLRf2GlGasba2em9kbpRsSlGvdTAqjx3QD0r3FKSARiW+OE4iMHYsolM3aX9n5djw==", - "dev": true, - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memdown": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", - "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", - "deprecated": "Superseded by memory-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "abstract-leveldown": "~6.2.1", - "functional-red-black-tree": "~1.0.1", - "immediate": "~3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/memdown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/memdown/node_modules/immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==", - "dev": true, - "license": "MIT" - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/merkle-patricia-tree": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz", - "integrity": "sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@types/levelup": "^4.3.0", - "ethereumjs-util": "^7.1.4", - "level-mem": "^5.0.1", - "level-ws": "^2.0.0", - "readable-stream": "^3.6.0", - "semaphore-async-await": "^1.5.1" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micro-eth-signer": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz", - "integrity": "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.8.1", - "@noble/hashes": "~1.7.1", - "micro-packed": "~0.7.2" - } - }, - "node_modules/micro-eth-signer/node_modules/@noble/curves": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", - "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.2" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/micro-eth-signer/node_modules/@noble/hashes": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", - "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/micro-ftch": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", - "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", - "dev": true, - "license": "MIT" - }, - "node_modules/micro-packed": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz", - "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/min-document": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz", - "integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "license": "ISC", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", - "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", - "dev": true, - "license": "ISC", - "dependencies": { - "mkdirp": "*" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "obliterator": "^2.0.0" - } - }, - "node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==", - "dev": true, - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "license": "MIT", - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "license": "MIT", - "dependencies": { - "varint": "^5.0.0" - } - }, - "node_modules/multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - } - }, - "node_modules/multihashes/node_modules/multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, - "license": "MIT", - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/murmur-128": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", - "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "encode-utf8": "^1.0.2", - "fmix": "^0.1.0", - "imul": "^1.0.0" - } - }, - "node_modules/nan": { - "version": "2.23.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.1.tgz", - "integrity": "sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nano-base32": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz", - "integrity": "sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/ndjson": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", - "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.5", - "readable-stream": "^3.6.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "ndjson": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "license": "MIT" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.19" - } - }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true, - "license": "MIT" - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obliterator": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", - "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==", - "dev": true, - "license": "MIT" - }, - "node_modules/oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", - "dev": true, - "license": "BSD", - "dependencies": { - "http-https": "^1.0.0" - } - }, - "node_modules/observable-fns": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/observable-fns/-/observable-fns-0.6.1.tgz", - "integrity": "sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==", - "dev": true, - "license": "MIT" - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "license": "(MIT AND Zlib)" - }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", - "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "pbkdf2": "^3.1.5", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", - "dev": true - }, - "node_modules/parse-headers": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", - "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", - "dev": true, - "license": "MIT" - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", - "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "ripemd160": "^2.0.3", - "safe-buffer": "^5.2.1", - "sha.js": "^2.4.12", - "to-buffer": "^1.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "license": "MIT" - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/psl/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz", - "integrity": "sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/recursive-readdir/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/req-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", - "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "req-from": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/req-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", - "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/req-from/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true, - "license": "ISC" - }, - "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/responselike/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ripemd160": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", - "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.1.2", - "inherits": "^2.0.4" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ripemd160-min": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", - "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "bn.js": "^5.2.0" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true, - "license": "(MIT OR Apache-2.0)" - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sc-istanbul": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", - "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "node_modules/sc-istanbul/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/sc-istanbul/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", - "dev": true, - "license": "MIT" - }, - "node_modules/sc-istanbul/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/sc-istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sc-istanbul/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sc-istanbul/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/sc-istanbul/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sc-istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sc-istanbul/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/sc-istanbul/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/scrypt": { - "version": "6.0.3", - "resolved": "git+ssh://git@github.com/barrysteyn/node-scrypt.git#fb60a8d3c158fe115a624b5ffa7480f3a24b03fb", - "integrity": "sha512-IkT3V+hfrspn9KZBir79W1P0F4XWHIWm7QLYUhs9dvF9hBPUGypDhTOghV++XjJ2+5xS3GCqKuuE0hlLznL9tg==", - "dev": true, - "hasInstallScript": true, - "license": "zlib", - "dependencies": { - "nan": "^2.14.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "license": "MIT" - }, - "node_modules/secp256k1": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", - "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "elliptic": "^6.5.7", - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/secp256k1/node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/semaphore-async-await": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz", - "integrity": "sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.1" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "license": "MIT" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, - "node_modules/sha.js": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", - "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", - "dev": true, - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.0" - }, - "bin": { - "sha.js": "bin.js" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sha3": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", - "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "6.0.3" - } - }, - "node_modules/sha3/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/shelljs/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/shelljs/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/simple-get": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", - "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-get/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/snake-case": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/solc": { - "version": "0.4.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", - "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fs-extra": "^0.30.0", - "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" - }, - "bin": { - "solcjs": "solcjs" - } - }, - "node_modules/solc/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/solc/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/solc/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/solc/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true, - "license": "ISC" - }, - "node_modules/solc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/solc/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/solc/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/solc/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/solc/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/solc/node_modules/yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" - } - }, - "node_modules/solc/node_modules/yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" - } - }, - "node_modules/solhint": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/solhint/-/solhint-3.6.2.tgz", - "integrity": "sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@solidity-parser/parser": "^0.16.0", - "ajv": "^6.12.6", - "antlr4": "^4.11.0", - "ast-parents": "^0.0.1", - "chalk": "^4.1.2", - "commander": "^10.0.0", - "cosmiconfig": "^8.0.0", - "fast-diff": "^1.2.0", - "glob": "^8.0.3", - "ignore": "^5.2.4", - "js-yaml": "^4.1.0", - "lodash": "^4.17.21", - "pluralize": "^8.0.0", - "semver": "^7.5.2", - "strip-ansi": "^6.0.1", - "table": "^6.8.1", - "text-table": "^0.2.0" - }, - "bin": { - "solhint": "solhint.js" - }, - "optionalDependencies": { - "prettier": "^2.8.3" - } - }, - "node_modules/solhint/node_modules/@solidity-parser/parser": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.2.tgz", - "integrity": "sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "node_modules/solhint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/solhint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/solhint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/solhint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/solhint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/solhint/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/solhint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/solhint/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/solhint/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/solhint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/solhint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/solidity-ast": { - "version": "0.4.61", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.61.tgz", - "integrity": "sha512-OYBJYcYyG7gLV0VuXl9CUrvgJXjV/v0XnR4+1YomVe3q+QyENQXJJxAEASUz4vN6lMAl+C8RSRSr5MBAz09f6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/solidity-coverage": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.7.22.tgz", - "integrity": "sha512-I6Zd5tsFY+gmj1FDIp6w7OrUePx6ZpMgKQZg7dWgPaQHePLi3Jk+iJ8lwZxsWEoNy2Lcv91rMxATWHqRaFdQpw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@solidity-parser/parser": "^0.14.0", - "@truffle/provider": "^0.2.24", - "chalk": "^2.4.2", - "death": "^1.1.0", - "detect-port": "^1.3.0", - "fs-extra": "^8.1.0", - "ghost-testrpc": "^0.0.2", - "global-modules": "^2.0.0", - "globby": "^10.0.1", - "jsonschema": "^1.2.4", - "lodash": "^4.17.15", - "node-emoji": "^1.10.0", - "pify": "^4.0.1", - "recursive-readdir": "^2.2.2", - "sc-istanbul": "^0.4.5", - "semver": "^7.3.4", - "shelljs": "^0.8.3", - "web3-utils": "^1.3.0" - }, - "bin": { - "solidity-coverage": "plugins/bin.js" - } - }, - "node_modules/solidity-coverage/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/solidity-coverage/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/solidity-coverage/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/solidity-coverage/node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/solidity-coverage/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", - "dev": true, - "optional": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stacktrace-parser": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", - "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", - "license": "WTFPL OR MIT" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strnum": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", - "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - } - }, - "node_modules/swarm-js": { - "version": "0.1.42", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", - "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^11.8.5", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - } - }, - "node_modules/swarm-js/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/swarm-js/node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/swarm-js/node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/swarm-js/node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/swarm-js/node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/swarm-js/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/swarm-js/node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/sync-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", - "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/sync-rpc": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", - "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-port": "^3.1.0" - } - }, - "node_modules/table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "license": "MIT", - "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/tenderly": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/tenderly/-/tenderly-0.9.1.tgz", - "integrity": "sha512-EGhYYbOgIC0EUebrMIwCRIL9NrGrC8q3gTY/3JNSqvQrNX4RLUgMHungTG4bkgGAwJoehC57vsAeKqR1PVIyjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "axios": "^0.27.2", - "cli-table3": "^0.6.2", - "commander": "^9.4.0", - "js-yaml": "^4.1.0", - "open": "^8.4.0", - "prompts": "^2.4.2", - "tslog": "^4.4.0" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/tenderly/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/tenderly/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/tenderly/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/testrpc": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", - "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", - "deprecated": "testrpc has been renamed to ganache-cli, please use this package from now on.", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/then-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", - "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/concat-stream": "^1.6.0", - "@types/form-data": "0.0.33", - "@types/node": "^8.0.0", - "@types/qs": "^6.2.31", - "caseless": "~0.12.0", - "concat-stream": "^1.6.0", - "form-data": "^2.2.0", - "http-basic": "^8.1.1", - "http-response-object": "^3.0.1", - "promise": "^8.0.0", - "qs": "^6.4.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/then-request/node_modules/@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/then-request/node_modules/form-data": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", - "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.35", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/threads": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/threads/-/threads-1.7.0.tgz", - "integrity": "sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.1.0", - "debug": "^4.2.0", - "is-observable": "^2.1.0", - "observable-fns": "^0.6.1" - }, - "funding": { - "url": "https://github.com/andywer/threads.js?sponsor=1" - }, - "optionalDependencies": { - "tiny-worker": ">= 2" - } - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tiny-worker": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tiny-worker/-/tiny-worker-2.3.0.tgz", - "integrity": "sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "esm": "^3.2.25" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-buffer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", - "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-command-line-args": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", - "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", - "license": "ISC", - "dependencies": { - "chalk": "^4.1.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.0", - "string-format": "^2.0.0" - }, - "bin": { - "write-markdown": "dist/write-markdown.js" - } - }, - "node_modules/ts-command-line-args/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ts-command-line-args/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-command-line-args/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ts-command-line-args/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/ts-command-line-args/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-command-line-args/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-essentials": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", - "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", - "license": "MIT", - "peerDependencies": { - "typescript": ">=3.7.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, - "node_modules/tslog": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/tslog/-/tslog-4.10.2.tgz", - "integrity": "sha512-XuELoRpMR+sq8fuWwX7P0bcj+PRNiicOKDEb3fGNURhxWVyykCi9BNq7c4uVz7h7P0sj8qgBsr5SWS6yBClq3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/fullstack-build/tslog?sponsor=1" - } - }, - "node_modules/tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typechain": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", - "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", - "license": "MIT", - "dependencies": { - "@types/prettier": "^2.1.1", - "debug": "^4.3.1", - "fs-extra": "^7.0.0", - "glob": "7.1.7", - "js-sha3": "^0.8.0", - "lodash": "^4.17.15", - "mkdirp": "^1.0.4", - "prettier": "^2.3.1", - "ts-command-line-args": "^2.2.0", - "ts-essentials": "^7.0.1" - }, - "bin": { - "typechain": "dist/cli/cli.js" - }, - "peerDependencies": { - "typescript": ">=4.3.0" - } - }, - "node_modules/typechain/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/typechain/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typechain/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/typechain/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/typechain/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", - "dev": true, - "license": "MIT" - }, - "node_modules/undici": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", - "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, - "license": "MIT" - }, - "node_modules/unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", - "dev": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true, - "license": "MIT" - }, - "node_modules/upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "upper-case": "^1.1.1" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", - "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==", - "dev": true, - "license": "MIT" - }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "devOptional": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/web3": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.4.tgz", - "integrity": "sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-bzz": "1.10.4", - "web3-core": "1.10.4", - "web3-eth": "1.10.4", - "web3-eth-personal": "1.10.4", - "web3-net": "1.10.4", - "web3-shh": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-bzz": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.4.tgz", - "integrity": "sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/node": "^12.12.6", - "got": "12.1.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-bzz/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/web3-core": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.4.tgz", - "integrity": "sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/bn.js": "^5.1.1", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.10.4", - "web3-core-method": "1.10.4", - "web3-core-requestmanager": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-helpers": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", - "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-eth-iban": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.4.tgz", - "integrity": "sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.10.4", - "web3-core-promievent": "1.10.4", - "web3-core-subscriptions": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-promievent": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", - "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-requestmanager": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.4.tgz", - "integrity": "sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "util": "^0.12.5", - "web3-core-helpers": "1.10.4", - "web3-providers-http": "1.10.4", - "web3-providers-ipc": "1.10.4", - "web3-providers-ws": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-subscriptions": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.4.tgz", - "integrity": "sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/web3-core/node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/web3-eth": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.4.tgz", - "integrity": "sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.10.4", - "web3-core-helpers": "1.10.4", - "web3-core-method": "1.10.4", - "web3-core-subscriptions": "1.10.4", - "web3-eth-abi": "1.10.4", - "web3-eth-accounts": "1.10.4", - "web3-eth-contract": "1.10.4", - "web3-eth-ens": "1.10.4", - "web3-eth-iban": "1.10.4", - "web3-eth-personal": "1.10.4", - "web3-net": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-abi": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", - "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.4.tgz", - "integrity": "sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethereumjs/common": "2.6.5", - "@ethereumjs/tx": "3.5.2", - "@ethereumjs/util": "^8.1.0", - "eth-lib": "0.2.8", - "scrypt-js": "^3.0.1", - "uuid": "^9.0.0", - "web3-core": "1.10.4", - "web3-core-helpers": "1.10.4", - "web3-core-method": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "dev": true, - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/web3-eth-accounts/node_modules/@ethereumjs/util": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", - "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/web3-eth-accounts/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-eth-accounts/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-eth-accounts/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/web3-eth-accounts/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/web3-eth-accounts/node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/web3-eth-contract": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.4.tgz", - "integrity": "sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/bn.js": "^5.1.1", - "web3-core": "1.10.4", - "web3-core-helpers": "1.10.4", - "web3-core-method": "1.10.4", - "web3-core-promievent": "1.10.4", - "web3-core-subscriptions": "1.10.4", - "web3-eth-abi": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.4.tgz", - "integrity": "sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.10.4", - "web3-core-helpers": "1.10.4", - "web3-core-promievent": "1.10.4", - "web3-eth-abi": "1.10.4", - "web3-eth-contract": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-iban": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", - "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-personal": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.4.tgz", - "integrity": "sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.10.4", - "web3-core-helpers": "1.10.4", - "web3-core-method": "1.10.4", - "web3-net": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-personal/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/web3-net": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.4.tgz", - "integrity": "sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.10.4", - "web3-core-method": "1.10.4", - "web3-utils": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-http": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.4.tgz", - "integrity": "sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "abortcontroller-polyfill": "^1.7.5", - "cross-fetch": "^4.0.0", - "es6-promise": "^4.2.8", - "web3-core-helpers": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ipc": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.4.tgz", - "integrity": "sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ws": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.4.tgz", - "integrity": "sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.10.4", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-shh": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.4.tgz", - "integrity": "sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==", - "dev": true, - "hasInstallScript": true, - "license": "LGPL-3.0", - "dependencies": { - "web3-core": "1.10.4", - "web3-core-method": "1.10.4", - "web3-core-subscriptions": "1.10.4", - "web3-net": "1.10.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-utils": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", - "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", - "dev": true, - "license": "LGPL-3.0", - "dependencies": { - "@ethereumjs/util": "^8.1.0", - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereum-cryptography": "^2.1.2", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-utils/node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "dev": true, - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/web3-utils/node_modules/@ethereumjs/util": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", - "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/web3-utils/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/webextension-polyfill": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz", - "integrity": "sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==", - "license": "MPL-2.0" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/websocket": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz", - "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.63", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", - "dev": true, - "license": "MIT", - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "license": "MIT", - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "node_modules/xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "xhr-request": "^1.1.0" - } - }, - "node_modules/xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "cookiejar": "^2.1.1" - } - }, - "node_modules/xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yesno": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/yesno/-/yesno-0.3.1.tgz", - "integrity": "sha512-7RbCXegyu6DykWPWU0YEtW8gFJH8KBL2d5l2fqB0XpkH0Y9rk59YSSWpzEv7yNJBGAouPc67h3kkq0CZkpBdFw==", - "dev": true, - "license": "BSD" - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/packages/wallet-contracts/package.json b/packages/wallet-contracts/package.json deleted file mode 100644 index a29a88c48c..0000000000 --- a/packages/wallet-contracts/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "name": "@0xsequence/wallet-contracts", - "version": "3.0.1", - "private": true, - "license": "Apache-2.0", - "scripts": { - "build": "pnpm compile && pnpm adapter", - "compile": "hardhat --max-memory 4096 compile", - "clean": "rimraf artifacts && rimraf cache", - "typecheck": "tsc --noEmit", - "test": "hardhat test", - "benchmark": "BENCHMARK=true pnpm test", - "coverage": "COVERAGE=true NET_ID=1 hardhat coverage", - "deploy": "hardhat run utils/deploy-contracts.ts --network hardhat", - "verify": "hardhat verify --network", - "release": "pnpm publish src", - "lint": "pnpm lint:ts && pnpm lint:sol", - "lint:fix": "pnpm lint:ts:fix && pnpm lint:sol:fix", - "lint:sol": "solhint \"./contracts/**/*.sol\"", - "lint:sol:fix": "solhint \"./contracts/**/*.sol\" --fix", - "lint:ts": "eslint -c .eslintrc.js \"./**/*.ts\"", - "lint:ts:fix": "eslint -c .eslintrc.js --fix \"./**/*.ts\"", - "format": "prettier --write ./**/*.ts", - "adapter": "typechain --target ethers-v6 --out-dir gen/typechain \"./artifacts/contracts/**/*[^dbg].json\"", - "prepare": "husky" - }, - "types": "gen/typechain/index.ts", - "files": [ - "./LICENSE", - "./artifacts/contracts/**/*.json", - "./contracts/**/*.sol", - "./gen/typechain", - "./networks" - ], - "husky": { - "hooks": { - "pre-commit": "pnpm lint", - "pre-push": "pnpm lint && pnpm test" - } - }, - "devDependencies": { - "@nomicfoundation/hardhat-ethers": "^4.0.3", - "@nomicfoundation/hardhat-verify": "^3.0.7", - "@nomiclabs/hardhat-truffle5": "^2.1.0", - "@nomiclabs/hardhat-web3": "^2.1.0", - "@tenderly/hardhat-tenderly": "^2.3.0", - "@types/chai": "^4.3.20", - "@types/chai-as-promised": "^7.1.8", - "@types/chai-string": "^1.4.5", - "@types/mocha": "^8.2.3", - "@typescript-eslint/eslint-plugin": "^8.46.4", - "@typescript-eslint/parser": "^8.46.4", - "bn-chai": "^1.0.1", - "chai": "^4.5.0", - "chai-as-promised": "^7.1.2", - "chai-bignumber": "^3.1.0", - "chai-shallow-deep-equal": "^1.4.6", - "chai-string": "^1.6.0", - "child_process": "^1.0.2", - "dotenv": "^8.6.0", - "eslint": "^9.39.1", - "eslint-config-prettier": "^8.10.2", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-prettier": "^3.4.1", - "ethereum-waffle": "^4.0.10", - "ganache-cli": "6.12.2", - "hardhat": "^2.27.0", - "hardhat-gas-reporter": "1.0.10", - "husky": "^9.1.7", - "ora": "^5.4.1", - "rimraf": "^3.0.2", - "scrypt": "github:barrysteyn/node-scrypt#fb60a8d3c158fe115a624b5ffa7480f3a24b03fb", - "solhint": "^3.6.2", - "solidity-coverage": "^0.7.22", - "threads": "^1.7.0", - "ts-node": "^10.9.2", - "typechain": "^8.3.2", - "typescript": "^4.9.5", - "yesno": "^0.3.1" - }, - "config": { - "mnemonic": "test test test test test test test test test test test junk", - "ganacheChainID": 127001, - "ganachePort": 8545, - "ganacheGasLimit": "0xfffffffffff", - "ganacheGasPrice": "2", - "etherBalance": "100000", - "extra": "" - }, - "dependencies": { - "@0xsequence/wallet": "^2.3.33", - "@typechain/ethers-v6": "^0.5.1", - "0xsequence": "^1.10.15", - "ethers": "^6.15.0", - "keccak256": "^1.0.6" - }, - "description": "Ethereum contracts for the Sequence Smart Wallet at [https://sequence.app](https://sequence.app).", - "main": ".eslintrc.js", - "directories": { - "lib": "lib", - "test": "test" - }, - "keywords": [], - "author": "" -} diff --git a/packages/wallet-contracts/pnpm-lock.yaml b/packages/wallet-contracts/pnpm-lock.yaml deleted file mode 100644 index 91f5002c53..0000000000 --- a/packages/wallet-contracts/pnpm-lock.yaml +++ /dev/null @@ -1,13554 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@typechain/ethers-v6': - specifier: ^0.5.1 - version: 0.5.1(ethers@6.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@4.7.4))(typescript@4.7.4) - ethers: - specifier: ^6.13.0 - version: 6.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - keccak256: - specifier: ^1.0.6 - version: 1.0.6 - devDependencies: - '@nomicfoundation/hardhat-ethers': - specifier: ^3.0.5 - version: 3.0.6(ethers@6.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10)) - '@nomicfoundation/hardhat-verify': - specifier: ^2.0.4 - version: 2.0.8(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10)) - '@nomiclabs/hardhat-truffle5': - specifier: ^2.0.7 - version: 2.0.7(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@nomiclabs/hardhat-web3': - specifier: ^2.0.0 - version: 2.0.0(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@tenderly/hardhat-tenderly': - specifier: ^1.0.11 - version: 1.0.11(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10)) - '@types/chai': - specifier: ^4.3.16 - version: 4.3.16 - '@types/chai-as-promised': - specifier: ^7.1.0 - version: 7.1.0 - '@types/chai-string': - specifier: ^1.4.1 - version: 1.4.1 - '@types/mocha': - specifier: ^8.2.1 - version: 8.2.1 - '@typescript-eslint/eslint-plugin': - specifier: ^4.18.0 - version: 4.18.0(@typescript-eslint/parser@4.18.0(eslint@7.22.0)(typescript@4.7.4))(eslint@7.22.0)(typescript@4.7.4) - '@typescript-eslint/parser': - specifier: ^4.18.0 - version: 4.18.0(eslint@7.22.0)(typescript@4.7.4) - bn-chai: - specifier: ^1.0.1 - version: 1.0.1(chai@4.3.4) - chai: - specifier: ^4.3.4 - version: 4.3.4 - chai-as-promised: - specifier: ^7.1.1 - version: 7.1.1(chai@4.3.4) - chai-bignumber: - specifier: ^3.0.0 - version: 3.0.0 - chai-shallow-deep-equal: - specifier: ^1.4.6 - version: 1.4.6(chai@4.3.4) - chai-string: - specifier: ^1.5.0 - version: 1.5.0(chai@4.3.4) - child_process: - specifier: ^1.0.2 - version: 1.0.2 - dotenv: - specifier: ^8.2.0 - version: 8.2.0 - eslint: - specifier: ^7.22.0 - version: 7.22.0 - eslint-config-prettier: - specifier: ^8.1.0 - version: 8.1.0(eslint@7.22.0) - eslint-plugin-import: - specifier: ^2.22.0 - version: 2.22.0(@typescript-eslint/parser@4.18.0(eslint@7.22.0)(typescript@4.7.4))(eslint@7.22.0) - eslint-plugin-prettier: - specifier: ^3.3.1 - version: 3.3.1(eslint-config-prettier@8.1.0(eslint@7.22.0))(eslint@7.22.0)(prettier@3.2.5) - ethereum-waffle: - specifier: ^3.4.4 - version: 3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.7.4)(utf-8-validate@5.0.10) - ganache-cli: - specifier: 6.12.2 - version: 6.12.2 - hardhat: - specifier: ^2.20.1 - version: 2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10) - hardhat-gas-reporter: - specifier: 1.0.10 - version: 1.0.10(bufferutil@4.0.8)(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) - husky: - specifier: ^9.0.11 - version: 9.0.11 - ora: - specifier: ^5.4.1 - version: 5.4.1 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - scrypt: - specifier: github:barrysteyn/node-scrypt#fb60a8d3c158fe115a624b5ffa7480f3a24b03fb - version: https://codeload.github.com/barrysteyn/node-scrypt/tar.gz/fb60a8d3c158fe115a624b5ffa7480f3a24b03fb - solhint: - specifier: ^3.4.1 - version: 3.4.1(typescript@4.7.4) - solidity-coverage: - specifier: 0.8.3 - version: 0.8.3(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10)) - threads: - specifier: ^1.7.0 - version: 1.7.0 - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.11.20)(typescript@4.7.4) - typechain: - specifier: ^8.3.2 - version: 8.3.2(typescript@4.7.4) - typescript: - specifier: ^4.7.4 - version: 4.7.4 - yesno: - specifier: ^0.3.1 - version: 0.3.1 - -packages: - - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@adraffy/ens-normalize@1.10.1': - resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} - - '@babel/code-frame@7.12.11': - resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} - - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.23.9': - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} - engines: {node: '>=6.9.0'} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@ensdomains/address-encoder@0.1.9': - resolution: {integrity: sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==} - - '@ensdomains/ens@0.4.5': - resolution: {integrity: sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==} - deprecated: Please use @ensdomains/ens-contracts - - '@ensdomains/ensjs@2.1.0': - resolution: {integrity: sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==} - - '@ensdomains/resolver@0.2.4': - resolution: {integrity: sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==} - deprecated: Please use @ensdomains/ens-contracts - - '@eslint/eslintrc@0.4.3': - resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} - engines: {node: ^10.12.0 || >=12.0.0} - - '@ethereum-waffle/chai@3.4.4': - resolution: {integrity: sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g==} - engines: {node: '>=10.0'} - - '@ethereum-waffle/compiler@3.4.4': - resolution: {integrity: sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ==} - engines: {node: '>=10.0'} - - '@ethereum-waffle/ens@3.4.4': - resolution: {integrity: sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg==} - engines: {node: '>=10.0'} - - '@ethereum-waffle/mock-contract@3.4.4': - resolution: {integrity: sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA==} - engines: {node: '>=10.0'} - - '@ethereum-waffle/provider@3.4.4': - resolution: {integrity: sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g==} - engines: {node: '>=10.0'} - - '@ethereumjs/common@2.5.0': - resolution: {integrity: sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==} - - '@ethereumjs/common@2.6.5': - resolution: {integrity: sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==} - - '@ethereumjs/rlp@4.0.1': - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - - '@ethereumjs/tx@3.3.2': - resolution: {integrity: sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==} - - '@ethereumjs/tx@3.5.2': - resolution: {integrity: sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==} - - '@ethereumjs/util@8.1.0': - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} - - '@ethersproject/abi@5.0.0-beta.153': - resolution: {integrity: sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg==} - - '@ethersproject/abi@5.7.0': - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - - '@ethersproject/abstract-provider@5.7.0': - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - - '@ethersproject/abstract-signer@5.7.0': - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - - '@ethersproject/address@5.7.0': - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - - '@ethersproject/base64@5.7.0': - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - - '@ethersproject/basex@5.7.0': - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - - '@ethersproject/bignumber@5.7.0': - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - - '@ethersproject/bytes@5.7.0': - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - - '@ethersproject/constants@5.7.0': - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - - '@ethersproject/contracts@5.7.0': - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - - '@ethersproject/hash@5.7.0': - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - - '@ethersproject/hdnode@5.7.0': - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - - '@ethersproject/json-wallets@5.7.0': - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - - '@ethersproject/keccak256@5.7.0': - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - - '@ethersproject/logger@5.7.0': - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - '@ethersproject/networks@5.7.1': - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - - '@ethersproject/pbkdf2@5.7.0': - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} - - '@ethersproject/properties@5.7.0': - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - - '@ethersproject/providers@5.7.2': - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - - '@ethersproject/random@5.7.0': - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - - '@ethersproject/rlp@5.7.0': - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - - '@ethersproject/sha2@5.7.0': - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - - '@ethersproject/signing-key@5.7.0': - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - - '@ethersproject/solidity@5.7.0': - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - - '@ethersproject/strings@5.7.0': - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - - '@ethersproject/transactions@5.7.0': - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - - '@ethersproject/units@5.7.0': - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} - - '@ethersproject/wallet@5.7.0': - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} - - '@ethersproject/web@5.7.1': - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - - '@ethersproject/wordlists@5.7.0': - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - - '@fastify/busboy@2.1.0': - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} - engines: {node: '>=14'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@ljharb/resumer@0.0.1': - resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} - engines: {node: '>= 0.4'} - - '@ljharb/through@2.3.12': - resolution: {integrity: sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==} - engines: {node: '>= 0.4'} - - '@metamask/eth-sig-util@4.0.1': - resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} - engines: {node: '>=12.0.0'} - - '@noble/curves@1.2.0': - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - - '@noble/curves@1.3.0': - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} - - '@noble/hashes@1.2.0': - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - - '@noble/hashes@1.3.3': - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} - - '@noble/secp256k1@1.7.1': - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nomicfoundation/ethereumjs-block@5.0.4': - resolution: {integrity: sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==} - engines: {node: '>=18'} - - '@nomicfoundation/ethereumjs-blockchain@7.0.4': - resolution: {integrity: sha512-jYsd/kwzbmpnxx86tXsYV8wZ5xGvFL+7/P0c6OlzpClHsbFzeF41KrYA9scON8Rg6bZu3ZTv6JOAgj3t7USUfg==} - engines: {node: '>=18'} - - '@nomicfoundation/ethereumjs-common@4.0.4': - resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} - - '@nomicfoundation/ethereumjs-ethash@3.0.4': - resolution: {integrity: sha512-xvIrwIMl9sSaiYKRem68+O7vYdj7Q2XWv5P7JXiIkn83918QzWHvqbswTRsH7+r6X1UEvdsURRnZbvZszEjAaQ==} - engines: {node: '>=18'} - - '@nomicfoundation/ethereumjs-evm@2.0.4': - resolution: {integrity: sha512-lTyZZi1KpeMHzaO6cSVisR2tjiTTedjo7PcmhI/+GNFo9BmyY6QYzGeSti0sFttmjbEMioHgXxl5yrLNRg6+1w==} - engines: {node: '>=18'} - - '@nomicfoundation/ethereumjs-rlp@5.0.4': - resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} - engines: {node: '>=18'} - hasBin: true - - '@nomicfoundation/ethereumjs-statemanager@2.0.4': - resolution: {integrity: sha512-HPDjeFrxw6llEi+BzqXkZ+KkvFnTOPczuHBtk21hRlDiuKuZz32dPzlhpRsDBGV1b5JTmRDUVqCS1lp3Gghw4Q==} - peerDependencies: - '@nomicfoundation/ethereumjs-verkle': 0.0.2 - peerDependenciesMeta: - '@nomicfoundation/ethereumjs-verkle': - optional: true - - '@nomicfoundation/ethereumjs-trie@6.0.4': - resolution: {integrity: sha512-3nSwQiFMvr2VFe/aZUyinuohYvtytUqZCUCvIWcPJ/BwJH6oQdZRB42aNFBJ/8nAh2s3OcroWpBLskzW01mFKA==} - engines: {node: '>=18'} - - '@nomicfoundation/ethereumjs-tx@5.0.4': - resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true - - '@nomicfoundation/ethereumjs-util@9.0.4': - resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true - - '@nomicfoundation/ethereumjs-verkle@0.0.2': - resolution: {integrity: sha512-bjnfZElpYGK/XuuVRmLS3yDvr+cDs85D9oonZ0YUa5A3lgFgokWMp76zXrxX2jVQ0BfHaw12y860n1+iOi6yFQ==} - engines: {node: '>=18'} - - '@nomicfoundation/ethereumjs-vm@7.0.4': - resolution: {integrity: sha512-gsA4IhmtWHI4BofKy3kio9W+dqZQs5Ji5mLjLYxHCkat+JQBUt5szjRKra2F9nGDJ2XcI/wWb0YWUFNgln4zRQ==} - engines: {node: '>=18'} - - '@nomicfoundation/hardhat-ethers@3.0.6': - resolution: {integrity: sha512-/xzkFQAaHQhmIAYOQmvHBPwL+NkwLzT9gRZBsgWUYeV+E6pzXsBQsHfRYbAZ3XEYare+T7S+5Tg/1KDJgepSkA==} - peerDependencies: - ethers: ^6.1.0 - hardhat: ^2.0.0 - - '@nomicfoundation/hardhat-verify@2.0.8': - resolution: {integrity: sha512-x/OYya7A2Kcz+3W/J78dyDHxr0ezU23DKTrRKfy5wDPCnePqnr79vm8EXqX3gYps6IjPBYyGPZ9K6E5BnrWx5Q==} - peerDependencies: - hardhat: ^2.0.4 - - '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1': - resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1': - resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1': - resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1': - resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1': - resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1': - resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1': - resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1': - resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1': - resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1': - resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@nomicfoundation/solidity-analyzer@0.1.1': - resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} - engines: {node: '>= 12'} - - '@nomiclabs/hardhat-truffle5@2.0.7': - resolution: {integrity: sha512-Pw8451IUZp1bTp0QqCHCYfCHs66sCnyxPcaorapu9mfOV9xnZsVaFdtutnhNEiXdiZwbed7LFKpRsde4BjFwig==} - peerDependencies: - '@nomiclabs/hardhat-web3': ^2.0.0 - hardhat: ^2.6.4 - web3: ^1.0.0-beta.36 - - '@nomiclabs/hardhat-web3@2.0.0': - resolution: {integrity: sha512-zt4xN+D+fKl3wW2YlTX3k9APR3XZgPkxJYf36AcliJn3oujnKEVRZaHu0PhgLjO+gR+F/kiYayo9fgd2L8970Q==} - peerDependencies: - hardhat: ^2.0.0 - web3: ^1.0.0-beta.36 - - '@nomiclabs/truffle-contract@4.5.10': - resolution: {integrity: sha512-nF/6InFV+0hUvutyFgsdOMCoYlr//2fJbRER4itxYtQtc4/O1biTwZIKRu+5l2J5Sq6LU2WX7vZHtDgQdhWxIQ==} - peerDependencies: - web3: ^1.2.1 - web3-core-helpers: ^1.2.1 - web3-core-promievent: ^1.2.1 - web3-eth-abi: ^1.2.1 - web3-utils: ^1.2.1 - - '@resolver-engine/core@0.3.3': - resolution: {integrity: sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==} - - '@resolver-engine/fs@0.3.3': - resolution: {integrity: sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==} - - '@resolver-engine/imports-fs@0.3.3': - resolution: {integrity: sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==} - - '@resolver-engine/imports@0.3.3': - resolution: {integrity: sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==} - - '@scure/base@1.1.5': - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} - - '@scure/bip32@1.1.5': - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - - '@scure/bip32@1.3.3': - resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} - - '@scure/bip39@1.1.1': - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} - - '@scure/bip39@1.2.2': - resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} - - '@sentry/core@5.30.0': - resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} - engines: {node: '>=6'} - - '@sentry/hub@5.30.0': - resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} - engines: {node: '>=6'} - - '@sentry/minimal@5.30.0': - resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} - engines: {node: '>=6'} - - '@sentry/node@5.30.0': - resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} - engines: {node: '>=6'} - - '@sentry/tracing@5.30.0': - resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} - engines: {node: '>=6'} - - '@sentry/types@5.30.0': - resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} - engines: {node: '>=6'} - - '@sentry/utils@5.30.0': - resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} - engines: {node: '>=6'} - - '@sindresorhus/is@0.14.0': - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} - - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - - '@solidity-parser/parser@0.14.5': - resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} - - '@solidity-parser/parser@0.16.2': - resolution: {integrity: sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==} - - '@szmarczak/http-timer@1.1.2': - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} - - '@szmarczak/http-timer@4.0.6': - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} - - '@szmarczak/http-timer@5.0.1': - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - - '@tenderly/hardhat-tenderly@1.0.11': - resolution: {integrity: sha512-ZWE8NYUaCNQfzLk4psVcwRXDadDzOWT6Il8hdazzOGYo4EF6vunv6/DHJTGR1JD/FLx7ub0HOwCAHJU8wL2l2A==} - peerDependencies: - hardhat: ^2.0.3 - - '@truffle/abi-utils@1.0.3': - resolution: {integrity: sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==} - engines: {node: ^16.20 || ^18.16 || >=20} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@truffle/blockchain-utils@0.1.9': - resolution: {integrity: sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg==} - engines: {node: ^16.20 || ^18.16 || >=20} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@truffle/codec@0.17.3': - resolution: {integrity: sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg==} - engines: {node: ^16.20 || ^18.16 || >=20} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@truffle/compile-common@0.9.8': - resolution: {integrity: sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ==} - engines: {node: ^16.20 || ^18.16 || >=20} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@truffle/contract-schema@3.4.16': - resolution: {integrity: sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==} - engines: {node: ^16.20 || ^18.16 || >=20} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@truffle/debug-utils@6.0.57': - resolution: {integrity: sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA==} - engines: {node: ^16.20 || ^18.16 || >=20} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@truffle/error@0.1.1': - resolution: {integrity: sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@truffle/error@0.2.2': - resolution: {integrity: sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==} - engines: {node: ^16.20 || ^18.16 || >=20} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@truffle/interface-adapter@0.5.37': - resolution: {integrity: sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw==} - engines: {node: ^16.20 || ^18.16 || >=20} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@trufflesuite/chromafi@3.0.0': - resolution: {integrity: sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ==} - - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@typechain/ethers-v5@2.0.0': - resolution: {integrity: sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw==} - peerDependencies: - ethers: ^5.0.0 - typechain: ^3.0.0 - - '@typechain/ethers-v6@0.5.1': - resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} - peerDependencies: - ethers: 6.x - typechain: ^8.3.2 - typescript: '>=4.7.0' - - '@types/bignumber.js@5.0.0': - resolution: {integrity: sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA==} - deprecated: This is a stub types definition for bignumber.js (https://github.com/MikeMcl/bignumber.js/). bignumber.js provides its own type definitions, so you don't need @types/bignumber.js installed! - - '@types/bn.js@4.11.6': - resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} - - '@types/bn.js@5.1.5': - resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} - - '@types/cacheable-request@6.0.3': - resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - - '@types/chai-as-promised@7.1.0': - resolution: {integrity: sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==} - - '@types/chai-string@1.4.1': - resolution: {integrity: sha512-aRNMs6TKgjgPlCHwDfq/YNy5VtRR2hJ4AUWByddrT0TRVVD8eX4MiHW6/iHvmQHRlVuuPZcwnTUE7b4yFt7bEA==} - - '@types/chai@4.3.16': - resolution: {integrity: sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==} - - '@types/concat-stream@1.6.1': - resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/form-data@0.0.33': - resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} - - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - - '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/keyv@3.1.4': - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - - '@types/lru-cache@5.1.1': - resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} - - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - '@types/mkdirp@0.5.2': - resolution: {integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==} - - '@types/mocha@8.2.1': - resolution: {integrity: sha512-NysN+bNqj6E0Hv4CTGWSlPzMW6vTKjDpOteycDkV4IWBsO+PU48JonrPzV9ODjiI2XrjmA05KInLgF5ivZ/YGQ==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/node-fetch@2.6.11': - resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - - '@types/node@10.17.60': - resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@18.15.13': - resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} - - '@types/node@20.11.20': - resolution: {integrity: sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==} - - '@types/node@8.10.66': - resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} - - '@types/pbkdf2@3.1.2': - resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} - - '@types/prettier@2.7.3': - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - - '@types/qs@6.9.11': - resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} - - '@types/readable-stream@2.3.15': - resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} - - '@types/resolve@0.0.8': - resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} - - '@types/responselike@1.0.3': - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - - '@types/secp256k1@4.0.6': - resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} - - '@typescript-eslint/eslint-plugin@4.18.0': - resolution: {integrity: sha512-Lzkc/2+7EoH7+NjIWLS2lVuKKqbEmJhtXe3rmfA8cyiKnZm3IfLf51irnBcmow8Q/AptVV0XBZmBJKuUJTe6cQ==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - '@typescript-eslint/parser': ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/experimental-utils@4.18.0': - resolution: {integrity: sha512-92h723Kblt9JcT2RRY3QS2xefFKar4ZQFVs3GityOKWQYgtajxt/tuXIzL7sVCUlM1hgreiV5gkGYyBpdOwO6A==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: '*' - - '@typescript-eslint/parser@4.18.0': - resolution: {integrity: sha512-W3z5S0ZbecwX3PhJEAnq4mnjK5JJXvXUDBYIYGoweCyWyuvAKfGHvzmpUzgB5L4cRBb+cTu9U/ro66dx7dIimA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@4.18.0': - resolution: {integrity: sha512-olX4yN6rvHR2eyFOcb6E4vmhDPsfdMyfQ3qR+oQNkAv8emKKlfxTWUXU5Mqxs2Fwe3Pf1BoPvrwZtwngxDzYzQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - - '@typescript-eslint/types@4.18.0': - resolution: {integrity: sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - - '@typescript-eslint/typescript-estree@4.18.0': - resolution: {integrity: sha512-wt4xvF6vvJI7epz+rEqxmoNQ4ZADArGQO9gDU+cM0U5fdVv7N+IAuVoVAoZSOZxzGHBfvE3XQMLdy+scsqFfeg==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/visitor-keys@4.18.0': - resolution: {integrity: sha512-Q9t90JCvfYaN0OfFUgaLqByOfz8yPeTAdotn/XYNm5q9eHax90gzdb+RJ6E9T5s97Kv/UHWKERTmqA0jTKAEHw==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - - abbrev@1.0.9: - resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} - - abortcontroller-polyfill@1.7.5: - resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} - - abstract-leveldown@2.6.3: - resolution: {integrity: sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==} - - abstract-leveldown@2.7.2: - resolution: {integrity: sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==} - - abstract-leveldown@3.0.0: - resolution: {integrity: sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==} - engines: {node: '>=4'} - - abstract-leveldown@5.0.0: - resolution: {integrity: sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==} - engines: {node: '>=6'} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - - adm-zip@0.4.16: - resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} - engines: {node: '>=0.3.0'} - - aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - - aes-js@3.1.2: - resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} - - aes-js@4.0.0-beta.5: - resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - amdefine@1.0.1: - resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} - engines: {node: '>=0.4.2'} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@3.2.3: - resolution: {integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==} - engines: {node: '>=6'} - - ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - antlr4@4.13.1: - resolution: {integrity: sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==} - engines: {node: '>=16'} - - antlr4ts@0.5.0-alpha.4: - resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - - arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - - arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - - array-back@1.0.4: - resolution: {integrity: sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==} - engines: {node: '>=0.12.0'} - - array-back@2.0.0: - resolution: {integrity: sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==} - engines: {node: '>=4'} - - array-back@3.1.0: - resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} - engines: {node: '>=6'} - - array-back@4.0.2: - resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} - engines: {node: '>=8'} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} - - array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.reduce@1.0.6: - resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - - asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - - assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - - ast-parents@0.0.1: - resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} - - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - - async-eventemitter@0.2.4: - resolution: {integrity: sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==} - - async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - - async@1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - - async@2.6.2: - resolution: {integrity: sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - - aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} - - axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - - axios@1.6.7: - resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} - - babel-code-frame@6.26.0: - resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} - - babel-core@6.26.3: - resolution: {integrity: sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==} - - babel-generator@6.26.1: - resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==} - - babel-helper-builder-binary-assignment-operator-visitor@6.24.1: - resolution: {integrity: sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==} - - babel-helper-call-delegate@6.24.1: - resolution: {integrity: sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==} - - babel-helper-define-map@6.26.0: - resolution: {integrity: sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==} - - babel-helper-explode-assignable-expression@6.24.1: - resolution: {integrity: sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==} - - babel-helper-function-name@6.24.1: - resolution: {integrity: sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==} - - babel-helper-get-function-arity@6.24.1: - resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} - - babel-helper-hoist-variables@6.24.1: - resolution: {integrity: sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==} - - babel-helper-optimise-call-expression@6.24.1: - resolution: {integrity: sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==} - - babel-helper-regex@6.26.0: - resolution: {integrity: sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==} - - babel-helper-remap-async-to-generator@6.24.1: - resolution: {integrity: sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==} - - babel-helper-replace-supers@6.24.1: - resolution: {integrity: sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==} - - babel-helpers@6.24.1: - resolution: {integrity: sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==} - - babel-messages@6.23.0: - resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} - - babel-plugin-check-es2015-constants@6.22.0: - resolution: {integrity: sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==} - - babel-plugin-syntax-async-functions@6.13.0: - resolution: {integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==} - - babel-plugin-syntax-exponentiation-operator@6.13.0: - resolution: {integrity: sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==} - - babel-plugin-syntax-trailing-function-commas@6.22.0: - resolution: {integrity: sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==} - - babel-plugin-transform-async-to-generator@6.24.1: - resolution: {integrity: sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==} - - babel-plugin-transform-es2015-arrow-functions@6.22.0: - resolution: {integrity: sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==} - - babel-plugin-transform-es2015-block-scoped-functions@6.22.0: - resolution: {integrity: sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==} - - babel-plugin-transform-es2015-block-scoping@6.26.0: - resolution: {integrity: sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==} - - babel-plugin-transform-es2015-classes@6.24.1: - resolution: {integrity: sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==} - - babel-plugin-transform-es2015-computed-properties@6.24.1: - resolution: {integrity: sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==} - - babel-plugin-transform-es2015-destructuring@6.23.0: - resolution: {integrity: sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==} - - babel-plugin-transform-es2015-duplicate-keys@6.24.1: - resolution: {integrity: sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==} - - babel-plugin-transform-es2015-for-of@6.23.0: - resolution: {integrity: sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==} - - babel-plugin-transform-es2015-function-name@6.24.1: - resolution: {integrity: sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==} - - babel-plugin-transform-es2015-literals@6.22.0: - resolution: {integrity: sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==} - - babel-plugin-transform-es2015-modules-amd@6.24.1: - resolution: {integrity: sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==} - - babel-plugin-transform-es2015-modules-commonjs@6.26.2: - resolution: {integrity: sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==} - - babel-plugin-transform-es2015-modules-systemjs@6.24.1: - resolution: {integrity: sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==} - - babel-plugin-transform-es2015-modules-umd@6.24.1: - resolution: {integrity: sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==} - - babel-plugin-transform-es2015-object-super@6.24.1: - resolution: {integrity: sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==} - - babel-plugin-transform-es2015-parameters@6.24.1: - resolution: {integrity: sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==} - - babel-plugin-transform-es2015-shorthand-properties@6.24.1: - resolution: {integrity: sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==} - - babel-plugin-transform-es2015-spread@6.22.0: - resolution: {integrity: sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==} - - babel-plugin-transform-es2015-sticky-regex@6.24.1: - resolution: {integrity: sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==} - - babel-plugin-transform-es2015-template-literals@6.22.0: - resolution: {integrity: sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==} - - babel-plugin-transform-es2015-typeof-symbol@6.23.0: - resolution: {integrity: sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==} - - babel-plugin-transform-es2015-unicode-regex@6.24.1: - resolution: {integrity: sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==} - - babel-plugin-transform-exponentiation-operator@6.24.1: - resolution: {integrity: sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==} - - babel-plugin-transform-regenerator@6.26.0: - resolution: {integrity: sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==} - - babel-plugin-transform-strict-mode@6.24.1: - resolution: {integrity: sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==} - - babel-preset-env@1.7.0: - resolution: {integrity: sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==} - - babel-register@6.26.0: - resolution: {integrity: sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==} - - babel-runtime@6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} - - babel-template@6.26.0: - resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} - - babel-traverse@6.26.0: - resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} - - babel-types@6.26.0: - resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} - - babelify@7.3.0: - resolution: {integrity: sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA==} - - babylon@6.18.0: - resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} - hasBin: true - - backoff@2.5.0: - resolution: {integrity: sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==} - engines: {node: '>= 0.6'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - - bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - - bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - - big-integer@1.6.36: - resolution: {integrity: sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==} - engines: {node: '>=0.6'} - - big.js@6.2.1: - resolution: {integrity: sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==} - - bigint-crypto-utils@3.3.0: - resolution: {integrity: sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==} - engines: {node: '>=14.0.0'} - - bignumber.js@7.2.1: - resolution: {integrity: sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - bip39@2.5.0: - resolution: {integrity: sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - - bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - - bn-chai@1.0.1: - resolution: {integrity: sha512-7rJXt21DwYiLLpvzLaACixBBoUGkRV1iuFD3wElEhw8Ji9IiY/QsJRtvW+c7ChRgEOyLQkGaSGFUUqBKm21SNA==} - peerDependencies: - chai: '>= 2.1.2 < 5' - - bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - - bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - - browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - - browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - - browserify-sign@4.2.2: - resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} - engines: {node: '>= 4'} - - browserslist@3.2.8: - resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} - hasBin: true - - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-to-arraybuffer@0.0.5: - resolution: {integrity: sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==} - - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer-xor@2.0.2: - resolution: {integrity: sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - bytewise-core@1.2.3: - resolution: {integrity: sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==} - - bytewise@1.1.0: - resolution: {integrity: sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==} - - cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - - cacheable-lookup@5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - - cacheable-lookup@6.1.0: - resolution: {integrity: sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==} - engines: {node: '>=10.6.0'} - - cacheable-request@6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} - - cacheable-request@7.0.4: - resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} - engines: {node: '>=8'} - - cachedown@1.0.0: - resolution: {integrity: sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU=} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@3.0.0: - resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - - camelcase@3.0.0: - resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} - engines: {node: '>=0.10.0'} - - camelcase@4.1.0: - resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} - engines: {node: '>=4'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-lite@1.0.30001589: - resolution: {integrity: sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==} - - caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - - cbor@5.2.0: - resolution: {integrity: sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==} - engines: {node: '>=6.0.0'} - - cbor@8.1.0: - resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} - engines: {node: '>=12.19'} - - chai-as-promised@7.1.1: - resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} - peerDependencies: - chai: '>= 2.1.2 < 5' - - chai-bignumber@3.0.0: - resolution: {integrity: sha512-SubOtaSI2AILWTWe2j0c6i2yFT/f9J6UBjeVGDuwDiPLkF/U5+/eTWUE3sbCZ1KgcPF6UJsDVYbIxaYA097MQA==} - - chai-shallow-deep-equal@1.4.6: - resolution: {integrity: sha512-2fBsQVRwrHdNO7IPYmoeH/V9+tuBDDg3k054NKdZ7tWeoi0URPzt8P+LNqcJioLVBTH/WiNM6a8CT5nWMebhPg==} - engines: {node: '>= 0.6.0'} - peerDependencies: - chai: '>= 1.9.0' - - chai-string@1.5.0: - resolution: {integrity: sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==} - peerDependencies: - chai: ^4.1.2 - - chai@4.3.4: - resolution: {integrity: sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==} - engines: {node: '>=4'} - - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - change-case@3.0.2: - resolution: {integrity: sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==} - - charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - checkpoint-store@1.1.0: - resolution: {integrity: sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==} - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - - child_process@1.0.2: - resolution: {integrity: sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==} - - chokidar@3.3.0: - resolution: {integrity: sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==} - engines: {node: '>= 8.10.0'} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - - cids@0.7.5: - resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} - engines: {node: '>=4.0.0', npm: '>=3.0.0'} - deprecated: This module has been superseded by the multiformats module - - cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - - class-is@1.1.0: - resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} - - class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-table3@0.5.1: - resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} - engines: {node: '>=6'} - - cliui@3.2.0: - resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} - - cliui@5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - - code-point-at@1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - - collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - - command-line-args@4.0.7: - resolution: {integrity: sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==} - hasBin: true - - command-line-args@5.2.1: - resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} - engines: {node: '>=4.0.0'} - - command-line-usage@6.1.3: - resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} - engines: {node: '>=8.0.0'} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@3.0.2: - resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} - - component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - - concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - - constant-case@2.0.0: - resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} - - contains-path@0.1.0: - resolution: {integrity: sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==} - engines: {node: '>=0.10.0'} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-hash@2.5.2: - resolution: {integrity: sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - cookie-signature@1.0.6: - resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} - - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - cookiejar@2.1.4: - resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} - - copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - - core-js-pure@3.36.0: - resolution: {integrity: sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ==} - - core-js@2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - - core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - - create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-fetch@2.2.6: - resolution: {integrity: sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==} - - cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - - crypto-addr-codec@0.1.8: - resolution: {integrity: sha512-GqAK90iLLgP3FvhNmHbpT3wR6dEdaM8hZyZtLX29SPardh3OA13RFLHDR6sntGCgRWOfiHqW6sIyohpNqOtV/g==} - - crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} - - dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - - death@1.1.0: - resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.6: - resolution: {integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==} - deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - - decompress-response@3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - deep-eql@3.0.1: - resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} - engines: {node: '>=0.12'} - - deep-equal@1.1.2: - resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} - engines: {node: '>= 0.4'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - defer-to-connect@1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - - defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - - deferred-leveldown@1.2.2: - resolution: {integrity: sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==} - - deferred-leveldown@4.0.2: - resolution: {integrity: sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==} - engines: {node: '>=6'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - - define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - - define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - - defined@1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-indent@4.0.0: - resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==} - engines: {node: '>=0.10.0'} - - detect-indent@5.0.0: - resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} - engines: {node: '>=4'} - - detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} - hasBin: true - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - - diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - - difflib@0.2.4: - resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@1.5.0: - resolution: {integrity: sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - dot-case@2.1.1: - resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} - - dotenv@8.2.0: - resolution: {integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==} - engines: {node: '>=8'} - - dotignore@0.1.2: - resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} - hasBin: true - - duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - - ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - - ee-first@1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} - - electron-to-chromium@1.4.682: - resolution: {integrity: sha512-oCglfs8yYKs9RQjJFOHonSnhikPK3y+0SvSYc/YpYJV//6rqc0/hbwd0c7vgK4vrl6y2gJAwjkhkSGWK+z4KRA==} - - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encoding-down@5.0.4: - resolution: {integrity: sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==} - engines: {node: '>=6'} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-abstract@1.22.4: - resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} - engines: {node: '>= 0.4'} - - es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - es5-ext@0.10.63: - resolution: {integrity: sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ==} - engines: {node: '>=0.10'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escodegen@1.8.1: - resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} - engines: {node: '>=0.12.0'} - hasBin: true - - eslint-config-prettier@8.1.0: - resolution: {integrity: sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-module-utils@2.8.0: - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-import@2.22.0: - resolution: {integrity: sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-prettier@3.3.1: - resolution: {integrity: sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '>=5.0.0' - eslint-config-prettier: '*' - prettier: '>=1.13.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - - eslint@7.22.0: - resolution: {integrity: sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==} - engines: {node: ^10.12.0 || >=12.0.0} - hasBin: true - - esm@3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - - espree@7.3.1: - resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} - engines: {node: ^10.12.0 || >=12.0.0} - - esprima@2.7.3: - resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} - engines: {node: '>=0.10.0'} - hasBin: true - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@1.9.3: - resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} - engines: {node: '>=0.10.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - eth-block-tracker@3.0.1: - resolution: {integrity: sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug==} - - eth-ens-namehash@2.0.8: - resolution: {integrity: sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==} - - eth-gas-reporter@0.2.27: - resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} - peerDependencies: - '@codechecks/client': ^0.1.0 - peerDependenciesMeta: - '@codechecks/client': - optional: true - - eth-json-rpc-infura@3.2.1: - resolution: {integrity: sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - eth-json-rpc-middleware@1.6.0: - resolution: {integrity: sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q==} - - eth-lib@0.1.29: - resolution: {integrity: sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==} - - eth-lib@0.2.8: - resolution: {integrity: sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==} - - eth-query@2.1.2: - resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} - - eth-sig-util@1.4.2: - resolution: {integrity: sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw==} - deprecated: Deprecated in favor of '@metamask/eth-sig-util' - - eth-sig-util@3.0.0: - resolution: {integrity: sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ==} - deprecated: Deprecated in favor of '@metamask/eth-sig-util' - - eth-tx-summary@3.2.4: - resolution: {integrity: sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg==} - - ethashjs@0.0.8: - resolution: {integrity: sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw==} - deprecated: 'New package name format for new versions: @ethereumjs/ethash. Please update.' - - ethereum-bloom-filters@1.0.10: - resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} - - ethereum-common@0.0.18: - resolution: {integrity: sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==} - - ethereum-common@0.2.0: - resolution: {integrity: sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==} - - ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} - - ethereum-cryptography@1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - - ethereum-cryptography@2.1.3: - resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} - - ethereum-ens@0.8.0: - resolution: {integrity: sha512-a8cBTF4AWw1Q1Y37V1LSCS9pRY4Mh3f8vCg5cbXCCEJ3eno1hbI/+Ccv9SZLISYpqQhaglP3Bxb/34lS4Qf7Bg==} - - ethereum-waffle@3.4.4: - resolution: {integrity: sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q==} - engines: {node: '>=10.0'} - hasBin: true - - ethereumjs-abi@0.6.5: - resolution: {integrity: sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g==} - - ethereumjs-abi@0.6.8: - resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} - - ethereumjs-abi@https://codeload.github.com/ethereumjs/ethereumjs-abi/tar.gz/ee3994657fa7a427238e6ba92a84d0b529bbcde0: - resolution: {tarball: https://codeload.github.com/ethereumjs/ethereumjs-abi/tar.gz/ee3994657fa7a427238e6ba92a84d0b529bbcde0} - version: 0.6.8 - - ethereumjs-account@2.0.5: - resolution: {integrity: sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==} - - ethereumjs-account@3.0.0: - resolution: {integrity: sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA==} - deprecated: Please use Util.Account class found on package ethereumjs-util@^7.0.6 https://github.com/ethereumjs/ethereumjs-util/releases/tag/v7.0.6 - - ethereumjs-block@1.7.1: - resolution: {integrity: sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==} - deprecated: 'New package name format for new versions: @ethereumjs/block. Please update.' - - ethereumjs-block@2.2.2: - resolution: {integrity: sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==} - deprecated: 'New package name format for new versions: @ethereumjs/block. Please update.' - - ethereumjs-blockchain@4.0.4: - resolution: {integrity: sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ==} - deprecated: 'New package name format for new versions: @ethereumjs/blockchain. Please update.' - - ethereumjs-common@1.5.0: - resolution: {integrity: sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==} - deprecated: 'New package name format for new versions: @ethereumjs/common. Please update.' - - ethereumjs-tx@1.3.7: - resolution: {integrity: sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==} - deprecated: 'New package name format for new versions: @ethereumjs/tx. Please update.' - - ethereumjs-tx@2.1.2: - resolution: {integrity: sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==} - deprecated: 'New package name format for new versions: @ethereumjs/tx. Please update.' - - ethereumjs-util@4.5.1: - resolution: {integrity: sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w==} - - ethereumjs-util@5.2.1: - resolution: {integrity: sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==} - - ethereumjs-util@6.2.1: - resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} - - ethereumjs-util@7.1.5: - resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} - engines: {node: '>=10.0.0'} - - ethereumjs-vm@2.6.0: - resolution: {integrity: sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==} - deprecated: 'New package name format for new versions: @ethereumjs/vm. Please update.' - - ethereumjs-vm@4.2.0: - resolution: {integrity: sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA==} - deprecated: 'New package name format for new versions: @ethereumjs/vm. Please update.' - - ethereumjs-wallet@0.6.5: - resolution: {integrity: sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA==} - - ethers@4.0.49: - resolution: {integrity: sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==} - - ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - - ethers@6.13.0: - resolution: {integrity: sha512-+yyQQQWEntY5UVbCv++guA14RRVFm1rSnO1GoLFdrK7/XRWMoktNgyG9UjwxrQqGBfGyFKknNZ81YpUS2emCgg==} - engines: {node: '>=14.0.0'} - - ethjs-unit@0.1.6: - resolution: {integrity: sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=} - engines: {node: '>=6.5.0', npm: '>=3'} - - ethjs-util@0.1.6: - resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} - engines: {node: '>=6.5.0', npm: '>=3'} - - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - - eventemitter3@4.0.4: - resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - - expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - - express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} - - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - - extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - - fake-merkle-patricia-tree@1.0.1: - resolution: {integrity: sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==} - - fast-check@3.1.1: - resolution: {integrity: sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==} - engines: {node: '>=8.0.0'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fetch-ponyfill@4.1.0: - resolution: {integrity: sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g==} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - - find-replace@1.0.3: - resolution: {integrity: sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA==} - engines: {node: '>=4.0.0'} - - find-replace@3.0.0: - resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} - engines: {node: '>=4.0.0'} - - find-up@1.1.2: - resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} - engines: {node: '>=0.10.0'} - - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-yarn-workspace-root@1.2.1: - resolution: {integrity: sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==} - - find-yarn-workspace-root@2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flat@4.1.1: - resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} - hasBin: true - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - flow-stoplight@1.0.0: - resolution: {integrity: sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA==} - - follow-redirects@1.15.5: - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - - form-data-encoder@1.7.1: - resolution: {integrity: sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==} - - form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - - form-data@2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fp-ts@1.19.3: - resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} - - fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - - fresh@0.5.2: - resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} - engines: {node: '>= 0.6'} - - fs-extra@0.30.0: - resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} - - fs-extra@4.0.3: - resolution: {integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-minipass@1.2.7: - resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} - - fs-readdir-recursive@1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.1.3: - resolution: {integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - deprecated: '"Please update to latest v2.3 or v2.2"' - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - ganache-cli@6.12.2: - resolution: {integrity: sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw==} - deprecated: ganache-cli is now ganache; visit https://trfl.io/g7 for details - hasBin: true - bundledDependencies: - - source-map-support - - yargs - - ethereumjs-util - - ganache-core@2.13.2: - resolution: {integrity: sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw==} - engines: {node: '>=8.9.0'} - deprecated: ganache-core is now ganache; visit https://trfl.io/g7 for details - bundledDependencies: - - keccak - - get-caller-file@1.0.3: - resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-port@3.2.0: - resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} - engines: {node: '>=4'} - - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - - getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - - ghost-testrpc@0.0.2: - resolution: {integrity: sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==} - hasBin: true - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@5.0.15: - resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} - - glob@7.1.3: - resolution: {integrity: sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==} - - glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - - global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - - global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - - global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globals@9.18.0: - resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} - engines: {node: '>=0.10.0'} - - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - - globby@10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - got@11.8.6: - resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} - engines: {node: '>=10.19.0'} - - got@12.1.0: - resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==} - engines: {node: '>=14.16'} - - got@9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - growl@1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - - har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - - har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - - hardhat-gas-reporter@1.0.10: - resolution: {integrity: sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==} - peerDependencies: - hardhat: ^2.0.2 - - hardhat@2.20.1: - resolution: {integrity: sha512-q75xDQiQtCZcTMBwjTovrXEU5ECr49baxr4/OBkIu/ULTPzlB20yk1dRWNmD2IFbAeAeXggaWvQAdpiScaHtPw==} - hasBin: true - peerDependencies: - ts-node: '*' - typescript: '*' - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@1.0.0: - resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} - engines: {node: '>=0.10.0'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - - has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - - has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - - has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - - has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} - - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - - hash.js@1.1.3: - resolution: {integrity: sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} - engines: {node: '>= 0.4'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - header-case@1.0.1: - resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} - - heap@0.2.6: - resolution: {integrity: sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ==} - - heap@0.2.7: - resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - - highlight.js@10.7.3: - resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - - highlightjs-solidity@2.0.6: - resolution: {integrity: sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg==} - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - home-or-tmp@2.0.0: - resolution: {integrity: sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==} - engines: {node: '>=0.10.0'} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - http-basic@8.1.3: - resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} - engines: {node: '>=6.0.0'} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-https@1.0.0: - resolution: {integrity: sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==} - - http-response-object@3.0.2: - resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} - - http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - - http2-wrapper@1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - - http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - husky@9.0.11: - resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} - engines: {node: '>=18'} - hasBin: true - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - idna-uts46-hx@2.3.1: - resolution: {integrity: sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==} - engines: {node: '>=4.0.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - immediate@3.2.3: - resolution: {integrity: sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==} - - immediate@3.3.0: - resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} - - immutable@4.3.5: - resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - invert-kv@1.0.0: - resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} - engines: {node: '>=0.10.0'} - - io-ts@1.10.4: - resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} - - is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finite@1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} - - is-fn@1.0.0: - resolution: {integrity: sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-function@1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hex-prefixed@1.0.0: - resolution: {integrity: sha1-fY035q135dEnFIkTxXPggtd39VQ=} - engines: {node: '>=6.5.0', npm: '>=3'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-lower-case@1.1.3: - resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-observable@2.1.0: - resolution: {integrity: sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==} - engines: {node: '>=8'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-upper-case@1.1.2: - resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} - - is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - - is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - - js-sdsl@4.4.2: - resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} - - js-sha3@0.5.7: - resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==} - - js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - js-tokens@3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.13.1: - resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} - hasBin: true - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - jsesc@1.3.0: - resolution: {integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==} - hasBin: true - - json-buffer@3.0.0: - resolution: {integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=} - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-rpc-engine@3.8.0: - resolution: {integrity: sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA==} - - json-rpc-error@2.0.0: - resolution: {integrity: sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug==} - - json-rpc-random-id@1.0.1: - resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json-stable-stringify@1.1.1: - resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} - engines: {node: '>= 0.4'} - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@0.5.1: - resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} - hasBin: true - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - jsonfile@2.4.0: - resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonify@0.0.1: - resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - - jsonschema@1.4.1: - resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} - - jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - - keccak256@1.0.6: - resolution: {integrity: sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==} - - keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - - keyv@3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - - kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - klaw-sync@6.0.0: - resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} - - klaw@1.3.1: - resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - - lcid@1.0.0: - resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} - engines: {node: '>=0.10.0'} - - level-codec@7.0.1: - resolution: {integrity: sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==} - - level-codec@9.0.2: - resolution: {integrity: sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==} - engines: {node: '>=6'} - - level-errors@1.0.5: - resolution: {integrity: sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==} - - level-errors@2.0.1: - resolution: {integrity: sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==} - engines: {node: '>=6'} - - level-iterator-stream@1.3.1: - resolution: {integrity: sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==} - - level-iterator-stream@2.0.3: - resolution: {integrity: sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig==} - engines: {node: '>=4'} - - level-iterator-stream@3.0.1: - resolution: {integrity: sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==} - engines: {node: '>=6'} - - level-mem@3.0.1: - resolution: {integrity: sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg==} - engines: {node: '>=6'} - - level-packager@4.0.1: - resolution: {integrity: sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==} - engines: {node: '>=6'} - - level-post@1.0.7: - resolution: {integrity: sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew==} - - level-sublevel@6.6.4: - resolution: {integrity: sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA==} - - level-ws@0.0.0: - resolution: {integrity: sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==} - - level-ws@1.0.0: - resolution: {integrity: sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q==} - engines: {node: '>=6'} - - levelup@1.3.9: - resolution: {integrity: sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==} - - levelup@3.1.1: - resolution: {integrity: sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==} - engines: {node: '>=6'} - - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - load-json-file@1.1.0: - resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} - engines: {node: '>=0.10.0'} - - load-json-file@2.0.0: - resolution: {integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==} - engines: {node: '>=4'} - - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.assign@4.2.0: - resolution: {integrity: sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - - lodash@4.17.20: - resolution: {integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - looper@2.0.0: - resolution: {integrity: sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ==} - - looper@3.0.0: - resolution: {integrity: sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lower-case-first@1.0.2: - resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} - - lower-case@1.1.4: - resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} - - lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - - lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - - lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - - lru-cache@3.2.0: - resolution: {integrity: sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru_map@0.3.3: - resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} - - ltgt@2.1.3: - resolution: {integrity: sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw==} - - ltgt@2.2.1: - resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - - map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - - markdown-table@1.1.3: - resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} - - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - - media-typer@0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} - engines: {node: '>= 0.6'} - - memdown@1.4.1: - resolution: {integrity: sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==} - - memdown@3.0.0: - resolution: {integrity: sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==} - engines: {node: '>=6'} - - memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - - merge-descriptors@1.0.1: - resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - merkle-patricia-tree@2.3.2: - resolution: {integrity: sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==} - - merkle-patricia-tree@3.0.0: - resolution: {integrity: sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - - micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} - engines: {node: '>=10'} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@2.9.0: - resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} - - minizlib@1.3.3: - resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} - - mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - - mkdirp-promise@5.0.1: - resolution: {integrity: sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==} - engines: {node: '>=4'} - deprecated: This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that. - - mkdirp@0.5.5: - resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==} - hasBin: true - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - - mnemonist@0.38.5: - resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} - - mocha@10.3.0: - resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==} - engines: {node: '>= 14.0.0'} - hasBin: true - - mocha@7.1.2: - resolution: {integrity: sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==} - engines: {node: '>= 8.10.0'} - hasBin: true - - mock-fs@4.14.0: - resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} - - mock-property@1.0.3: - resolution: {integrity: sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==} - engines: {node: '>= 0.4'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - multibase@0.6.1: - resolution: {integrity: sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==} - deprecated: This module has been superseded by the multiformats module - - multibase@0.7.0: - resolution: {integrity: sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==} - deprecated: This module has been superseded by the multiformats module - - multicodec@0.5.7: - resolution: {integrity: sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==} - deprecated: This module has been superseded by the multiformats module - - multicodec@1.0.4: - resolution: {integrity: sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==} - deprecated: This module has been superseded by the multiformats module - - multihashes@0.4.21: - resolution: {integrity: sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==} - - nan@2.18.0: - resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} - - nano-base32@1.0.1: - resolution: {integrity: sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw==} - - nano-json-stream-parser@0.1.2: - resolution: {integrity: sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==} - - nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - no-case@2.3.2: - resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - - node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - - node-emoji@1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - - node-environment-flags@1.0.6: - resolution: {integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==} - - node-fetch@1.7.3: - resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} - hasBin: true - - nofilter@1.0.4: - resolution: {integrity: sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==} - engines: {node: '>=8'} - - nofilter@3.1.0: - resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} - engines: {node: '>=12.19'} - - nopt@3.0.6: - resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} - hasBin: true - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-url@4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - - number-to-bn@1.7.0: - resolution: {integrity: sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=} - engines: {node: '>=6.5.0', npm: '>=3'} - - oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - - object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - - object-keys@0.4.0: - resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - - object.assign@4.1.0: - resolution: {integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.getownpropertydescriptors@2.1.7: - resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==} - engines: {node: '>= 0.8'} - - object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} - - obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - - oboe@2.1.4: - resolution: {integrity: sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=} - - oboe@2.1.5: - resolution: {integrity: sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=} - - observable-fns@0.6.1: - resolution: {integrity: sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - - os-locale@1.4.0: - resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} - engines: {node: '>=0.10.0'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - p-cancelable@1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - - p-cancelable@2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - - p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - - param-case@2.1.1: - resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - - parse-cache-control@1.0.1: - resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} - - parse-headers@2.0.5: - resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} - - parse-json@2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - pascal-case@2.0.1: - resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} - - pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - - patch-package@6.2.2: - resolution: {integrity: sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==} - engines: {npm: '>5'} - hasBin: true - - patch-package@6.5.1: - resolution: {integrity: sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==} - engines: {node: '>=10', npm: '>5'} - hasBin: true - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-case@2.1.1: - resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} - - path-exists@2.1.0: - resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} - engines: {node: '>=0.10.0'} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-to-regexp@0.1.7: - resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} - - path-type@1.1.0: - resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} - engines: {node: '>=0.10.0'} - - path-type@2.0.0: - resolution: {integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==} - engines: {node: '>=4'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - - performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - - pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - - posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postinstall-postinstall@2.1.0: - resolution: {integrity: sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==} - - precond@0.2.3: - resolution: {integrity: sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==} - engines: {node: '>= 0.6'} - - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - - private@0.1.8: - resolution: {integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==} - engines: {node: '>= 0.6'} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - promise-to-callback@1.0.0: - resolution: {integrity: sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==} - engines: {node: '>=0.10.0'} - - promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - - public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - - pull-cat@1.1.11: - resolution: {integrity: sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg==} - - pull-defer@0.2.3: - resolution: {integrity: sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA==} - - pull-level@2.0.4: - resolution: {integrity: sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg==} - - pull-live@1.0.1: - resolution: {integrity: sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA==} - - pull-pushable@2.2.0: - resolution: {integrity: sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg==} - - pull-stream@3.7.0: - resolution: {integrity: sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw==} - - pull-window@2.1.4: - resolution: {integrity: sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg==} - - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - - punycode@2.1.0: - resolution: {integrity: sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==} - engines: {node: '>=6'} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pure-rand@5.0.5: - resolution: {integrity: sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==} - - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - - qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - - query-string@5.1.1: - resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} - engines: {node: '>=0.10.0'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - read-pkg-up@1.0.1: - resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} - engines: {node: '>=0.10.0'} - - read-pkg-up@2.0.0: - resolution: {integrity: sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==} - engines: {node: '>=4'} - - read-pkg@1.1.0: - resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} - engines: {node: '>=0.10.0'} - - read-pkg@2.0.0: - resolution: {integrity: sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==} - engines: {node: '>=4'} - - readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - - readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.2.0: - resolution: {integrity: sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==} - engines: {node: '>= 8'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - recursive-readdir@2.2.3: - resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} - engines: {node: '>=6.0.0'} - - reduce-flatten@2.0.0: - resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} - engines: {node: '>=6'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.10.1: - resolution: {integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==} - - regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - - regexpu-core@2.0.0: - resolution: {integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==} - - regjsgen@0.2.0: - resolution: {integrity: sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==} - - regjsparser@0.1.5: - resolution: {integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==} - hasBin: true - - repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - - repeating@2.0.1: - resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} - engines: {node: '>=0.10.0'} - - req-cwd@2.0.0: - resolution: {integrity: sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==} - engines: {node: '>=4'} - - req-from@2.0.0: - resolution: {integrity: sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==} - engines: {node: '>=4'} - - request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@1.2.1: - resolution: {integrity: sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-main-filename@1.0.1: - resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - - resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - - resolve@1.1.7: - resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} - - resolve@1.17.0: - resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - responselike@1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - - responselike@2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - - ripemd160-min@0.0.6: - resolution: {integrity: sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==} - engines: {node: '>=8'} - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - - rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rust-verkle-wasm@0.0.1: - resolution: {integrity: sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA==} - - rustbn-wasm@0.2.0: - resolution: {integrity: sha512-FThvYFNTqrEKGqXuseeg0zR7yROh/6U1617mCHF68OVqrN1tNKRN7Tdwy4WayPVsCmmK+eMxtIZX1qL6JxTkMg==} - - rustbn.js@0.2.0: - resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} - - safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} - engines: {node: '>=0.4'} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-event-emitter@1.0.1: - resolution: {integrity: sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==} - deprecated: Renamed to @metamask/safe-event-emitter - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - - safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sc-istanbul@0.4.6: - resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==} - hasBin: true - - scrypt-js@2.0.4: - resolution: {integrity: sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==} - - scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - scrypt@https://codeload.github.com/barrysteyn/node-scrypt/tar.gz/fb60a8d3c158fe115a624b5ffa7480f3a24b03fb: - resolution: {tarball: https://codeload.github.com/barrysteyn/node-scrypt/tar.gz/fb60a8d3c158fe115a624b5ffa7480f3a24b03fb} - version: 6.0.3 - engines: {node: '>= 0.10'} - - scryptsy@1.2.1: - resolution: {integrity: sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw==} - - secp256k1@4.0.3: - resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} - engines: {node: '>=10.0.0'} - - seedrandom@3.0.1: - resolution: {integrity: sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg==} - - semaphore@1.1.0: - resolution: {integrity: sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==} - engines: {node: '>=0.8.0'} - - semver@5.4.1: - resolution: {integrity: sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==} - hasBin: true - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - - sentence-case@2.1.1: - resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} - - serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - - servify@0.1.12: - resolution: {integrity: sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==} - engines: {node: '>=6'} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-immediate-shim@1.0.1: - resolution: {integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==} - engines: {node: '>=0.10.0'} - - set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - - setimmediate@1.0.4: - resolution: {integrity: sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - sha1@1.1.1: - resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} - - sha3@2.1.4: - resolution: {integrity: sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - side-channel@1.0.5: - resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@2.8.2: - resolution: {integrity: sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==} - - slash@1.0.0: - resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} - engines: {node: '>=0.10.0'} - - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - - snake-case@2.1.0: - resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} - - snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - - snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - - snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - - solc@0.4.26: - resolution: {integrity: sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==} - hasBin: true - - solc@0.6.12: - resolution: {integrity: sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g==} - engines: {node: '>=8.0.0'} - hasBin: true - - solc@0.7.3: - resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} - engines: {node: '>=8.0.0'} - hasBin: true - - solhint@3.4.1: - resolution: {integrity: sha512-pzZn2RlZhws1XwvLPVSsxfHrwsteFf5eySOhpAytzXwKQYbTCJV6z8EevYDiSVKMpWrvbKpEtJ055CuEmzp4Xg==} - hasBin: true - - solidity-coverage@0.8.3: - resolution: {integrity: sha512-hbcNgj5z8zzgTlnp4F0pXiqj1v5ua8P4DH5i9cWOBtFPfUuIohLoXu5WiAixexWmpKVjyxXqupnu/mPb4IGr7Q==} - hasBin: true - peerDependencies: - hardhat: ^2.11.0 - - source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - - source-map-support@0.4.18: - resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} - - source-map-support@0.5.12: - resolution: {integrity: sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - - source-map@0.2.0: - resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} - engines: {node: '>=0.8.0'} - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} - - split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sshpk@1.18.0: - resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - stream-to-pull-stream@1.7.3: - resolution: {integrity: sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg==} - - strict-uri-encode@1.1.0: - resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} - engines: {node: '>=0.10.0'} - - string-format@2.0.0: - resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} - - string-width@1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - - string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - - string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - - string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - - strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-bom@2.0.0: - resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} - engines: {node: '>=0.10.0'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-hex-prefix@1.0.0: - resolution: {integrity: sha1-DF8VX+8RUTczd96du1iNoFUA428=} - engines: {node: '>=6.5.0', npm: '>=3'} - - strip-indent@2.0.0: - resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} - engines: {node: '>=4'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - - supports-color@3.2.3: - resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@6.0.0: - resolution: {integrity: sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==} - engines: {node: '>=6'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - swap-case@1.1.2: - resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} - - swarm-js@0.1.42: - resolution: {integrity: sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==} - - sync-request@6.1.0: - resolution: {integrity: sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==} - engines: {node: '>=8.0.0'} - - sync-rpc@1.3.6: - resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==} - - table-layout@1.0.2: - resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} - engines: {node: '>=8.0.0'} - - table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} - - tape@4.17.0: - resolution: {integrity: sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw==} - hasBin: true - - tar@4.4.19: - resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} - engines: {node: '>=4.5'} - - test-value@2.1.0: - resolution: {integrity: sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==} - engines: {node: '>=0.10.0'} - - testrpc@0.0.1: - resolution: {integrity: sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==} - deprecated: testrpc has been renamed to ganache-cli, please use this package from now on. - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - then-request@6.0.2: - resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} - engines: {node: '>=6.0.0'} - - threads@1.7.0: - resolution: {integrity: sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - timed-out@4.0.1: - resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} - engines: {node: '>=0.10.0'} - - tiny-worker@2.3.0: - resolution: {integrity: sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==} - - title-case@2.1.1: - resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmp@0.1.0: - resolution: {integrity: sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==} - engines: {node: '>=6'} - - to-fast-properties@1.0.3: - resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} - engines: {node: '>=0.10.0'} - - to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - - to-readable-stream@1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - - to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - trim-right@1.0.1: - resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} - engines: {node: '>=0.10.0'} - - ts-command-line-args@2.5.1: - resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} - hasBin: true - - ts-essentials@1.0.4: - resolution: {integrity: sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==} - - ts-essentials@6.0.7: - resolution: {integrity: sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw==} - peerDependencies: - typescript: '>=3.7.0' - - ts-essentials@7.0.3: - resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} - peerDependencies: - typescript: '>=3.7.0' - - ts-generator@0.1.1: - resolution: {integrity: sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==} - hasBin: true - - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - - tsort@0.0.1: - resolution: {integrity: sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=} - - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - - tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - - tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - - type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - - typechain@3.0.0: - resolution: {integrity: sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg==} - hasBin: true - - typechain@8.3.2: - resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} - hasBin: true - peerDependencies: - typescript: '>=4.3.0' - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} - engines: {node: '>= 0.4'} - - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typescript@4.7.4: - resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} - engines: {node: '>=4.2.0'} - hasBin: true - - typewise-core@1.2.0: - resolution: {integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==} - - typewise@1.0.3: - resolution: {integrity: sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==} - - typewiselite@1.0.0: - resolution: {integrity: sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw==} - - typical@2.6.1: - resolution: {integrity: sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==} - - typical@4.0.0: - resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} - engines: {node: '>=8'} - - typical@5.2.0: - resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} - engines: {node: '>=8'} - - uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - - ultron@1.1.1: - resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - underscore@1.13.6: - resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} - - underscore@1.9.1: - resolution: {integrity: sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - undici@5.28.3: - resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} - engines: {node: '>=14.0'} - - union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unorm@1.6.0: - resolution: {integrity: sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==} - engines: {node: '>= 0.4.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - - upper-case-first@1.1.2: - resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} - - upper-case@1.1.3: - resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - - url-parse-lax@3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - - url-set-query@1.0.0: - resolution: {integrity: sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==} - - url@0.11.3: - resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} - - use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util.promisify@1.1.2: - resolution: {integrity: sha512-PBdZ03m1kBnQ5cjjO0ZvJMJS+QsbyIcFwi4hY4U76OQsCO9JrOYjbCFgIF76ccFg9xnJo7ZHPkqyj1GqmdS7MA==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - utils-merge@1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} - engines: {node: '>= 0.4.0'} - - uuid@2.0.1: - resolution: {integrity: sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - - uuid@3.3.2: - resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - v8-compile-cache@2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - varint@5.0.2: - resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - verror@1.10.0: - resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} - engines: {'0': node >=0.6.0} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web3-bzz@1.10.0: - resolution: {integrity: sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==} - engines: {node: '>=8.0.0'} - - web3-bzz@1.10.4: - resolution: {integrity: sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==} - engines: {node: '>=8.0.0'} - - web3-bzz@1.2.11: - resolution: {integrity: sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg==} - engines: {node: '>=8.0.0'} - - web3-core-helpers@1.10.0: - resolution: {integrity: sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==} - engines: {node: '>=8.0.0'} - - web3-core-helpers@1.10.4: - resolution: {integrity: sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==} - engines: {node: '>=8.0.0'} - - web3-core-helpers@1.2.11: - resolution: {integrity: sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A==} - engines: {node: '>=8.0.0'} - - web3-core-method@1.10.0: - resolution: {integrity: sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==} - engines: {node: '>=8.0.0'} - - web3-core-method@1.10.4: - resolution: {integrity: sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==} - engines: {node: '>=8.0.0'} - - web3-core-method@1.2.11: - resolution: {integrity: sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw==} - engines: {node: '>=8.0.0'} - - web3-core-promievent@1.10.0: - resolution: {integrity: sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==} - engines: {node: '>=8.0.0'} - - web3-core-promievent@1.10.4: - resolution: {integrity: sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==} - engines: {node: '>=8.0.0'} - - web3-core-promievent@1.2.11: - resolution: {integrity: sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA==} - engines: {node: '>=8.0.0'} - - web3-core-requestmanager@1.10.0: - resolution: {integrity: sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==} - engines: {node: '>=8.0.0'} - - web3-core-requestmanager@1.10.4: - resolution: {integrity: sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==} - engines: {node: '>=8.0.0'} - - web3-core-requestmanager@1.2.11: - resolution: {integrity: sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA==} - engines: {node: '>=8.0.0'} - - web3-core-subscriptions@1.10.0: - resolution: {integrity: sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==} - engines: {node: '>=8.0.0'} - - web3-core-subscriptions@1.10.4: - resolution: {integrity: sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==} - engines: {node: '>=8.0.0'} - - web3-core-subscriptions@1.2.11: - resolution: {integrity: sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg==} - engines: {node: '>=8.0.0'} - - web3-core@1.10.0: - resolution: {integrity: sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==} - engines: {node: '>=8.0.0'} - - web3-core@1.10.4: - resolution: {integrity: sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==} - engines: {node: '>=8.0.0'} - - web3-core@1.2.11: - resolution: {integrity: sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ==} - engines: {node: '>=8.0.0'} - - web3-eth-abi@1.10.0: - resolution: {integrity: sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==} - engines: {node: '>=8.0.0'} - - web3-eth-abi@1.10.4: - resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} - engines: {node: '>=8.0.0'} - - web3-eth-abi@1.2.11: - resolution: {integrity: sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg==} - engines: {node: '>=8.0.0'} - - web3-eth-accounts@1.10.0: - resolution: {integrity: sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==} - engines: {node: '>=8.0.0'} - - web3-eth-accounts@1.10.4: - resolution: {integrity: sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==} - engines: {node: '>=8.0.0'} - - web3-eth-accounts@1.2.11: - resolution: {integrity: sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw==} - engines: {node: '>=8.0.0'} - - web3-eth-contract@1.10.0: - resolution: {integrity: sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==} - engines: {node: '>=8.0.0'} - - web3-eth-contract@1.10.4: - resolution: {integrity: sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==} - engines: {node: '>=8.0.0'} - - web3-eth-contract@1.2.11: - resolution: {integrity: sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow==} - engines: {node: '>=8.0.0'} - - web3-eth-ens@1.10.0: - resolution: {integrity: sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==} - engines: {node: '>=8.0.0'} - - web3-eth-ens@1.10.4: - resolution: {integrity: sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==} - engines: {node: '>=8.0.0'} - - web3-eth-ens@1.2.11: - resolution: {integrity: sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA==} - engines: {node: '>=8.0.0'} - - web3-eth-iban@1.10.0: - resolution: {integrity: sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==} - engines: {node: '>=8.0.0'} - - web3-eth-iban@1.10.4: - resolution: {integrity: sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==} - engines: {node: '>=8.0.0'} - - web3-eth-iban@1.2.11: - resolution: {integrity: sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ==} - engines: {node: '>=8.0.0'} - - web3-eth-personal@1.10.0: - resolution: {integrity: sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==} - engines: {node: '>=8.0.0'} - - web3-eth-personal@1.10.4: - resolution: {integrity: sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==} - engines: {node: '>=8.0.0'} - - web3-eth-personal@1.2.11: - resolution: {integrity: sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw==} - engines: {node: '>=8.0.0'} - - web3-eth@1.10.0: - resolution: {integrity: sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==} - engines: {node: '>=8.0.0'} - - web3-eth@1.10.4: - resolution: {integrity: sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==} - engines: {node: '>=8.0.0'} - - web3-eth@1.2.11: - resolution: {integrity: sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ==} - engines: {node: '>=8.0.0'} - - web3-net@1.10.0: - resolution: {integrity: sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==} - engines: {node: '>=8.0.0'} - - web3-net@1.10.4: - resolution: {integrity: sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==} - engines: {node: '>=8.0.0'} - - web3-net@1.2.11: - resolution: {integrity: sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg==} - engines: {node: '>=8.0.0'} - - web3-provider-engine@14.2.1: - resolution: {integrity: sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw==} - - web3-providers-http@1.10.0: - resolution: {integrity: sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==} - engines: {node: '>=8.0.0'} - - web3-providers-http@1.10.4: - resolution: {integrity: sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==} - engines: {node: '>=8.0.0'} - - web3-providers-http@1.2.11: - resolution: {integrity: sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA==} - engines: {node: '>=8.0.0'} - - web3-providers-ipc@1.10.0: - resolution: {integrity: sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==} - engines: {node: '>=8.0.0'} - - web3-providers-ipc@1.10.4: - resolution: {integrity: sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==} - engines: {node: '>=8.0.0'} - - web3-providers-ipc@1.2.11: - resolution: {integrity: sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ==} - engines: {node: '>=8.0.0'} - - web3-providers-ws@1.10.0: - resolution: {integrity: sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==} - engines: {node: '>=8.0.0'} - - web3-providers-ws@1.10.4: - resolution: {integrity: sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==} - engines: {node: '>=8.0.0'} - - web3-providers-ws@1.2.11: - resolution: {integrity: sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg==} - engines: {node: '>=8.0.0'} - - web3-shh@1.10.0: - resolution: {integrity: sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==} - engines: {node: '>=8.0.0'} - - web3-shh@1.10.4: - resolution: {integrity: sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==} - engines: {node: '>=8.0.0'} - - web3-shh@1.2.11: - resolution: {integrity: sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg==} - engines: {node: '>=8.0.0'} - - web3-utils@1.10.0: - resolution: {integrity: sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==} - engines: {node: '>=8.0.0'} - - web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} - - web3-utils@1.2.11: - resolution: {integrity: sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ==} - engines: {node: '>=8.0.0'} - - web3@1.10.0: - resolution: {integrity: sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==} - engines: {node: '>=8.0.0'} - - web3@1.10.4: - resolution: {integrity: sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==} - engines: {node: '>=8.0.0'} - - web3@1.2.11: - resolution: {integrity: sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ==} - engines: {node: '>=8.0.0'} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - websocket@1.0.32: - resolution: {integrity: sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==} - engines: {node: '>=4.0.0'} - - websocket@1.0.34: - resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} - engines: {node: '>=4.0.0'} - - whatwg-fetch@2.0.4: - resolution: {integrity: sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-module@1.0.0: - resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==} - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wide-align@1.1.3: - resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} - - widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - - window-size@0.2.0: - resolution: {integrity: sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==} - engines: {node: '>= 0.10.0'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - wordwrapjs@4.0.1: - resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} - engines: {node: '>=8.0.0'} - - workerpool@6.2.1: - resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} - - wrap-ansi@2.1.0: - resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} - engines: {node: '>=0.10.0'} - - wrap-ansi@5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@3.3.3: - resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@5.2.3: - resolution: {integrity: sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.5.0: - resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xhr-request-promise@0.1.3: - resolution: {integrity: sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==} - - xhr-request@1.1.0: - resolution: {integrity: sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==} - - xhr2-cookies@1.1.0: - resolution: {integrity: sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=} - - xhr@2.6.0: - resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} - - xmlhttprequest@1.8.0: - resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} - engines: {node: '>=0.4.0'} - - xtend@2.1.2: - resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} - engines: {node: '>=0.4'} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@3.2.2: - resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yaeti@0.0.6: - resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} - engines: {node: '>=0.10.32'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yargs-parser@13.1.2: - resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} - - yargs-parser@2.4.1: - resolution: {integrity: sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==} - - yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - - yargs-unparser@1.6.0: - resolution: {integrity: sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==} - engines: {node: '>=6'} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@13.3.2: - resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yargs@4.8.1: - resolution: {integrity: sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==} - - yesno@0.3.1: - resolution: {integrity: sha512-7RbCXegyu6DykWPWU0YEtW8gFJH8KBL2d5l2fqB0XpkH0Y9rk59YSSWpzEv7yNJBGAouPc67h3kkq0CZkpBdFw==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@adraffy/ens-normalize@1.10.1': {} - - '@babel/code-frame@7.12.11': - dependencies: - '@babel/highlight': 7.23.4 - - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - - '@babel/helper-validator-identifier@7.22.20': {} - - '@babel/highlight@7.23.4': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/runtime@7.23.9': - dependencies: - regenerator-runtime: 0.14.1 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@ensdomains/address-encoder@0.1.9': - dependencies: - bech32: 1.1.4 - blakejs: 1.2.1 - bn.js: 4.12.0 - bs58: 4.0.1 - crypto-addr-codec: 0.1.8 - nano-base32: 1.0.1 - ripemd160: 2.0.2 - - '@ensdomains/ens@0.4.5': - dependencies: - bluebird: 3.7.2 - eth-ens-namehash: 2.0.8 - solc: 0.4.26 - testrpc: 0.0.1 - web3-utils: 1.10.4 - - '@ensdomains/ensjs@2.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.23.9 - '@ensdomains/address-encoder': 0.1.9 - '@ensdomains/ens': 0.4.5 - '@ensdomains/resolver': 0.2.4 - content-hash: 2.5.2 - eth-ens-namehash: 2.0.8 - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - js-sha3: 0.8.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ensdomains/resolver@0.2.4': {} - - '@eslint/eslintrc@0.4.3': - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 7.3.1 - globals: 13.24.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - js-yaml: 3.14.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@ethereum-waffle/chai@3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@ethereum-waffle/provider': 3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@ethereum-waffle/compiler@3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.7.4)(utf-8-validate@5.0.10)': - dependencies: - '@resolver-engine/imports': 0.3.3 - '@resolver-engine/imports-fs': 0.3.3 - '@typechain/ethers-v5': 2.0.0(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@3.0.0(typescript@4.7.4)) - '@types/mkdirp': 0.5.2 - '@types/node-fetch': 2.6.11 - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - mkdirp: 0.5.6 - node-fetch: 2.7.0(encoding@0.1.13) - solc: 0.6.12 - ts-generator: 0.1.1 - typechain: 3.0.0(typescript@4.7.4) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - - '@ethereum-waffle/ens@3.4.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@ensdomains/ens': 0.4.5 - '@ensdomains/resolver': 0.2.4 - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ethereum-waffle/mock-contract@3.4.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/abi': 5.7.0 - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ethereum-waffle/provider@3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@ethereum-waffle/ens': 3.4.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ganache-core: 2.13.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - patch-package: 6.5.1 - postinstall-postinstall: 2.1.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@ethereumjs/common@2.5.0': - dependencies: - crc-32: 1.2.2 - ethereumjs-util: 7.1.5 - - '@ethereumjs/common@2.6.5': - dependencies: - crc-32: 1.2.2 - ethereumjs-util: 7.1.5 - - '@ethereumjs/rlp@4.0.1': {} - - '@ethereumjs/tx@3.3.2': - dependencies: - '@ethereumjs/common': 2.6.5 - ethereumjs-util: 7.1.5 - - '@ethereumjs/tx@3.5.2': - dependencies: - '@ethereumjs/common': 2.6.5 - ethereumjs-util: 7.1.5 - - '@ethereumjs/util@8.1.0': - dependencies: - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.1.3 - micro-ftch: 0.3.1 - - '@ethersproject/abi@5.0.0-beta.153': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - optional: true - - '@ethersproject/abi@5.7.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/abstract-provider@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - - '@ethersproject/abstract-signer@5.7.0': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/address@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - - '@ethersproject/base64@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - - '@ethersproject/basex@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/bignumber@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 - - '@ethersproject/bytes@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/constants@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - - '@ethersproject/contracts@5.7.0': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - - '@ethersproject/hash@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/hdnode@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - - '@ethersproject/json-wallets@5.7.0': - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - aes-js: 3.0.0 - scrypt-js: 3.0.1 - - '@ethersproject/keccak256@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 - - '@ethersproject/logger@5.7.0': {} - - '@ethersproject/networks@5.7.1': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/pbkdf2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/sha2': 5.7.0 - - '@ethersproject/properties@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ethersproject/random@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/rlp@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/sha2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 - - '@ethersproject/signing-key@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - bn.js: 5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 - - '@ethersproject/solidity@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/strings@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/transactions@5.7.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - - '@ethersproject/units@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/wallet@5.7.0': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - - '@ethersproject/web@5.7.1': - dependencies: - '@ethersproject/base64': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@ethersproject/wordlists@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - '@fastify/busboy@2.1.0': {} - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@ljharb/resumer@0.0.1': - dependencies: - '@ljharb/through': 2.3.12 - - '@ljharb/through@2.3.12': - dependencies: - call-bind: 1.0.7 - - '@metamask/eth-sig-util@4.0.1': - dependencies: - ethereumjs-abi: 0.6.8 - ethereumjs-util: 6.2.1 - ethjs-util: 0.1.6 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - - '@noble/curves@1.2.0': - dependencies: - '@noble/hashes': 1.3.2 - - '@noble/curves@1.3.0': - dependencies: - '@noble/hashes': 1.3.3 - - '@noble/hashes@1.2.0': {} - - '@noble/hashes@1.3.2': {} - - '@noble/hashes@1.3.3': {} - - '@noble/secp256k1@1.7.1': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@nomicfoundation/ethereumjs-block@5.0.4': - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-trie': 6.0.4 - '@nomicfoundation/ethereumjs-tx': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - ethereum-cryptography: 0.1.3 - transitivePeerDependencies: - - c-kzg - - '@nomicfoundation/ethereumjs-blockchain@7.0.4': - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.4 - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-ethash': 3.0.4 - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-trie': 6.0.4 - '@nomicfoundation/ethereumjs-tx': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - debug: 4.3.4(supports-color@8.1.1) - ethereum-cryptography: 0.1.3 - lru-cache: 10.2.0 - transitivePeerDependencies: - - c-kzg - - supports-color - - '@nomicfoundation/ethereumjs-common@4.0.4': - dependencies: - '@nomicfoundation/ethereumjs-util': 9.0.4 - transitivePeerDependencies: - - c-kzg - - '@nomicfoundation/ethereumjs-ethash@3.0.4': - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.4 - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - bigint-crypto-utils: 3.3.0 - ethereum-cryptography: 0.1.3 - transitivePeerDependencies: - - c-kzg - - '@nomicfoundation/ethereumjs-evm@2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2)': - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-statemanager': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) - '@nomicfoundation/ethereumjs-tx': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) - ethereum-cryptography: 0.1.3 - rustbn-wasm: 0.2.0 - transitivePeerDependencies: - - '@nomicfoundation/ethereumjs-verkle' - - c-kzg - - supports-color - - '@nomicfoundation/ethereumjs-rlp@5.0.4': {} - - '@nomicfoundation/ethereumjs-statemanager@2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2)': - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-trie': 6.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - debug: 4.3.4(supports-color@8.1.1) - ethereum-cryptography: 0.1.3 - js-sdsl: 4.4.2 - lru-cache: 10.2.0 - optionalDependencies: - '@nomicfoundation/ethereumjs-verkle': 0.0.2 - transitivePeerDependencies: - - c-kzg - - supports-color - - '@nomicfoundation/ethereumjs-trie@6.0.4': - dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - '@types/readable-stream': 2.3.15 - ethereum-cryptography: 0.1.3 - lru-cache: 10.2.0 - readable-stream: 3.6.2 - transitivePeerDependencies: - - c-kzg - - '@nomicfoundation/ethereumjs-tx@5.0.4': - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - ethereum-cryptography: 0.1.3 - - '@nomicfoundation/ethereumjs-util@9.0.4': - dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - ethereum-cryptography: 0.1.3 - - '@nomicfoundation/ethereumjs-verkle@0.0.2': - dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - lru-cache: 10.2.0 - rust-verkle-wasm: 0.0.1 - transitivePeerDependencies: - - c-kzg - - '@nomicfoundation/ethereumjs-vm@7.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2)': - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.4 - '@nomicfoundation/ethereumjs-blockchain': 7.0.4 - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-evm': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-statemanager': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) - '@nomicfoundation/ethereumjs-trie': 6.0.4 - '@nomicfoundation/ethereumjs-tx': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - debug: 4.3.4(supports-color@8.1.1) - ethereum-cryptography: 0.1.3 - transitivePeerDependencies: - - '@nomicfoundation/ethereumjs-verkle' - - c-kzg - - supports-color - - '@nomicfoundation/hardhat-ethers@3.0.6(ethers@6.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))': - dependencies: - debug: 4.3.4(supports-color@8.1.1) - ethers: 6.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10) - lodash.isequal: 4.5.0 - transitivePeerDependencies: - - supports-color - - '@nomicfoundation/hardhat-verify@2.0.8(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/address': 5.7.0 - cbor: 8.1.0 - chalk: 2.4.2 - debug: 4.3.4(supports-color@8.1.1) - hardhat: 2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10) - lodash.clonedeep: 4.5.0 - semver: 6.3.1 - table: 6.8.1 - undici: 5.28.3 - transitivePeerDependencies: - - supports-color - - '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer@0.1.1': - optionalDependencies: - '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 - '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 - '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 - - '@nomiclabs/hardhat-truffle5@2.0.7(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(encoding@0.1.13)(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@nomiclabs/hardhat-web3': 2.0.0(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@nomiclabs/truffle-contract': 4.5.10(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@types/chai': 4.3.16 - chai: 4.3.4 - ethereumjs-util: 7.1.5 - fs-extra: 7.0.1 - hardhat: 2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10) - web3: 1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - web3-core-helpers - - web3-core-promievent - - web3-eth-abi - - web3-utils - - '@nomiclabs/hardhat-web3@2.0.0(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@types/bignumber.js': 5.0.0 - hardhat: 2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10) - web3: 1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - - '@nomiclabs/truffle-contract@4.5.10(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@ensdomains/ensjs': 2.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@truffle/blockchain-utils': 0.1.9 - '@truffle/contract-schema': 3.4.16 - '@truffle/debug-utils': 6.0.57 - '@truffle/error': 0.1.1 - '@truffle/interface-adapter': 0.5.37(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - bignumber.js: 7.2.1 - ethereum-ens: 0.8.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - ethers: 4.0.49 - source-map-support: 0.5.21 - web3: 1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - web3-core-helpers: 1.10.4 - web3-core-promievent: 1.10.4 - web3-eth-abi: 1.10.4 - web3-utils: 1.10.4 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@resolver-engine/core@0.3.3': - dependencies: - debug: 3.2.7 - is-url: 1.2.4 - request: 2.88.2 - transitivePeerDependencies: - - supports-color - - '@resolver-engine/fs@0.3.3': - dependencies: - '@resolver-engine/core': 0.3.3 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - - '@resolver-engine/imports-fs@0.3.3': - dependencies: - '@resolver-engine/fs': 0.3.3 - '@resolver-engine/imports': 0.3.3 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - - '@resolver-engine/imports@0.3.3': - dependencies: - '@resolver-engine/core': 0.3.3 - debug: 3.2.7 - hosted-git-info: 2.8.9 - path-browserify: 1.0.1 - url: 0.11.3 - transitivePeerDependencies: - - supports-color - - '@scure/base@1.1.5': {} - - '@scure/bip32@1.1.5': - dependencies: - '@noble/hashes': 1.2.0 - '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.5 - - '@scure/bip32@1.3.3': - dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 - - '@scure/bip39@1.1.1': - dependencies: - '@noble/hashes': 1.2.0 - '@scure/base': 1.1.5 - - '@scure/bip39@1.2.2': - dependencies: - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 - - '@sentry/core@5.30.0': - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/minimal': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - - '@sentry/hub@5.30.0': - dependencies: - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - - '@sentry/minimal@5.30.0': - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/types': 5.30.0 - tslib: 1.14.1 - - '@sentry/node@5.30.0': - dependencies: - '@sentry/core': 5.30.0 - '@sentry/hub': 5.30.0 - '@sentry/tracing': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - cookie: 0.4.2 - https-proxy-agent: 5.0.1 - lru_map: 0.3.3 - tslib: 1.14.1 - transitivePeerDependencies: - - supports-color - - '@sentry/tracing@5.30.0': - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/minimal': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - - '@sentry/types@5.30.0': {} - - '@sentry/utils@5.30.0': - dependencies: - '@sentry/types': 5.30.0 - tslib: 1.14.1 - - '@sindresorhus/is@0.14.0': - optional: true - - '@sindresorhus/is@4.6.0': {} - - '@solidity-parser/parser@0.14.5': - dependencies: - antlr4ts: 0.5.0-alpha.4 - - '@solidity-parser/parser@0.16.2': - dependencies: - antlr4ts: 0.5.0-alpha.4 - - '@szmarczak/http-timer@1.1.2': - dependencies: - defer-to-connect: 1.1.3 - optional: true - - '@szmarczak/http-timer@4.0.6': - dependencies: - defer-to-connect: 2.0.1 - - '@szmarczak/http-timer@5.0.1': - dependencies: - defer-to-connect: 2.0.1 - - '@tenderly/hardhat-tenderly@1.0.11(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))': - dependencies: - axios: 0.21.4 - fs-extra: 9.1.0 - hardhat: 2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10) - js-yaml: 3.14.1 - transitivePeerDependencies: - - debug - - '@truffle/abi-utils@1.0.3': - dependencies: - change-case: 3.0.2 - fast-check: 3.1.1 - web3-utils: 1.10.0 - - '@truffle/blockchain-utils@0.1.9': {} - - '@truffle/codec@0.17.3': - dependencies: - '@truffle/abi-utils': 1.0.3 - '@truffle/compile-common': 0.9.8 - big.js: 6.2.1 - bn.js: 5.2.1 - cbor: 5.2.0 - debug: 4.3.4(supports-color@8.1.1) - lodash: 4.17.21 - semver: 7.6.0 - utf8: 3.0.0 - web3-utils: 1.10.0 - transitivePeerDependencies: - - supports-color - - '@truffle/compile-common@0.9.8': - dependencies: - '@truffle/error': 0.2.2 - colors: 1.4.0 - - '@truffle/contract-schema@3.4.16': - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - '@truffle/debug-utils@6.0.57': - dependencies: - '@truffle/codec': 0.17.3 - '@trufflesuite/chromafi': 3.0.0 - bn.js: 5.2.1 - chalk: 2.4.2 - debug: 4.3.4(supports-color@8.1.1) - highlightjs-solidity: 2.0.6 - transitivePeerDependencies: - - supports-color - - '@truffle/error@0.1.1': {} - - '@truffle/error@0.2.2': {} - - '@truffle/interface-adapter@0.5.37(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - bn.js: 5.2.1 - ethers: 4.0.49 - web3: 1.10.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@trufflesuite/chromafi@3.0.0': - dependencies: - camelcase: 4.1.0 - chalk: 2.4.2 - cheerio: 1.0.0-rc.12 - detect-indent: 5.0.0 - highlight.js: 10.7.3 - lodash.merge: 4.6.2 - strip-ansi: 4.0.0 - strip-indent: 2.0.0 - - '@tsconfig/node10@1.0.9': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@typechain/ethers-v5@2.0.0(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@3.0.0(typescript@4.7.4))': - dependencies: - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - typechain: 3.0.0(typescript@4.7.4) - - '@typechain/ethers-v6@0.5.1(ethers@6.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@4.7.4))(typescript@4.7.4)': - dependencies: - ethers: 6.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - lodash: 4.17.21 - ts-essentials: 7.0.3(typescript@4.7.4) - typechain: 8.3.2(typescript@4.7.4) - typescript: 4.7.4 - - '@types/bignumber.js@5.0.0': - dependencies: - bignumber.js: 9.1.2 - - '@types/bn.js@4.11.6': - dependencies: - '@types/node': 20.11.20 - - '@types/bn.js@5.1.5': - dependencies: - '@types/node': 20.11.20 - - '@types/cacheable-request@6.0.3': - dependencies: - '@types/http-cache-semantics': 4.0.4 - '@types/keyv': 3.1.4 - '@types/node': 20.11.20 - '@types/responselike': 1.0.3 - - '@types/chai-as-promised@7.1.0': - dependencies: - '@types/chai': 4.3.16 - - '@types/chai-string@1.4.1': - dependencies: - '@types/chai': 4.3.16 - - '@types/chai@4.3.16': {} - - '@types/concat-stream@1.6.1': - dependencies: - '@types/node': 20.11.20 - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/form-data@0.0.33': - dependencies: - '@types/node': 20.11.20 - - '@types/glob@7.2.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 20.11.20 - - '@types/http-cache-semantics@4.0.4': {} - - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - - '@types/keyv@3.1.4': - dependencies: - '@types/node': 20.11.20 - - '@types/lru-cache@5.1.1': {} - - '@types/minimatch@5.1.2': {} - - '@types/mkdirp@0.5.2': - dependencies: - '@types/node': 20.11.20 - - '@types/mocha@8.2.1': {} - - '@types/ms@0.7.34': {} - - '@types/node-fetch@2.6.11': - dependencies: - '@types/node': 20.11.20 - form-data: 4.0.0 - - '@types/node@10.17.60': {} - - '@types/node@12.20.55': {} - - '@types/node@18.15.13': {} - - '@types/node@20.11.20': - dependencies: - undici-types: 5.26.5 - - '@types/node@8.10.66': {} - - '@types/pbkdf2@3.1.2': - dependencies: - '@types/node': 20.11.20 - - '@types/prettier@2.7.3': {} - - '@types/qs@6.9.11': {} - - '@types/readable-stream@2.3.15': - dependencies: - '@types/node': 20.11.20 - safe-buffer: 5.1.2 - - '@types/resolve@0.0.8': - dependencies: - '@types/node': 20.11.20 - - '@types/responselike@1.0.3': - dependencies: - '@types/node': 20.11.20 - - '@types/secp256k1@4.0.6': - dependencies: - '@types/node': 20.11.20 - - '@typescript-eslint/eslint-plugin@4.18.0(@typescript-eslint/parser@4.18.0(eslint@7.22.0)(typescript@4.7.4))(eslint@7.22.0)(typescript@4.7.4)': - dependencies: - '@typescript-eslint/experimental-utils': 4.18.0(eslint@7.22.0)(typescript@4.7.4) - '@typescript-eslint/parser': 4.18.0(eslint@7.22.0)(typescript@4.7.4) - '@typescript-eslint/scope-manager': 4.18.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 7.22.0 - functional-red-black-tree: 1.0.1 - lodash: 4.17.21 - regexpp: 3.2.0 - semver: 7.6.0 - tsutils: 3.21.0(typescript@4.7.4) - optionalDependencies: - typescript: 4.7.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/experimental-utils@4.18.0(eslint@7.22.0)(typescript@4.7.4)': - dependencies: - '@types/json-schema': 7.0.15 - '@typescript-eslint/scope-manager': 4.18.0 - '@typescript-eslint/types': 4.18.0 - '@typescript-eslint/typescript-estree': 4.18.0(typescript@4.7.4) - eslint: 7.22.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/parser@4.18.0(eslint@7.22.0)(typescript@4.7.4)': - dependencies: - '@typescript-eslint/scope-manager': 4.18.0 - '@typescript-eslint/types': 4.18.0 - '@typescript-eslint/typescript-estree': 4.18.0(typescript@4.7.4) - debug: 4.3.4(supports-color@8.1.1) - eslint: 7.22.0 - optionalDependencies: - typescript: 4.7.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@4.18.0': - dependencies: - '@typescript-eslint/types': 4.18.0 - '@typescript-eslint/visitor-keys': 4.18.0 - - '@typescript-eslint/types@4.18.0': {} - - '@typescript-eslint/typescript-estree@4.18.0(typescript@4.7.4)': - dependencies: - '@typescript-eslint/types': 4.18.0 - '@typescript-eslint/visitor-keys': 4.18.0 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.0 - tsutils: 3.21.0(typescript@4.7.4) - optionalDependencies: - typescript: 4.7.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@4.18.0': - dependencies: - '@typescript-eslint/types': 4.18.0 - eslint-visitor-keys: 2.1.0 - - '@yarnpkg/lockfile@1.1.0': {} - - abbrev@1.0.9: {} - - abortcontroller-polyfill@1.7.5: {} - - abstract-leveldown@2.6.3: - dependencies: - xtend: 4.0.2 - - abstract-leveldown@2.7.2: - dependencies: - xtend: 4.0.2 - - abstract-leveldown@3.0.0: - dependencies: - xtend: 4.0.2 - - abstract-leveldown@5.0.0: - dependencies: - xtend: 4.0.2 - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - acorn-jsx@5.3.2(acorn@7.4.1): - dependencies: - acorn: 7.4.1 - - acorn-walk@8.3.2: {} - - acorn@7.4.1: {} - - acorn@8.11.3: {} - - address@1.2.2: {} - - adm-zip@0.4.16: {} - - aes-js@3.0.0: {} - - aes-js@3.1.2: - optional: true - - aes-js@4.0.0-beta.5: {} - - agent-base@6.0.2: - dependencies: - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.12.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - amdefine@1.0.1: - optional: true - - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - - ansi-colors@3.2.3: {} - - ansi-colors@4.1.1: {} - - ansi-colors@4.1.3: {} - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-regex@2.1.1: {} - - ansi-regex@3.0.1: {} - - ansi-regex@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-styles@2.2.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - antlr4@4.13.1: {} - - antlr4ts@0.5.0-alpha.4: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@4.1.3: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - arr-diff@4.0.0: {} - - arr-flatten@1.1.0: {} - - arr-union@3.1.0: {} - - array-back@1.0.4: - dependencies: - typical: 2.6.1 - - array-back@2.0.0: - dependencies: - typical: 2.6.1 - - array-back@3.1.0: {} - - array-back@4.0.2: {} - - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - - array-flatten@1.1.1: {} - - array-includes@3.1.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - - array-union@2.1.0: {} - - array-uniq@1.0.3: {} - - array-unique@0.3.2: {} - - array.prototype.flat@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - es-shim-unscopables: 1.0.2 - - array.prototype.reduce@1.0.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - - asap@2.0.6: {} - - asn1.js@5.4.1: - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - optional: true - - asn1@0.2.6: - dependencies: - safer-buffer: 2.1.2 - - assert-plus@1.0.0: {} - - assertion-error@1.1.0: {} - - assign-symbols@1.0.0: {} - - ast-parents@0.0.1: {} - - astral-regex@2.0.0: {} - - async-eventemitter@0.2.4: - dependencies: - async: 2.6.2 - - async-limiter@1.0.1: {} - - async@1.5.2: {} - - async@2.6.2: - dependencies: - lodash: 4.17.21 - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - atob@2.1.2: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - aws-sign2@0.7.0: {} - - aws4@1.12.0: {} - - axios@0.21.4: - dependencies: - follow-redirects: 1.15.5(debug@4.3.4) - transitivePeerDependencies: - - debug - - axios@1.6.7: - dependencies: - follow-redirects: 1.15.5(debug@4.3.4) - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - babel-code-frame@6.26.0: - dependencies: - chalk: 1.1.3 - esutils: 2.0.3 - js-tokens: 3.0.2 - - babel-core@6.26.3: - dependencies: - babel-code-frame: 6.26.0 - babel-generator: 6.26.1 - babel-helpers: 6.24.1 - babel-messages: 6.23.0 - babel-register: 6.26.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - convert-source-map: 1.9.0 - debug: 2.6.9 - json5: 0.5.1 - lodash: 4.17.21 - minimatch: 3.1.2 - path-is-absolute: 1.0.1 - private: 0.1.8 - slash: 1.0.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - - babel-generator@6.26.1: - dependencies: - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - detect-indent: 4.0.0 - jsesc: 1.3.0 - lodash: 4.17.21 - source-map: 0.5.7 - trim-right: 1.0.1 - - babel-helper-builder-binary-assignment-operator-visitor@6.24.1: - dependencies: - babel-helper-explode-assignable-expression: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-call-delegate@6.24.1: - dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-define-map@6.26.0: - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-helper-explode-assignable-expression@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-function-name@6.24.1: - dependencies: - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-get-function-arity@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-helper-hoist-variables@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-helper-optimise-call-expression@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-helper-regex@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - - babel-helper-remap-async-to-generator@6.24.1: - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-replace-supers@6.24.1: - dependencies: - babel-helper-optimise-call-expression: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helpers@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-messages@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-check-es2015-constants@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-syntax-async-functions@6.13.0: {} - - babel-plugin-syntax-exponentiation-operator@6.13.0: {} - - babel-plugin-syntax-trailing-function-commas@6.22.0: {} - - babel-plugin-transform-async-to-generator@6.24.1: - dependencies: - babel-helper-remap-async-to-generator: 6.24.1 - babel-plugin-syntax-async-functions: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-arrow-functions@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-block-scoped-functions@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-block-scoping@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-classes@6.24.1: - dependencies: - babel-helper-define-map: 6.26.0 - babel-helper-function-name: 6.24.1 - babel-helper-optimise-call-expression: 6.24.1 - babel-helper-replace-supers: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-computed-properties@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-destructuring@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-duplicate-keys@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-plugin-transform-es2015-for-of@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-function-name@6.24.1: - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-literals@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-modules-amd@6.24.1: - dependencies: - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-modules-commonjs@6.26.2: - dependencies: - babel-plugin-transform-strict-mode: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-modules-systemjs@6.24.1: - dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-modules-umd@6.24.1: - dependencies: - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-object-super@6.24.1: - dependencies: - babel-helper-replace-supers: 6.24.1 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-parameters@6.24.1: - dependencies: - babel-helper-call-delegate: 6.24.1 - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-shorthand-properties@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-plugin-transform-es2015-spread@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-sticky-regex@6.24.1: - dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-plugin-transform-es2015-template-literals@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-typeof-symbol@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-unicode-regex@6.24.1: - dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - regexpu-core: 2.0.0 - - babel-plugin-transform-exponentiation-operator@6.24.1: - dependencies: - babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 - babel-plugin-syntax-exponentiation-operator: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-regenerator@6.26.0: - dependencies: - regenerator-transform: 0.10.1 - - babel-plugin-transform-strict-mode@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-preset-env@1.7.0: - dependencies: - babel-plugin-check-es2015-constants: 6.22.0 - babel-plugin-syntax-trailing-function-commas: 6.22.0 - babel-plugin-transform-async-to-generator: 6.24.1 - babel-plugin-transform-es2015-arrow-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoped-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoping: 6.26.0 - babel-plugin-transform-es2015-classes: 6.24.1 - babel-plugin-transform-es2015-computed-properties: 6.24.1 - babel-plugin-transform-es2015-destructuring: 6.23.0 - babel-plugin-transform-es2015-duplicate-keys: 6.24.1 - babel-plugin-transform-es2015-for-of: 6.23.0 - babel-plugin-transform-es2015-function-name: 6.24.1 - babel-plugin-transform-es2015-literals: 6.22.0 - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-plugin-transform-es2015-modules-systemjs: 6.24.1 - babel-plugin-transform-es2015-modules-umd: 6.24.1 - babel-plugin-transform-es2015-object-super: 6.24.1 - babel-plugin-transform-es2015-parameters: 6.24.1 - babel-plugin-transform-es2015-shorthand-properties: 6.24.1 - babel-plugin-transform-es2015-spread: 6.22.0 - babel-plugin-transform-es2015-sticky-regex: 6.24.1 - babel-plugin-transform-es2015-template-literals: 6.22.0 - babel-plugin-transform-es2015-typeof-symbol: 6.23.0 - babel-plugin-transform-es2015-unicode-regex: 6.24.1 - babel-plugin-transform-exponentiation-operator: 6.24.1 - babel-plugin-transform-regenerator: 6.26.0 - browserslist: 3.2.8 - invariant: 2.2.4 - semver: 5.7.2 - transitivePeerDependencies: - - supports-color - - babel-register@6.26.0: - dependencies: - babel-core: 6.26.3 - babel-runtime: 6.26.0 - core-js: 2.6.12 - home-or-tmp: 2.0.0 - lodash: 4.17.21 - mkdirp: 0.5.6 - source-map-support: 0.4.18 - transitivePeerDependencies: - - supports-color - - babel-runtime@6.26.0: - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 - - babel-template@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-traverse@6.26.0: - dependencies: - babel-code-frame: 6.26.0 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - debug: 2.6.9 - globals: 9.18.0 - invariant: 2.2.4 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-types@6.26.0: - dependencies: - babel-runtime: 6.26.0 - esutils: 2.0.3 - lodash: 4.17.21 - to-fast-properties: 1.0.3 - - babelify@7.3.0: - dependencies: - babel-core: 6.26.3 - object-assign: 4.1.1 - transitivePeerDependencies: - - supports-color - - babylon@6.18.0: {} - - backoff@2.5.0: - dependencies: - precond: 0.2.3 - - balanced-match@1.0.2: {} - - base-x@3.0.9: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - base@0.11.2: - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.1 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - - bcrypt-pbkdf@1.0.2: - dependencies: - tweetnacl: 0.14.5 - - bech32@1.1.4: {} - - big-integer@1.6.36: {} - - big.js@6.2.1: {} - - bigint-crypto-utils@3.3.0: {} - - bignumber.js@7.2.1: {} - - bignumber.js@9.1.2: {} - - binary-extensions@2.2.0: {} - - bip39@2.5.0: - dependencies: - create-hash: 1.2.0 - pbkdf2: 3.1.2 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - unorm: 1.6.0 - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - blakejs@1.2.1: {} - - bluebird@3.7.2: {} - - bn-chai@1.0.1(chai@4.3.4): - dependencies: - chai: 4.3.4 - - bn.js@4.11.6: {} - - bn.js@4.12.0: {} - - bn.js@5.2.1: {} - - body-parser@1.20.1: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - body-parser@1.20.2: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - boolbase@1.0.0: {} - - boxen@5.1.2: - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@2.3.2: - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - brorand@1.1.0: {} - - browser-stdout@1.3.1: {} - - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-cipher@1.0.1: - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - optional: true - - browserify-des@1.0.2: - dependencies: - cipher-base: 1.0.4 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - optional: true - - browserify-rsa@4.1.0: - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - optional: true - - browserify-sign@4.2.2: - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.4 - inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - optional: true - - browserslist@3.2.8: - dependencies: - caniuse-lite: 1.0.30001589 - electron-to-chromium: 1.4.682 - - bs58@4.0.1: - dependencies: - base-x: 3.0.9 - - bs58check@2.1.2: - dependencies: - bs58: 4.0.1 - create-hash: 1.2.0 - safe-buffer: 5.2.1 - - buffer-from@1.1.2: {} - - buffer-to-arraybuffer@0.0.5: {} - - buffer-xor@1.0.3: {} - - buffer-xor@2.0.2: - dependencies: - safe-buffer: 5.2.1 - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.0 - - bytes@3.1.2: {} - - bytewise-core@1.2.3: - dependencies: - typewise-core: 1.2.0 - - bytewise@1.1.0: - dependencies: - bytewise-core: 1.2.3 - typewise: 1.0.3 - - cache-base@1.0.1: - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - - cacheable-lookup@5.0.4: {} - - cacheable-lookup@6.1.0: {} - - cacheable-request@6.1.0: - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 - optional: true - - cacheable-request@7.0.4: - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.1 - - cachedown@1.0.0: - dependencies: - abstract-leveldown: 2.7.2 - lru-cache: 3.2.0 - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.1 - - callsites@3.1.0: {} - - camel-case@3.0.0: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - - camelcase@3.0.0: {} - - camelcase@4.1.0: {} - - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - - caniuse-lite@1.0.30001589: {} - - caseless@0.12.0: {} - - cbor@5.2.0: - dependencies: - bignumber.js: 9.1.2 - nofilter: 1.0.4 - - cbor@8.1.0: - dependencies: - nofilter: 3.1.0 - - chai-as-promised@7.1.1(chai@4.3.4): - dependencies: - chai: 4.3.4 - check-error: 1.0.3 - - chai-bignumber@3.0.0: {} - - chai-shallow-deep-equal@1.4.6(chai@4.3.4): - dependencies: - chai: 4.3.4 - - chai-string@1.5.0(chai@4.3.4): - dependencies: - chai: 4.3.4 - - chai@4.3.4: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 3.0.1 - get-func-name: 2.0.2 - pathval: 1.1.1 - type-detect: 4.0.8 - - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - change-case@3.0.2: - dependencies: - camel-case: 3.0.0 - constant-case: 2.0.0 - dot-case: 2.1.1 - header-case: 1.0.1 - is-lower-case: 1.1.3 - is-upper-case: 1.1.2 - lower-case: 1.1.4 - lower-case-first: 1.0.2 - no-case: 2.3.2 - param-case: 2.1.1 - pascal-case: 2.0.1 - path-case: 2.1.1 - sentence-case: 2.1.1 - snake-case: 2.1.0 - swap-case: 1.1.2 - title-case: 2.1.1 - upper-case: 1.1.3 - upper-case-first: 1.1.2 - - charenc@0.0.2: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - checkpoint-store@1.1.0: - dependencies: - functional-red-black-tree: 1.0.1 - - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - htmlparser2: 8.0.2 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 - - child_process@1.0.2: {} - - chokidar@3.3.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.2.0 - optionalDependencies: - fsevents: 2.1.3 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chownr@1.1.4: {} - - ci-info@2.0.0: {} - - cids@0.7.5: - dependencies: - buffer: 5.7.1 - class-is: 1.1.0 - multibase: 0.6.1 - multicodec: 1.0.4 - multihashes: 0.4.21 - - cipher-base@1.0.4: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - class-is@1.1.0: {} - - class-utils@0.3.6: - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - - clean-stack@2.2.0: {} - - cli-boxes@2.2.1: {} - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-spinners@2.9.2: {} - - cli-table3@0.5.1: - dependencies: - object-assign: 4.1.1 - string-width: 2.1.1 - optionalDependencies: - colors: 1.4.0 - - cliui@3.2.0: - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - wrap-ansi: 2.1.0 - - cliui@5.0.0: - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clone-response@1.0.3: - dependencies: - mimic-response: 1.0.1 - - clone@1.0.4: {} - - clone@2.1.2: {} - - code-point-at@1.1.0: {} - - collection-visit@1.0.0: - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - colors@1.4.0: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - command-exists@1.2.9: {} - - command-line-args@4.0.7: - dependencies: - array-back: 2.0.0 - find-replace: 1.0.3 - typical: 2.6.1 - - command-line-args@5.2.1: - dependencies: - array-back: 3.1.0 - find-replace: 3.0.0 - lodash.camelcase: 4.3.0 - typical: 4.0.0 - - command-line-usage@6.1.3: - dependencies: - array-back: 4.0.2 - chalk: 2.4.2 - table-layout: 1.0.2 - typical: 5.2.0 - - commander@10.0.1: {} - - commander@3.0.2: {} - - component-emitter@1.3.1: {} - - concat-map@0.0.1: {} - - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - - constant-case@2.0.0: - dependencies: - snake-case: 2.1.0 - upper-case: 1.1.3 - - contains-path@0.1.0: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-hash@2.5.2: - dependencies: - cids: 0.7.5 - multicodec: 0.5.7 - multihashes: 0.4.21 - - content-type@1.0.5: {} - - convert-source-map@1.9.0: {} - - cookie-signature@1.0.6: {} - - cookie@0.4.2: {} - - cookie@0.5.0: {} - - cookiejar@2.1.4: - optional: true - - copy-descriptor@0.1.1: {} - - core-js-pure@3.36.0: {} - - core-js@2.6.12: {} - - core-util-is@1.0.2: {} - - core-util-is@1.0.3: {} - - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - cosmiconfig@8.3.6(typescript@4.7.4): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 4.7.4 - - crc-32@1.2.2: {} - - create-ecdh@4.0.4: - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - optional: true - - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - create-require@1.1.1: {} - - cross-fetch@2.2.6(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - whatwg-fetch: 2.0.4 - transitivePeerDependencies: - - encoding - - cross-fetch@3.1.8(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-fetch@4.0.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-spawn@6.0.5: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypt@0.0.2: {} - - crypto-addr-codec@0.1.8: - dependencies: - base-x: 3.0.9 - big-integer: 1.6.36 - blakejs: 1.2.1 - bs58: 4.0.1 - ripemd160-min: 0.0.6 - safe-buffer: 5.2.1 - sha3: 2.1.4 - - crypto-browserify@3.12.0: - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.2 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - optional: true - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - - css-what@6.1.0: {} - - d@1.0.1: - dependencies: - es5-ext: 0.10.63 - type: 1.2.0 - - dashdash@1.14.1: - dependencies: - assert-plus: 1.0.0 - - death@1.1.0: {} - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@3.2.6(supports-color@6.0.0): - dependencies: - ms: 2.1.1 - optionalDependencies: - supports-color: 6.0.0 - - debug@3.2.7: - dependencies: - ms: 2.1.3 - - debug@4.3.4(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@1.2.0: {} - - decamelize@4.0.0: {} - - decode-uri-component@0.2.2: {} - - decompress-response@3.3.0: - dependencies: - mimic-response: 1.0.1 - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - deep-eql@3.0.1: - dependencies: - type-detect: 4.0.8 - - deep-equal@1.1.2: - dependencies: - is-arguments: 1.1.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 - object-is: 1.1.5 - object-keys: 1.1.1 - regexp.prototype.flags: 1.5.2 - - deep-extend@0.6.0: {} - - deep-is@0.1.4: {} - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - - defer-to-connect@1.1.3: - optional: true - - defer-to-connect@2.0.1: {} - - deferred-leveldown@1.2.2: - dependencies: - abstract-leveldown: 2.6.3 - - deferred-leveldown@4.0.2: - dependencies: - abstract-leveldown: 5.0.0 - inherits: 2.0.4 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - define-property@0.2.5: - dependencies: - is-descriptor: 0.1.7 - - define-property@1.0.0: - dependencies: - is-descriptor: 1.0.3 - - define-property@2.0.2: - dependencies: - is-descriptor: 1.0.3 - isobject: 3.0.1 - - defined@1.0.1: {} - - delayed-stream@1.0.0: {} - - depd@2.0.0: {} - - des.js@1.1.0: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - optional: true - - destroy@1.2.0: {} - - detect-indent@4.0.0: - dependencies: - repeating: 2.0.1 - - detect-indent@5.0.0: {} - - detect-port@1.5.1: - dependencies: - address: 1.2.2 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - diff@3.5.0: {} - - diff@4.0.2: {} - - diff@5.0.0: {} - - diffie-hellman@5.0.3: - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - optional: true - - difflib@0.2.4: - dependencies: - heap: 0.2.7 - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - doctrine@1.5.0: - dependencies: - esutils: 2.0.3 - isarray: 1.0.0 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - dom-walk@0.1.2: {} - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dot-case@2.1.1: - dependencies: - no-case: 2.3.2 - - dotenv@8.2.0: {} - - dotignore@0.1.2: - dependencies: - minimatch: 3.1.2 - - duplexer3@0.1.5: - optional: true - - ecc-jsbn@0.1.2: - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - - ee-first@1.1.1: {} - - electron-to-chromium@1.4.682: {} - - elliptic@6.5.4: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - emoji-regex@7.0.3: {} - - emoji-regex@8.0.0: {} - - encodeurl@1.0.2: {} - - encoding-down@5.0.4: - dependencies: - abstract-leveldown: 5.0.0 - inherits: 2.0.4 - level-codec: 9.0.2 - level-errors: 2.0.1 - xtend: 4.0.2 - - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - - entities@4.5.0: {} - - env-paths@2.2.1: {} - - errno@0.1.8: - dependencies: - prr: 1.0.1 - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - es-abstract@1.22.4: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.1 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 - - es-array-method-boxes-properly@1.0.0: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es-set-tostringtag@2.0.3: - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.1 - - es-shim-unscopables@1.0.2: - dependencies: - hasown: 2.0.1 - - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - es5-ext@0.10.63: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.3 - esniff: 2.0.1 - next-tick: 1.1.0 - - es6-iterator@2.0.3: - dependencies: - d: 1.0.1 - es5-ext: 0.10.63 - es6-symbol: 3.1.3 - - es6-promise@4.2.8: {} - - es6-symbol@3.1.3: - dependencies: - d: 1.0.1 - ext: 1.7.0 - - escalade@3.1.2: {} - - escape-html@1.0.3: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - escodegen@1.8.1: - dependencies: - esprima: 2.7.3 - estraverse: 1.9.3 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.2.0 - - eslint-config-prettier@8.1.0(eslint@7.22.0): - dependencies: - eslint: 7.22.0 - - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.8.0(@typescript-eslint/parser@4.18.0(eslint@7.22.0)(typescript@4.7.4))(eslint-import-resolver-node@0.3.9)(eslint@7.22.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 4.18.0(eslint@7.22.0)(typescript@4.7.4) - eslint: 7.22.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-import@2.22.0(@typescript-eslint/parser@4.18.0(eslint@7.22.0)(typescript@4.7.4))(eslint@7.22.0): - dependencies: - array-includes: 3.1.7 - array.prototype.flat: 1.3.2 - contains-path: 0.1.0 - debug: 2.6.9 - doctrine: 1.5.0 - eslint: 7.22.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@4.18.0(eslint@7.22.0)(typescript@4.7.4))(eslint-import-resolver-node@0.3.9)(eslint@7.22.0) - has: 1.0.4 - minimatch: 3.1.2 - object.values: 1.1.7 - read-pkg-up: 2.0.0 - resolve: 1.22.8 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 4.18.0(eslint@7.22.0)(typescript@4.7.4) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-prettier@3.3.1(eslint-config-prettier@8.1.0(eslint@7.22.0))(eslint@7.22.0)(prettier@3.2.5): - dependencies: - eslint: 7.22.0 - prettier: 3.2.5 - prettier-linter-helpers: 1.0.0 - optionalDependencies: - eslint-config-prettier: 8.1.0(eslint@7.22.0) - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-utils@2.1.0: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-visitor-keys@1.3.0: {} - - eslint-visitor-keys@2.1.0: {} - - eslint@7.22.0: - dependencies: - '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.3 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) - doctrine: 3.0.0 - enquirer: 2.4.1 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 - esquery: 1.5.0 - esutils: 2.0.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 - globals: 13.24.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 3.14.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash: 4.17.21 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.6.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - table: 6.8.1 - text-table: 0.2.0 - v8-compile-cache: 2.4.0 - transitivePeerDependencies: - - supports-color - - esm@3.2.25: - optional: true - - esniff@2.0.1: - dependencies: - d: 1.0.1 - es5-ext: 0.10.63 - event-emitter: 0.3.5 - type: 2.7.2 - - espree@7.3.1: - dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - eslint-visitor-keys: 1.3.0 - - esprima@2.7.3: {} - - esprima@4.0.1: {} - - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@1.9.3: {} - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - esutils@2.0.3: {} - - etag@1.8.1: {} - - eth-block-tracker@3.0.1: - dependencies: - eth-query: 2.1.2 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - ethjs-util: 0.1.6 - json-rpc-engine: 3.8.0 - pify: 2.3.0 - tape: 4.17.0 - transitivePeerDependencies: - - supports-color - - eth-ens-namehash@2.0.8: - dependencies: - idna-uts46-hx: 2.3.1 - js-sha3: 0.5.7 - - eth-gas-reporter@0.2.27(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@solidity-parser/parser': 0.14.5 - axios: 1.6.7 - cli-table3: 0.5.1 - colors: 1.4.0 - ethereum-cryptography: 1.2.0 - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - fs-readdir-recursive: 1.1.0 - lodash: 4.17.21 - markdown-table: 1.1.3 - mocha: 10.3.0 - req-cwd: 2.0.0 - sha1: 1.1.1 - sync-request: 6.1.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - eth-json-rpc-infura@3.2.1(encoding@0.1.13): - dependencies: - cross-fetch: 2.2.6(encoding@0.1.13) - eth-json-rpc-middleware: 1.6.0 - json-rpc-engine: 3.8.0 - json-rpc-error: 2.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - eth-json-rpc-middleware@1.6.0: - dependencies: - async: 2.6.2 - eth-query: 2.1.2 - eth-tx-summary: 3.2.4 - ethereumjs-block: 1.7.1 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - ethereumjs-vm: 2.6.0 - fetch-ponyfill: 4.1.0 - json-rpc-engine: 3.8.0 - json-rpc-error: 2.0.0 - json-stable-stringify: 1.1.1 - promise-to-callback: 1.0.0 - tape: 4.17.0 - transitivePeerDependencies: - - supports-color - - eth-lib@0.1.29(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - nano-json-stream-parser: 0.1.2 - servify: 0.1.12 - ws: 3.3.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - xhr-request-promise: 0.1.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - eth-lib@0.2.8: - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - xhr-request-promise: 0.1.3 - - eth-query@2.1.2: - dependencies: - json-rpc-random-id: 1.0.1 - xtend: 4.0.2 - - eth-sig-util@1.4.2: - dependencies: - ethereumjs-abi: https://codeload.github.com/ethereumjs/ethereumjs-abi/tar.gz/ee3994657fa7a427238e6ba92a84d0b529bbcde0 - ethereumjs-util: 5.2.1 - - eth-sig-util@3.0.0: - dependencies: - buffer: 5.7.1 - elliptic: 6.5.4 - ethereumjs-abi: 0.6.5 - ethereumjs-util: 5.2.1 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - - eth-tx-summary@3.2.4: - dependencies: - async: 2.6.2 - clone: 2.1.2 - concat-stream: 1.6.2 - end-of-stream: 1.4.4 - eth-query: 2.1.2 - ethereumjs-block: 1.7.1 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - ethereumjs-vm: 2.6.0 - through2: 2.0.5 - - ethashjs@0.0.8: - dependencies: - async: 2.6.2 - buffer-xor: 2.0.2 - ethereumjs-util: 7.1.5 - miller-rabin: 4.0.1 - - ethereum-bloom-filters@1.0.10: - dependencies: - js-sha3: 0.8.0 - - ethereum-common@0.0.18: {} - - ethereum-common@0.2.0: {} - - ethereum-cryptography@0.1.3: - dependencies: - '@types/pbkdf2': 3.1.2 - '@types/secp256k1': 4.0.6 - blakejs: 1.2.1 - browserify-aes: 1.2.0 - bs58check: 2.1.2 - create-hash: 1.2.0 - create-hmac: 1.1.7 - hash.js: 1.1.7 - keccak: 3.0.4 - pbkdf2: 3.1.2 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - scrypt-js: 3.0.1 - secp256k1: 4.0.3 - setimmediate: 1.0.5 - - ethereum-cryptography@1.2.0: - dependencies: - '@noble/hashes': 1.2.0 - '@noble/secp256k1': 1.7.1 - '@scure/bip32': 1.1.5 - '@scure/bip39': 1.1.1 - - ethereum-cryptography@2.1.3: - dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/bip32': 1.3.3 - '@scure/bip39': 1.2.2 - - ethereum-ens@0.8.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): - dependencies: - bluebird: 3.7.2 - eth-ens-namehash: 2.0.8 - js-sha3: 0.5.7 - pako: 1.0.11 - underscore: 1.13.6 - web3: 1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - ethereum-waffle@3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.7.4)(utf-8-validate@5.0.10): - dependencies: - '@ethereum-waffle/chai': 3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@ethereum-waffle/compiler': 3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(typescript@4.7.4)(utf-8-validate@5.0.10) - '@ethereum-waffle/mock-contract': 3.4.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@ethereum-waffle/provider': 3.4.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - - ethereumjs-abi@0.6.5: - dependencies: - bn.js: 4.12.0 - ethereumjs-util: 4.5.1 - - ethereumjs-abi@0.6.8: - dependencies: - bn.js: 4.12.0 - ethereumjs-util: 6.2.1 - - ethereumjs-abi@https://codeload.github.com/ethereumjs/ethereumjs-abi/tar.gz/ee3994657fa7a427238e6ba92a84d0b529bbcde0: - dependencies: - bn.js: 4.12.0 - ethereumjs-util: 6.2.1 - - ethereumjs-account@2.0.5: - dependencies: - ethereumjs-util: 5.2.1 - rlp: 2.2.7 - safe-buffer: 5.2.1 - - ethereumjs-account@3.0.0: - dependencies: - ethereumjs-util: 6.2.1 - rlp: 2.2.7 - safe-buffer: 5.2.1 - - ethereumjs-block@1.7.1: - dependencies: - async: 2.6.2 - ethereum-common: 0.2.0 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - merkle-patricia-tree: 2.3.2 - - ethereumjs-block@2.2.2: - dependencies: - async: 2.6.2 - ethereumjs-common: 1.5.0 - ethereumjs-tx: 2.1.2 - ethereumjs-util: 5.2.1 - merkle-patricia-tree: 2.3.2 - - ethereumjs-blockchain@4.0.4: - dependencies: - async: 2.6.2 - ethashjs: 0.0.8 - ethereumjs-block: 2.2.2 - ethereumjs-common: 1.5.0 - ethereumjs-util: 6.2.1 - flow-stoplight: 1.0.0 - level-mem: 3.0.1 - lru-cache: 5.1.1 - rlp: 2.2.7 - semaphore: 1.1.0 - - ethereumjs-common@1.5.0: {} - - ethereumjs-tx@1.3.7: - dependencies: - ethereum-common: 0.0.18 - ethereumjs-util: 5.2.1 - - ethereumjs-tx@2.1.2: - dependencies: - ethereumjs-common: 1.5.0 - ethereumjs-util: 6.2.1 - - ethereumjs-util@4.5.1: - dependencies: - bn.js: 4.12.0 - create-hash: 1.2.0 - elliptic: 6.5.4 - ethereum-cryptography: 0.1.3 - rlp: 2.2.7 - - ethereumjs-util@5.2.1: - dependencies: - bn.js: 4.12.0 - create-hash: 1.2.0 - elliptic: 6.5.4 - ethereum-cryptography: 0.1.3 - ethjs-util: 0.1.6 - rlp: 2.2.7 - safe-buffer: 5.2.1 - - ethereumjs-util@6.2.1: - dependencies: - '@types/bn.js': 4.11.6 - bn.js: 4.12.0 - create-hash: 1.2.0 - elliptic: 6.5.4 - ethereum-cryptography: 0.1.3 - ethjs-util: 0.1.6 - rlp: 2.2.7 - - ethereumjs-util@7.1.5: - dependencies: - '@types/bn.js': 5.1.5 - bn.js: 5.2.1 - create-hash: 1.2.0 - ethereum-cryptography: 0.1.3 - rlp: 2.2.7 - - ethereumjs-vm@2.6.0: - dependencies: - async: 2.6.2 - async-eventemitter: 0.2.4 - ethereumjs-account: 2.0.5 - ethereumjs-block: 2.2.2 - ethereumjs-common: 1.5.0 - ethereumjs-util: 6.2.1 - fake-merkle-patricia-tree: 1.0.1 - functional-red-black-tree: 1.0.1 - merkle-patricia-tree: 2.3.2 - rustbn.js: 0.2.0 - safe-buffer: 5.2.1 - - ethereumjs-vm@4.2.0: - dependencies: - async: 2.6.2 - async-eventemitter: 0.2.4 - core-js-pure: 3.36.0 - ethereumjs-account: 3.0.0 - ethereumjs-block: 2.2.2 - ethereumjs-blockchain: 4.0.4 - ethereumjs-common: 1.5.0 - ethereumjs-tx: 2.1.2 - ethereumjs-util: 6.2.1 - fake-merkle-patricia-tree: 1.0.1 - functional-red-black-tree: 1.0.1 - merkle-patricia-tree: 2.3.2 - rustbn.js: 0.2.0 - safe-buffer: 5.2.1 - util.promisify: 1.1.2 - - ethereumjs-wallet@0.6.5: - dependencies: - aes-js: 3.1.2 - bs58check: 2.1.2 - ethereum-cryptography: 0.1.3 - ethereumjs-util: 6.2.1 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - scryptsy: 1.2.1 - utf8: 3.0.0 - uuid: 3.4.0 - optional: true - - ethers@4.0.49: - dependencies: - aes-js: 3.0.0 - bn.js: 4.12.0 - elliptic: 6.5.4 - hash.js: 1.1.3 - js-sha3: 0.5.7 - scrypt-js: 2.0.4 - setimmediate: 1.0.4 - uuid: 2.0.1 - xmlhttprequest: 1.8.0 - - ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/units': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@ethersproject/web': 5.7.1 - '@ethersproject/wordlists': 5.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethers@6.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@adraffy/ens-normalize': 1.10.1 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@types/node': 18.15.13 - aes-js: 4.0.0-beta.5 - tslib: 2.4.0 - ws: 8.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethjs-unit@0.1.6: - dependencies: - bn.js: 4.11.6 - number-to-bn: 1.7.0 - - ethjs-util@0.1.6: - dependencies: - is-hex-prefixed: 1.0.0 - strip-hex-prefix: 1.0.0 - - event-emitter@0.3.5: - dependencies: - d: 1.0.1 - es5-ext: 0.10.63 - - eventemitter3@4.0.4: {} - - events@3.3.0: {} - - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - - expand-brackets@2.1.4: - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - express@4.18.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - ext@1.7.0: - dependencies: - type: 2.7.2 - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - extend-shallow@3.0.2: - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - - extend@3.0.2: {} - - extglob@2.0.4: - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - extsprintf@1.3.0: {} - - fake-merkle-patricia-tree@1.0.1: - dependencies: - checkpoint-store: 1.1.0 - - fast-check@3.1.1: - dependencies: - pure-rand: 5.0.5 - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fetch-ponyfill@4.1.0: - dependencies: - node-fetch: 1.7.3 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - - fill-range@4.0.0: - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - finalhandler@1.2.0: - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - find-replace@1.0.3: - dependencies: - array-back: 1.0.4 - test-value: 2.1.0 - - find-replace@3.0.0: - dependencies: - array-back: 3.1.0 - - find-up@1.1.2: - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - - find-up@2.1.0: - dependencies: - locate-path: 2.0.0 - - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - find-yarn-workspace-root@1.2.1: - dependencies: - fs-extra: 4.0.3 - micromatch: 3.1.10 - transitivePeerDependencies: - - supports-color - - find-yarn-workspace-root@2.0.0: - dependencies: - micromatch: 4.0.5 - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - - flat@4.1.1: - dependencies: - is-buffer: 2.0.5 - - flat@5.0.2: {} - - flatted@3.3.1: {} - - flow-stoplight@1.0.0: {} - - follow-redirects@1.15.5(debug@4.3.4): - optionalDependencies: - debug: 4.3.4(supports-color@8.1.1) - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - for-in@1.0.2: {} - - forever-agent@0.6.1: {} - - form-data-encoder@1.7.1: {} - - form-data@2.3.3: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@2.5.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - forwarded@0.2.0: {} - - fp-ts@1.19.3: {} - - fragment-cache@0.2.1: - dependencies: - map-cache: 0.2.2 - - fresh@0.5.2: {} - - fs-extra@0.30.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 2.4.0 - klaw: 1.3.1 - path-is-absolute: 1.0.1 - rimraf: 2.7.1 - - fs-extra@4.0.3: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@1.2.7: - dependencies: - minipass: 2.9.0 - - fs-readdir-recursive@1.1.0: {} - - fs.realpath@1.0.0: {} - - fsevents@2.1.3: - optional: true - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - functions-have-names: 1.2.3 - - functional-red-black-tree@1.0.1: {} - - functions-have-names@1.2.3: {} - - ganache-cli@6.12.2: {} - - ganache-core@2.13.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): - dependencies: - abstract-leveldown: 3.0.0 - async: 2.6.2 - bip39: 2.5.0 - cachedown: 1.0.0 - clone: 2.1.2 - debug: 3.2.6(supports-color@6.0.0) - encoding-down: 5.0.4 - eth-sig-util: 3.0.0 - ethereumjs-abi: 0.6.8 - ethereumjs-account: 3.0.0 - ethereumjs-block: 2.2.2 - ethereumjs-common: 1.5.0 - ethereumjs-tx: 2.1.2 - ethereumjs-util: 6.2.1 - ethereumjs-vm: 4.2.0 - heap: 0.2.6 - level-sublevel: 6.6.4 - levelup: 3.1.1 - lodash: 4.17.20 - lru-cache: 5.1.1 - merkle-patricia-tree: 3.0.0 - patch-package: 6.2.2 - seedrandom: 3.0.1 - source-map-support: 0.5.12 - tmp: 0.1.0 - web3-provider-engine: 14.2.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - websocket: 1.0.32 - optionalDependencies: - ethereumjs-wallet: 0.6.5 - web3: 1.2.11(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - get-caller-file@1.0.3: {} - - get-caller-file@2.0.5: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.1 - - get-port@3.2.0: {} - - get-stream@4.1.0: - dependencies: - pump: 3.0.0 - optional: true - - get-stream@5.2.0: - dependencies: - pump: 3.0.0 - - get-stream@6.0.1: {} - - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - - get-value@2.0.6: {} - - getpass@0.1.7: - dependencies: - assert-plus: 1.0.0 - - ghost-testrpc@0.0.2: - dependencies: - chalk: 2.4.2 - node-emoji: 1.11.0 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@5.0.15: - dependencies: - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.1.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.0.4 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.1.7: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - global-modules@2.0.0: - dependencies: - global-prefix: 3.0.0 - - global-prefix@3.0.0: - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - - global@4.4.0: - dependencies: - min-document: 2.19.0 - process: 0.11.10 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globals@9.18.0: {} - - globalthis@1.0.3: - dependencies: - define-properties: 1.2.1 - - globby@10.0.2: - dependencies: - '@types/glob': 7.2.0 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - glob: 7.2.3 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - got@11.8.6: - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.3 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.4 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.1 - - got@12.1.0: - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 5.0.1 - '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.3 - cacheable-lookup: 6.1.0 - cacheable-request: 7.0.4 - decompress-response: 6.0.0 - form-data-encoder: 1.7.1 - get-stream: 6.0.1 - http2-wrapper: 2.2.1 - lowercase-keys: 3.0.0 - p-cancelable: 3.0.0 - responselike: 2.0.1 - - got@9.6.0: - dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 - optional: true - - graceful-fs@4.2.11: {} - - growl@1.10.5: {} - - handlebars@4.7.8: - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.17.4 - - har-schema@2.0.0: {} - - har-validator@5.1.5: - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - - hardhat-gas-reporter@1.0.10(bufferutil@4.0.8)(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10): - dependencies: - array-uniq: 1.0.3 - eth-gas-reporter: 0.2.27(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10) - sha1: 1.1.1 - transitivePeerDependencies: - - '@codechecks/client' - - bufferutil - - debug - - utf-8-validate - - hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10): - dependencies: - '@ethersproject/abi': 5.7.0 - '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/ethereumjs-block': 5.0.4 - '@nomicfoundation/ethereumjs-blockchain': 7.0.4 - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-evm': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-statemanager': 2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) - '@nomicfoundation/ethereumjs-trie': 6.0.4 - '@nomicfoundation/ethereumjs-tx': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - '@nomicfoundation/ethereumjs-verkle': 0.0.2 - '@nomicfoundation/ethereumjs-vm': 7.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2) - '@nomicfoundation/solidity-analyzer': 0.1.1 - '@sentry/node': 5.30.0 - '@types/bn.js': 5.1.5 - '@types/lru-cache': 5.1.1 - adm-zip: 0.4.16 - aggregate-error: 3.1.0 - ansi-escapes: 4.3.2 - boxen: 5.1.2 - chalk: 2.4.2 - chokidar: 3.6.0 - ci-info: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - enquirer: 2.4.1 - env-paths: 2.2.1 - ethereum-cryptography: 1.2.0 - ethereumjs-abi: 0.6.8 - find-up: 2.1.0 - fp-ts: 1.19.3 - fs-extra: 7.0.1 - glob: 7.2.0 - immutable: 4.3.5 - io-ts: 1.10.4 - keccak: 3.0.4 - lodash: 4.17.21 - mnemonist: 0.38.5 - mocha: 10.3.0 - p-map: 4.0.0 - raw-body: 2.5.2 - resolve: 1.17.0 - semver: 6.3.1 - solc: 0.7.3(debug@4.3.4) - source-map-support: 0.5.21 - stacktrace-parser: 0.1.10 - tsort: 0.0.1 - undici: 5.28.3 - uuid: 8.3.2 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - ts-node: 10.9.1(@types/node@20.11.20)(typescript@4.7.4) - typescript: 4.7.4 - transitivePeerDependencies: - - bufferutil - - c-kzg - - supports-color - - utf-8-validate - - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - - has-bigints@1.0.2: {} - - has-flag@1.0.0: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - has-value@0.3.1: - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - - has-value@1.0.0: - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - - has-values@0.1.4: {} - - has-values@1.0.0: - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - - has@1.0.4: {} - - hash-base@3.1.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - - hash.js@1.1.3: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.1: - dependencies: - function-bind: 1.1.2 - - he@1.2.0: {} - - header-case@1.0.1: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - - heap@0.2.6: {} - - heap@0.2.7: {} - - highlight.js@10.7.3: {} - - highlightjs-solidity@2.0.6: {} - - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - home-or-tmp@2.0.0: - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - - hosted-git-info@2.8.9: {} - - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - - http-basic@8.1.3: - dependencies: - caseless: 0.12.0 - concat-stream: 1.6.2 - http-response-object: 3.0.2 - parse-cache-control: 1.0.1 - - http-cache-semantics@4.1.1: {} - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-https@1.0.0: {} - - http-response-object@3.0.2: - dependencies: - '@types/node': 10.17.60 - - http-signature@1.2.0: - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.18.0 - - http2-wrapper@1.0.3: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - - http2-wrapper@2.2.1: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - husky@9.0.11: {} - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - - idna-uts46-hx@2.3.1: - dependencies: - punycode: 2.1.0 - - ieee754@1.2.1: {} - - ignore@4.0.6: {} - - ignore@5.3.1: {} - - immediate@3.2.3: {} - - immediate@3.3.0: {} - - immutable@4.3.5: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - - indent-string@4.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ini@1.3.8: {} - - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.1 - side-channel: 1.0.5 - - interpret@1.4.0: {} - - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - - invert-kv@1.0.0: {} - - io-ts@1.10.4: - dependencies: - fp-ts: 1.19.3 - - ipaddr.js@1.9.1: {} - - is-accessor-descriptor@1.0.1: - dependencies: - hasown: 2.0.1 - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - - is-arrayish@0.2.1: {} - - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.2.0 - - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-buffer@1.1.6: {} - - is-buffer@2.0.5: {} - - is-callable@1.2.7: {} - - is-ci@2.0.0: - dependencies: - ci-info: 2.0.0 - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.1 - - is-data-descriptor@1.0.1: - dependencies: - hasown: 2.0.1 - - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.2 - - is-descriptor@0.1.7: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - - is-descriptor@1.0.3: - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - - is-docker@2.2.1: {} - - is-extendable@0.1.1: {} - - is-extendable@1.0.1: - dependencies: - is-plain-object: 2.0.4 - - is-extglob@2.1.1: {} - - is-finite@1.1.0: {} - - is-fn@1.0.0: {} - - is-fullwidth-code-point@1.0.0: - dependencies: - number-is-nan: 1.0.1 - - is-fullwidth-code-point@2.0.0: {} - - is-fullwidth-code-point@3.0.0: {} - - is-function@1.0.2: {} - - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hex-prefixed@1.0.0: {} - - is-interactive@1.0.0: {} - - is-lower-case@1.1.3: - dependencies: - lower-case: 1.1.4 - - is-negative-zero@2.0.3: {} - - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-number@3.0.0: - dependencies: - kind-of: 3.2.2 - - is-number@7.0.0: {} - - is-observable@2.1.0: {} - - is-plain-obj@2.1.0: {} - - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 - - is-stream@1.1.0: {} - - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.14 - - is-typedarray@1.0.0: {} - - is-unicode-supported@0.1.0: {} - - is-upper-case@1.1.2: - dependencies: - upper-case: 1.1.3 - - is-url@1.2.4: {} - - is-utf8@0.2.1: {} - - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.7 - - is-windows@1.0.2: {} - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - isarray@0.0.1: {} - - isarray@1.0.0: {} - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - isobject@2.1.0: - dependencies: - isarray: 1.0.0 - - isobject@3.0.1: {} - - isstream@0.1.2: {} - - js-sdsl@4.4.2: {} - - js-sha3@0.5.7: {} - - js-sha3@0.8.0: {} - - js-tokens@3.0.2: {} - - js-tokens@4.0.0: {} - - js-yaml@3.13.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsbn@0.1.1: {} - - jsesc@0.5.0: {} - - jsesc@1.3.0: {} - - json-buffer@3.0.0: - optional: true - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-rpc-engine@3.8.0: - dependencies: - async: 2.6.2 - babel-preset-env: 1.7.0 - babelify: 7.3.0 - json-rpc-error: 2.0.0 - promise-to-callback: 1.0.0 - safe-event-emitter: 1.0.1 - transitivePeerDependencies: - - supports-color - - json-rpc-error@2.0.0: - dependencies: - inherits: 2.0.4 - - json-rpc-random-id@1.0.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-schema@0.4.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json-stable-stringify@1.1.1: - dependencies: - call-bind: 1.0.7 - isarray: 2.0.5 - jsonify: 0.0.1 - object-keys: 1.1.1 - - json-stringify-safe@5.0.1: {} - - json5@0.5.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - - jsonfile@2.4.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonify@0.0.1: {} - - jsonschema@1.4.1: {} - - jsprim@1.4.2: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - - keccak256@1.0.6: - dependencies: - bn.js: 5.2.1 - buffer: 6.0.3 - keccak: 3.0.4 - - keccak@3.0.4: - dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.8.0 - readable-stream: 3.6.2 - - keyv@3.1.0: - dependencies: - json-buffer: 3.0.0 - optional: true - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kind-of@3.2.2: - dependencies: - is-buffer: 1.1.6 - - kind-of@4.0.0: - dependencies: - is-buffer: 1.1.6 - - kind-of@6.0.3: {} - - klaw-sync@6.0.0: - dependencies: - graceful-fs: 4.2.11 - - klaw@1.3.1: - optionalDependencies: - graceful-fs: 4.2.11 - - lcid@1.0.0: - dependencies: - invert-kv: 1.0.0 - - level-codec@7.0.1: {} - - level-codec@9.0.2: - dependencies: - buffer: 5.7.1 - - level-errors@1.0.5: - dependencies: - errno: 0.1.8 - - level-errors@2.0.1: - dependencies: - errno: 0.1.8 - - level-iterator-stream@1.3.1: - dependencies: - inherits: 2.0.4 - level-errors: 1.0.5 - readable-stream: 1.1.14 - xtend: 4.0.2 - - level-iterator-stream@2.0.3: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - xtend: 4.0.2 - - level-iterator-stream@3.0.1: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - xtend: 4.0.2 - - level-mem@3.0.1: - dependencies: - level-packager: 4.0.1 - memdown: 3.0.0 - - level-packager@4.0.1: - dependencies: - encoding-down: 5.0.4 - levelup: 3.1.1 - - level-post@1.0.7: - dependencies: - ltgt: 2.1.3 - - level-sublevel@6.6.4: - dependencies: - bytewise: 1.1.0 - level-codec: 9.0.2 - level-errors: 2.0.1 - level-iterator-stream: 2.0.3 - ltgt: 2.1.3 - pull-defer: 0.2.3 - pull-level: 2.0.4 - pull-stream: 3.7.0 - typewiselite: 1.0.0 - xtend: 4.0.2 - - level-ws@0.0.0: - dependencies: - readable-stream: 1.0.34 - xtend: 2.1.2 - - level-ws@1.0.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - xtend: 4.0.2 - - levelup@1.3.9: - dependencies: - deferred-leveldown: 1.2.2 - level-codec: 7.0.1 - level-errors: 1.0.5 - level-iterator-stream: 1.3.1 - prr: 1.0.1 - semver: 5.4.1 - xtend: 4.0.2 - - levelup@3.1.1: - dependencies: - deferred-leveldown: 4.0.2 - level-errors: 2.0.1 - level-iterator-stream: 3.0.1 - xtend: 4.0.2 - - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lines-and-columns@1.2.4: {} - - load-json-file@1.1.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 - - load-json-file@2.0.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - strip-bom: 3.0.0 - - locate-path@2.0.0: - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.assign@4.2.0: {} - - lodash.camelcase@4.3.0: {} - - lodash.clonedeep@4.5.0: {} - - lodash.isequal@4.5.0: {} - - lodash.merge@4.6.2: {} - - lodash.truncate@4.4.2: {} - - lodash@4.17.20: {} - - lodash@4.17.21: {} - - log-symbols@3.0.0: - dependencies: - chalk: 2.4.2 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - looper@2.0.0: {} - - looper@3.0.0: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lower-case-first@1.0.2: - dependencies: - lower-case: 1.1.4 - - lower-case@1.1.4: {} - - lowercase-keys@1.0.1: - optional: true - - lowercase-keys@2.0.0: {} - - lowercase-keys@3.0.0: {} - - lru-cache@10.2.0: {} - - lru-cache@3.2.0: - dependencies: - pseudomap: 1.0.2 - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru_map@0.3.3: {} - - ltgt@2.1.3: {} - - ltgt@2.2.1: {} - - make-error@1.3.6: {} - - map-cache@0.2.2: {} - - map-visit@1.0.0: - dependencies: - object-visit: 1.0.1 - - markdown-table@1.1.3: {} - - md5.js@1.3.5: - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - media-typer@0.3.0: {} - - memdown@1.4.1: - dependencies: - abstract-leveldown: 2.7.2 - functional-red-black-tree: 1.0.1 - immediate: 3.3.0 - inherits: 2.0.4 - ltgt: 2.2.1 - safe-buffer: 5.1.2 - - memdown@3.0.0: - dependencies: - abstract-leveldown: 5.0.0 - functional-red-black-tree: 1.0.1 - immediate: 3.2.3 - inherits: 2.0.4 - ltgt: 2.2.1 - safe-buffer: 5.1.2 - - memorystream@0.3.1: {} - - merge-descriptors@1.0.1: {} - - merge2@1.4.1: {} - - merkle-patricia-tree@2.3.2: - dependencies: - async: 1.5.2 - ethereumjs-util: 5.2.1 - level-ws: 0.0.0 - levelup: 1.3.9 - memdown: 1.4.1 - readable-stream: 2.3.8 - rlp: 2.2.7 - semaphore: 1.1.0 - - merkle-patricia-tree@3.0.0: - dependencies: - async: 2.6.2 - ethereumjs-util: 5.2.1 - level-mem: 3.0.1 - level-ws: 1.0.0 - readable-stream: 3.6.2 - rlp: 2.2.7 - semaphore: 1.1.0 - - methods@1.1.2: {} - - micro-ftch@0.3.1: {} - - micromatch@3.1.10: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - miller-rabin@4.0.1: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@1.6.0: {} - - mimic-fn@2.1.0: {} - - mimic-response@1.0.1: {} - - mimic-response@3.1.0: {} - - min-document@2.19.0: - dependencies: - dom-walk: 0.1.2 - - minimalistic-assert@1.0.1: {} - - minimalistic-crypto-utils@1.0.1: {} - - minimatch@3.0.4: - dependencies: - brace-expansion: 1.1.11 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.0.1: - dependencies: - brace-expansion: 2.0.1 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - minipass@2.9.0: - dependencies: - safe-buffer: 5.2.1 - yallist: 3.1.1 - - minizlib@1.3.3: - dependencies: - minipass: 2.9.0 - - mixin-deep@1.3.2: - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - - mkdirp-promise@5.0.1: - dependencies: - mkdirp: 3.0.1 - - mkdirp@0.5.5: - dependencies: - minimist: 1.2.8 - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mkdirp@3.0.1: {} - - mnemonist@0.38.5: - dependencies: - obliterator: 2.0.4 - - mocha@10.3.0: - dependencies: - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 8.1.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.0.1 - ms: 2.1.3 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.2.1 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - - mocha@7.1.2: - dependencies: - ansi-colors: 3.2.3 - browser-stdout: 1.3.1 - chokidar: 3.3.0 - debug: 3.2.6(supports-color@6.0.0) - diff: 3.5.0 - escape-string-regexp: 1.0.5 - find-up: 3.0.0 - glob: 7.1.3 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 3.13.1 - log-symbols: 3.0.0 - minimatch: 3.0.4 - mkdirp: 0.5.5 - ms: 2.1.1 - node-environment-flags: 1.0.6 - object.assign: 4.1.0 - strip-json-comments: 2.0.1 - supports-color: 6.0.0 - which: 1.3.1 - wide-align: 1.1.3 - yargs: 13.3.2 - yargs-parser: 13.1.2 - yargs-unparser: 1.6.0 - - mock-fs@4.14.0: {} - - mock-property@1.0.3: - dependencies: - define-data-property: 1.1.4 - functions-have-names: 1.2.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - hasown: 2.0.1 - isarray: 2.0.5 - - ms@2.0.0: {} - - ms@2.1.1: {} - - ms@2.1.2: {} - - ms@2.1.3: {} - - multibase@0.6.1: - dependencies: - base-x: 3.0.9 - buffer: 5.7.1 - - multibase@0.7.0: - dependencies: - base-x: 3.0.9 - buffer: 5.7.1 - - multicodec@0.5.7: - dependencies: - varint: 5.0.2 - - multicodec@1.0.4: - dependencies: - buffer: 5.7.1 - varint: 5.0.2 - - multihashes@0.4.21: - dependencies: - buffer: 5.7.1 - multibase: 0.7.0 - varint: 5.0.2 - - nan@2.18.0: {} - - nano-base32@1.0.1: {} - - nano-json-stream-parser@0.1.2: {} - - nanomatch@1.2.13: - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - - natural-compare@1.4.0: {} - - negotiator@0.6.3: {} - - neo-async@2.6.2: {} - - next-tick@1.1.0: {} - - nice-try@1.0.5: {} - - no-case@2.3.2: - dependencies: - lower-case: 1.1.4 - - node-addon-api@2.0.2: {} - - node-emoji@1.11.0: - dependencies: - lodash: 4.17.21 - - node-environment-flags@1.0.6: - dependencies: - object.getownpropertydescriptors: 2.1.7 - semver: 5.7.2 - - node-fetch@1.7.3: - dependencies: - encoding: 0.1.13 - is-stream: 1.1.0 - - node-fetch@2.7.0(encoding@0.1.13): - dependencies: - whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 - - node-gyp-build@4.8.0: {} - - nofilter@1.0.4: {} - - nofilter@3.1.0: {} - - nopt@3.0.6: - dependencies: - abbrev: 1.0.9 - - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - - normalize-path@3.0.0: {} - - normalize-url@4.5.1: - optional: true - - normalize-url@6.1.0: {} - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - number-is-nan@1.0.1: {} - - number-to-bn@1.7.0: - dependencies: - bn.js: 4.11.6 - strip-hex-prefix: 1.0.0 - - oauth-sign@0.9.0: {} - - object-assign@4.1.1: {} - - object-copy@0.1.0: - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - - object-inspect@1.12.3: {} - - object-inspect@1.13.1: {} - - object-is@1.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - object-keys@0.4.0: {} - - object-keys@1.1.1: {} - - object-visit@1.0.1: - dependencies: - isobject: 3.0.1 - - object.assign@4.1.0: - dependencies: - define-properties: 1.2.1 - function-bind: 1.1.2 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - object.getownpropertydescriptors@2.1.7: - dependencies: - array.prototype.reduce: 1.0.6 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - safe-array-concat: 1.1.0 - - object.pick@1.3.0: - dependencies: - isobject: 3.0.1 - - object.values@1.1.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - - obliterator@2.0.4: {} - - oboe@2.1.4: - dependencies: - http-https: 1.0.0 - optional: true - - oboe@2.1.5: - dependencies: - http-https: 1.0.0 - - observable-fns@0.6.1: {} - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - open@7.4.2: - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - os-homedir@1.0.2: {} - - os-locale@1.4.0: - dependencies: - lcid: 1.0.0 - - os-tmpdir@1.0.2: {} - - p-cancelable@1.1.0: - optional: true - - p-cancelable@2.1.1: {} - - p-cancelable@3.0.0: {} - - p-limit@1.3.0: - dependencies: - p-try: 1.0.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@2.0.0: - dependencies: - p-limit: 1.3.0 - - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-try@1.0.0: {} - - p-try@2.2.0: {} - - pako@1.0.11: {} - - param-case@2.1.1: - dependencies: - no-case: 2.3.2 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-asn1@5.1.6: - dependencies: - asn1.js: 5.4.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - optional: true - - parse-cache-control@1.0.1: {} - - parse-headers@2.0.5: {} - - parse-json@2.2.0: - dependencies: - error-ex: 1.3.2 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse5-htmlparser2-tree-adapter@7.0.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.1.2 - - parse5@7.1.2: - dependencies: - entities: 4.5.0 - - parseurl@1.3.3: {} - - pascal-case@2.0.1: - dependencies: - camel-case: 3.0.0 - upper-case-first: 1.1.2 - - pascalcase@0.1.1: {} - - patch-package@6.2.2: - dependencies: - '@yarnpkg/lockfile': 1.1.0 - chalk: 2.4.2 - cross-spawn: 6.0.5 - find-yarn-workspace-root: 1.2.1 - fs-extra: 7.0.1 - is-ci: 2.0.0 - klaw-sync: 6.0.0 - minimist: 1.2.8 - rimraf: 2.7.1 - semver: 5.7.2 - slash: 2.0.0 - tmp: 0.0.33 - transitivePeerDependencies: - - supports-color - - patch-package@6.5.1: - dependencies: - '@yarnpkg/lockfile': 1.1.0 - chalk: 4.1.2 - cross-spawn: 6.0.5 - find-yarn-workspace-root: 2.0.0 - fs-extra: 9.1.0 - is-ci: 2.0.0 - klaw-sync: 6.0.0 - minimist: 1.2.8 - open: 7.4.2 - rimraf: 2.7.1 - semver: 5.7.2 - slash: 2.0.0 - tmp: 0.0.33 - yaml: 1.10.2 - - path-browserify@1.0.1: {} - - path-case@2.1.1: - dependencies: - no-case: 2.3.2 - - path-exists@2.1.0: - dependencies: - pinkie-promise: 2.0.1 - - path-exists@3.0.0: {} - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@2.0.1: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-to-regexp@0.1.7: {} - - path-type@1.1.0: - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - pinkie-promise: 2.0.1 - - path-type@2.0.0: - dependencies: - pify: 2.3.0 - - path-type@4.0.0: {} - - pathval@1.1.1: {} - - pbkdf2@3.1.2: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - - performance-now@2.1.0: {} - - picomatch@2.3.1: {} - - pify@2.3.0: {} - - pify@4.0.1: {} - - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 - - pinkie@2.0.4: {} - - pluralize@8.0.0: {} - - posix-character-classes@0.1.1: {} - - possible-typed-array-names@1.0.0: {} - - postinstall-postinstall@2.1.0: {} - - precond@0.2.3: {} - - prelude-ls@1.1.2: {} - - prelude-ls@1.2.1: {} - - prepend-http@2.0.0: - optional: true - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@2.8.8: {} - - prettier@3.2.5: {} - - private@0.1.8: {} - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} - - progress@2.0.3: {} - - promise-to-callback@1.0.0: - dependencies: - is-fn: 1.0.0 - set-immediate-shim: 1.0.1 - - promise@8.3.0: - dependencies: - asap: 2.0.6 - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - proxy-from-env@1.1.0: {} - - prr@1.0.1: {} - - pseudomap@1.0.2: {} - - psl@1.9.0: {} - - public-encrypt@4.0.3: - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.6 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - optional: true - - pull-cat@1.1.11: {} - - pull-defer@0.2.3: {} - - pull-level@2.0.4: - dependencies: - level-post: 1.0.7 - pull-cat: 1.1.11 - pull-live: 1.0.1 - pull-pushable: 2.2.0 - pull-stream: 3.7.0 - pull-window: 2.1.4 - stream-to-pull-stream: 1.7.3 - - pull-live@1.0.1: - dependencies: - pull-cat: 1.1.11 - pull-stream: 3.7.0 - - pull-pushable@2.2.0: {} - - pull-stream@3.7.0: {} - - pull-window@2.1.4: - dependencies: - looper: 2.0.0 - - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - punycode@1.4.1: {} - - punycode@2.1.0: {} - - punycode@2.3.1: {} - - pure-rand@5.0.5: {} - - qs@6.11.0: - dependencies: - side-channel: 1.0.5 - - qs@6.11.2: - dependencies: - side-channel: 1.0.5 - - qs@6.5.3: {} - - query-string@5.1.1: - dependencies: - decode-uri-component: 0.2.2 - object-assign: 4.1.1 - strict-uri-encode: 1.1.0 - - queue-microtask@1.2.3: {} - - quick-lru@5.1.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - randomfill@1.0.4: - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - optional: true - - range-parser@1.2.1: {} - - raw-body@2.5.1: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - read-pkg-up@1.0.1: - dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 - - read-pkg-up@2.0.0: - dependencies: - find-up: 2.1.0 - read-pkg: 2.0.0 - - read-pkg@1.1.0: - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - - read-pkg@2.0.0: - dependencies: - load-json-file: 2.0.0 - normalize-package-data: 2.5.0 - path-type: 2.0.0 - - readable-stream@1.0.34: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - readable-stream@1.1.14: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.2.0: - dependencies: - picomatch: 2.3.1 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - rechoir@0.6.2: - dependencies: - resolve: 1.22.8 - - recursive-readdir@2.2.3: - dependencies: - minimatch: 3.1.2 - - reduce-flatten@2.0.0: {} - - regenerate@1.4.2: {} - - regenerator-runtime@0.11.1: {} - - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.10.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - private: 0.1.8 - - regex-not@1.0.2: - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - regexpp@3.2.0: {} - - regexpu-core@2.0.0: - dependencies: - regenerate: 1.4.2 - regjsgen: 0.2.0 - regjsparser: 0.1.5 - - regjsgen@0.2.0: {} - - regjsparser@0.1.5: - dependencies: - jsesc: 0.5.0 - - repeat-element@1.1.4: {} - - repeat-string@1.6.1: {} - - repeating@2.0.1: - dependencies: - is-finite: 1.1.0 - - req-cwd@2.0.0: - dependencies: - req-from: 2.0.0 - - req-from@2.0.0: - dependencies: - resolve-from: 3.0.0 - - request@2.88.2: - dependencies: - aws-sign2: 0.7.0 - aws4: 1.12.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - - require-directory@2.1.1: {} - - require-from-string@1.2.1: {} - - require-from-string@2.0.2: {} - - require-main-filename@1.0.1: {} - - require-main-filename@2.0.0: {} - - resolve-alpn@1.2.1: {} - - resolve-from@3.0.0: {} - - resolve-from@4.0.0: {} - - resolve-url@0.2.1: {} - - resolve@1.1.7: {} - - resolve@1.17.0: - dependencies: - path-parse: 1.0.7 - - resolve@1.22.8: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - responselike@1.0.2: - dependencies: - lowercase-keys: 1.0.1 - optional: true - - responselike@2.0.1: - dependencies: - lowercase-keys: 2.0.0 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - ret@0.1.15: {} - - reusify@1.0.4: {} - - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - ripemd160-min@0.0.6: {} - - ripemd160@2.0.2: - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - - rlp@2.2.7: - dependencies: - bn.js: 5.2.1 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - rust-verkle-wasm@0.0.1: {} - - rustbn-wasm@0.2.0: - dependencies: - '@scure/base': 1.1.5 - - rustbn.js@0.2.0: {} - - safe-array-concat@1.1.0: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safe-event-emitter@1.0.1: - dependencies: - events: 3.3.0 - - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - - safe-regex@1.1.0: - dependencies: - ret: 0.1.15 - - safer-buffer@2.1.2: {} - - sc-istanbul@0.4.6: - dependencies: - abbrev: 1.0.9 - async: 1.5.2 - escodegen: 1.8.1 - esprima: 2.7.3 - glob: 5.0.15 - handlebars: 4.7.8 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - nopt: 3.0.6 - once: 1.4.0 - resolve: 1.1.7 - supports-color: 3.2.3 - which: 1.3.1 - wordwrap: 1.0.0 - - scrypt-js@2.0.4: {} - - scrypt-js@3.0.1: {} - - scrypt@https://codeload.github.com/barrysteyn/node-scrypt/tar.gz/fb60a8d3c158fe115a624b5ffa7480f3a24b03fb: - dependencies: - nan: 2.18.0 - - scryptsy@1.2.1: - dependencies: - pbkdf2: 3.1.2 - optional: true - - secp256k1@4.0.3: - dependencies: - elliptic: 6.5.4 - node-addon-api: 2.0.2 - node-gyp-build: 4.8.0 - - seedrandom@3.0.1: {} - - semaphore@1.1.0: {} - - semver@5.4.1: {} - - semver@5.7.2: {} - - semver@6.3.1: {} - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - send@0.18.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - sentence-case@2.1.1: - dependencies: - no-case: 2.3.2 - upper-case-first: 1.1.2 - - serialize-javascript@6.0.0: - dependencies: - randombytes: 2.1.0 - - serve-static@1.15.0: - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - - servify@0.1.12: - dependencies: - body-parser: 1.20.2 - cors: 2.8.5 - express: 4.18.2 - request: 2.88.2 - xhr: 2.6.0 - transitivePeerDependencies: - - supports-color - - set-blocking@2.0.0: {} - - set-function-length@1.2.1: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-immediate-shim@1.0.1: {} - - set-value@2.0.1: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - - setimmediate@1.0.4: {} - - setimmediate@1.0.5: {} - - setprototypeof@1.2.0: {} - - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - sha1@1.1.1: - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - - sha3@2.1.4: - dependencies: - buffer: 6.0.3 - - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@1.0.0: {} - - shebang-regex@3.0.0: {} - - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - side-channel@1.0.5: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - - signal-exit@3.0.7: {} - - simple-concat@1.0.1: {} - - simple-get@2.8.2: - dependencies: - decompress-response: 3.3.0 - once: 1.4.0 - simple-concat: 1.0.1 - - slash@1.0.0: {} - - slash@2.0.0: {} - - slash@3.0.0: {} - - slice-ansi@4.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - - snake-case@2.1.0: - dependencies: - no-case: 2.3.2 - - snapdragon-node@2.1.1: - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - - snapdragon-util@3.0.1: - dependencies: - kind-of: 3.2.2 - - snapdragon@0.8.2: - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - - solc@0.4.26: - dependencies: - fs-extra: 0.30.0 - memorystream: 0.3.1 - require-from-string: 1.2.1 - semver: 5.7.2 - yargs: 4.8.1 - - solc@0.6.12: - dependencies: - command-exists: 1.2.9 - commander: 3.0.2 - fs-extra: 0.30.0 - js-sha3: 0.8.0 - memorystream: 0.3.1 - require-from-string: 2.0.2 - semver: 5.7.2 - tmp: 0.0.33 - - solc@0.7.3(debug@4.3.4): - dependencies: - command-exists: 1.2.9 - commander: 3.0.2 - follow-redirects: 1.15.5(debug@4.3.4) - fs-extra: 0.30.0 - js-sha3: 0.8.0 - memorystream: 0.3.1 - require-from-string: 2.0.2 - semver: 5.7.2 - tmp: 0.0.33 - transitivePeerDependencies: - - debug - - solhint@3.4.1(typescript@4.7.4): - dependencies: - '@solidity-parser/parser': 0.16.2 - ajv: 6.12.6 - antlr4: 4.13.1 - ast-parents: 0.0.1 - chalk: 4.1.2 - commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@4.7.4) - fast-diff: 1.3.0 - glob: 8.1.0 - ignore: 5.3.1 - js-yaml: 4.1.0 - lodash: 4.17.21 - pluralize: 8.0.0 - semver: 6.3.1 - strip-ansi: 6.0.1 - table: 6.8.1 - text-table: 0.2.0 - optionalDependencies: - prettier: 2.8.8 - transitivePeerDependencies: - - typescript - - solidity-coverage@0.8.3(hardhat@2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10)): - dependencies: - '@ethersproject/abi': 5.7.0 - '@solidity-parser/parser': 0.14.5 - chalk: 2.4.2 - death: 1.1.0 - detect-port: 1.5.1 - difflib: 0.2.4 - fs-extra: 8.1.0 - ghost-testrpc: 0.0.2 - global-modules: 2.0.0 - globby: 10.0.2 - hardhat: 2.20.1(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4))(typescript@4.7.4)(utf-8-validate@5.0.10) - jsonschema: 1.4.1 - lodash: 4.17.21 - mocha: 7.1.2 - node-emoji: 1.11.0 - pify: 4.0.1 - recursive-readdir: 2.2.3 - sc-istanbul: 0.4.6 - semver: 7.6.0 - shelljs: 0.8.5 - web3-utils: 1.10.4 - transitivePeerDependencies: - - supports-color - - source-map-resolve@0.5.3: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - - source-map-support@0.4.18: - dependencies: - source-map: 0.5.7 - - source-map-support@0.5.12: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map-url@0.4.1: {} - - source-map@0.2.0: - dependencies: - amdefine: 1.0.1 - optional: true - - source-map@0.5.7: {} - - source-map@0.6.1: {} - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 - - spdx-license-ids@3.0.17: {} - - split-string@3.1.0: - dependencies: - extend-shallow: 3.0.2 - - sprintf-js@1.0.3: {} - - sshpk@1.18.0: - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - - stacktrace-parser@0.1.10: - dependencies: - type-fest: 0.7.1 - - static-extend@0.1.2: - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - - statuses@2.0.1: {} - - stream-to-pull-stream@1.7.3: - dependencies: - looper: 3.0.0 - pull-stream: 3.7.0 - - strict-uri-encode@1.1.0: {} - - string-format@2.0.0: {} - - string-width@1.0.2: - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - - string-width@2.1.1: - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 - - string-width@3.1.0: - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string.prototype.trim@1.2.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - - string.prototype.trimend@1.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - - string.prototype.trimstart@1.0.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - - string_decoder@0.10.31: {} - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - - strip-ansi@4.0.0: - dependencies: - ansi-regex: 3.0.1 - - strip-ansi@5.2.0: - dependencies: - ansi-regex: 4.1.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-bom@2.0.0: - dependencies: - is-utf8: 0.2.1 - - strip-bom@3.0.0: {} - - strip-hex-prefix@1.0.0: - dependencies: - is-hex-prefixed: 1.0.0 - - strip-indent@2.0.0: {} - - strip-json-comments@2.0.1: {} - - strip-json-comments@3.1.1: {} - - supports-color@2.0.0: {} - - supports-color@3.2.3: - dependencies: - has-flag: 1.0.0 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@6.0.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - swap-case@1.1.2: - dependencies: - lower-case: 1.1.4 - upper-case: 1.1.3 - - swarm-js@0.1.42(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - bluebird: 3.7.2 - buffer: 5.7.1 - eth-lib: 0.1.29(bufferutil@4.0.8)(utf-8-validate@5.0.10) - fs-extra: 4.0.3 - got: 11.8.6 - mime-types: 2.1.35 - mkdirp-promise: 5.0.1 - mock-fs: 4.14.0 - setimmediate: 1.0.5 - tar: 4.4.19 - xhr-request: 1.1.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - sync-request@6.1.0: - dependencies: - http-response-object: 3.0.2 - sync-rpc: 1.3.6 - then-request: 6.0.2 - - sync-rpc@1.3.6: - dependencies: - get-port: 3.2.0 - - table-layout@1.0.2: - dependencies: - array-back: 4.0.2 - deep-extend: 0.6.0 - typical: 5.2.0 - wordwrapjs: 4.0.1 - - table@6.8.1: - dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - tape@4.17.0: - dependencies: - '@ljharb/resumer': 0.0.1 - '@ljharb/through': 2.3.12 - call-bind: 1.0.7 - deep-equal: 1.1.2 - defined: 1.0.1 - dotignore: 0.1.2 - for-each: 0.3.3 - glob: 7.2.3 - has: 1.0.4 - inherits: 2.0.4 - is-regex: 1.1.4 - minimist: 1.2.8 - mock-property: 1.0.3 - object-inspect: 1.12.3 - resolve: 1.22.8 - string.prototype.trim: 1.2.8 - - tar@4.4.19: - dependencies: - chownr: 1.1.4 - fs-minipass: 1.2.7 - minipass: 2.9.0 - minizlib: 1.3.3 - mkdirp: 0.5.6 - safe-buffer: 5.2.1 - yallist: 3.1.1 - - test-value@2.1.0: - dependencies: - array-back: 1.0.4 - typical: 2.6.1 - - testrpc@0.0.1: {} - - text-table@0.2.0: {} - - then-request@6.0.2: - dependencies: - '@types/concat-stream': 1.6.1 - '@types/form-data': 0.0.33 - '@types/node': 8.10.66 - '@types/qs': 6.9.11 - caseless: 0.12.0 - concat-stream: 1.6.2 - form-data: 2.5.1 - http-basic: 8.1.3 - http-response-object: 3.0.2 - promise: 8.3.0 - qs: 6.11.2 - - threads@1.7.0: - dependencies: - callsites: 3.1.0 - debug: 4.3.4(supports-color@8.1.1) - is-observable: 2.1.0 - observable-fns: 0.6.1 - optionalDependencies: - tiny-worker: 2.3.0 - transitivePeerDependencies: - - supports-color - - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - - timed-out@4.0.1: {} - - tiny-worker@2.3.0: - dependencies: - esm: 3.2.25 - optional: true - - title-case@2.1.1: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - tmp@0.1.0: - dependencies: - rimraf: 2.7.1 - - to-fast-properties@1.0.3: {} - - to-object-path@0.3.0: - dependencies: - kind-of: 3.2.2 - - to-readable-stream@1.0.0: - optional: true - - to-regex-range@2.1.1: - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - to-regex@3.0.2: - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - - toidentifier@1.0.1: {} - - tough-cookie@2.5.0: - dependencies: - psl: 1.9.0 - punycode: 2.3.1 - - tr46@0.0.3: {} - - trim-right@1.0.1: {} - - ts-command-line-args@2.5.1: - dependencies: - chalk: 4.1.2 - command-line-args: 5.2.1 - command-line-usage: 6.1.3 - string-format: 2.0.0 - - ts-essentials@1.0.4: {} - - ts-essentials@6.0.7(typescript@4.7.4): - dependencies: - typescript: 4.7.4 - - ts-essentials@7.0.3(typescript@4.7.4): - dependencies: - typescript: 4.7.4 - - ts-generator@0.1.1: - dependencies: - '@types/mkdirp': 0.5.2 - '@types/prettier': 2.7.3 - '@types/resolve': 0.0.8 - chalk: 2.4.2 - glob: 7.2.3 - mkdirp: 0.5.6 - prettier: 2.8.8 - resolve: 1.22.8 - ts-essentials: 1.0.4 - - ts-node@10.9.1(@types/node@20.11.20)(typescript@4.7.4): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.20 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.7.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@1.14.1: {} - - tslib@2.4.0: {} - - tsort@0.0.1: {} - - tsutils@3.21.0(typescript@4.7.4): - dependencies: - tslib: 1.14.1 - typescript: 4.7.4 - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - - tweetnacl-util@0.15.1: {} - - tweetnacl@0.14.5: {} - - tweetnacl@1.0.3: {} - - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-fest@0.20.2: {} - - type-fest@0.21.3: {} - - type-fest@0.7.1: {} - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - type@1.2.0: {} - - type@2.7.2: {} - - typechain@3.0.0(typescript@4.7.4): - dependencies: - command-line-args: 4.0.7 - debug: 4.3.4(supports-color@8.1.1) - fs-extra: 7.0.1 - js-sha3: 0.8.0 - lodash: 4.17.21 - ts-essentials: 6.0.7(typescript@4.7.4) - ts-generator: 0.1.1 - transitivePeerDependencies: - - supports-color - - typescript - - typechain@8.3.2(typescript@4.7.4): - dependencies: - '@types/prettier': 2.7.3 - debug: 4.3.4(supports-color@8.1.1) - fs-extra: 7.0.1 - glob: 7.1.7 - js-sha3: 0.8.0 - lodash: 4.17.21 - mkdirp: 1.0.4 - prettier: 2.8.8 - ts-command-line-args: 2.5.1 - ts-essentials: 7.0.3(typescript@4.7.4) - typescript: 4.7.4 - transitivePeerDependencies: - - supports-color - - typed-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - - typed-array-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-byte-offset@1.0.2: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.5: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - - typedarray@0.0.6: {} - - typescript@4.7.4: {} - - typewise-core@1.2.0: {} - - typewise@1.0.3: - dependencies: - typewise-core: 1.2.0 - - typewiselite@1.0.0: {} - - typical@2.6.1: {} - - typical@4.0.0: {} - - typical@5.2.0: {} - - uglify-js@3.17.4: - optional: true - - ultron@1.1.1: {} - - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - - underscore@1.13.6: {} - - underscore@1.9.1: - optional: true - - undici-types@5.26.5: {} - - undici@5.28.3: - dependencies: - '@fastify/busboy': 2.1.0 - - union-value@1.0.1: - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - - universalify@0.1.2: {} - - universalify@2.0.1: {} - - unorm@1.6.0: {} - - unpipe@1.0.0: {} - - unset-value@1.0.0: - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - - upper-case-first@1.1.2: - dependencies: - upper-case: 1.1.3 - - upper-case@1.1.3: {} - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - urix@0.1.0: {} - - url-parse-lax@3.0.0: - dependencies: - prepend-http: 2.0.0 - optional: true - - url-set-query@1.0.0: {} - - url@0.11.3: - dependencies: - punycode: 1.4.1 - qs: 6.11.2 - - use@3.1.1: {} - - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.0 - - utf8@3.0.0: {} - - util-deprecate@1.0.2: {} - - util.promisify@1.1.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - for-each: 0.3.3 - has-proto: 1.0.3 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.7 - safe-array-concat: 1.1.0 - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.14 - - utils-merge@1.0.1: {} - - uuid@2.0.1: {} - - uuid@3.3.2: - optional: true - - uuid@3.4.0: {} - - uuid@8.3.2: {} - - uuid@9.0.1: {} - - v8-compile-cache-lib@3.0.1: {} - - v8-compile-cache@2.4.0: {} - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - varint@5.0.2: {} - - vary@1.1.2: {} - - verror@1.10.0: - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - web3-bzz@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/node': 12.20.55 - got: 12.1.0 - swarm-js: 0.1.42(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - web3-bzz@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/node': 12.20.55 - got: 12.1.0 - swarm-js: 0.1.42(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - web3-bzz@1.2.11(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/node': 12.20.55 - got: 9.6.0 - swarm-js: 0.1.42(bufferutil@4.0.8)(utf-8-validate@5.0.10) - underscore: 1.9.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - optional: true - - web3-core-helpers@1.10.0: - dependencies: - web3-eth-iban: 1.10.0 - web3-utils: 1.10.0 - - web3-core-helpers@1.10.4: - dependencies: - web3-eth-iban: 1.10.4 - web3-utils: 1.10.4 - - web3-core-helpers@1.2.11: - dependencies: - underscore: 1.9.1 - web3-eth-iban: 1.2.11 - web3-utils: 1.2.11 - optional: true - - web3-core-method@1.10.0: - dependencies: - '@ethersproject/transactions': 5.7.0 - web3-core-helpers: 1.10.0 - web3-core-promievent: 1.10.0 - web3-core-subscriptions: 1.10.0 - web3-utils: 1.10.0 - - web3-core-method@1.10.4: - dependencies: - '@ethersproject/transactions': 5.7.0 - web3-core-helpers: 1.10.4 - web3-core-promievent: 1.10.4 - web3-core-subscriptions: 1.10.4 - web3-utils: 1.10.4 - - web3-core-method@1.2.11: - dependencies: - '@ethersproject/transactions': 5.7.0 - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - web3-core-promievent: 1.2.11 - web3-core-subscriptions: 1.2.11 - web3-utils: 1.2.11 - optional: true - - web3-core-promievent@1.10.0: - dependencies: - eventemitter3: 4.0.4 - - web3-core-promievent@1.10.4: - dependencies: - eventemitter3: 4.0.4 - - web3-core-promievent@1.2.11: - dependencies: - eventemitter3: 4.0.4 - optional: true - - web3-core-requestmanager@1.10.0(encoding@0.1.13): - dependencies: - util: 0.12.5 - web3-core-helpers: 1.10.0 - web3-providers-http: 1.10.0(encoding@0.1.13) - web3-providers-ipc: 1.10.0 - web3-providers-ws: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - - web3-core-requestmanager@1.10.4(encoding@0.1.13): - dependencies: - util: 0.12.5 - web3-core-helpers: 1.10.4 - web3-providers-http: 1.10.4(encoding@0.1.13) - web3-providers-ipc: 1.10.4 - web3-providers-ws: 1.10.4 - transitivePeerDependencies: - - encoding - - supports-color - - web3-core-requestmanager@1.2.11: - dependencies: - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - web3-providers-http: 1.2.11 - web3-providers-ipc: 1.2.11 - web3-providers-ws: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-core-subscriptions@1.10.0: - dependencies: - eventemitter3: 4.0.4 - web3-core-helpers: 1.10.0 - - web3-core-subscriptions@1.10.4: - dependencies: - eventemitter3: 4.0.4 - web3-core-helpers: 1.10.4 - - web3-core-subscriptions@1.2.11: - dependencies: - eventemitter3: 4.0.4 - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - optional: true - - web3-core@1.10.0(encoding@0.1.13): - dependencies: - '@types/bn.js': 5.1.5 - '@types/node': 12.20.55 - bignumber.js: 9.1.2 - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-core-requestmanager: 1.10.0(encoding@0.1.13) - web3-utils: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - - web3-core@1.10.4(encoding@0.1.13): - dependencies: - '@types/bn.js': 5.1.5 - '@types/node': 12.20.55 - bignumber.js: 9.1.2 - web3-core-helpers: 1.10.4 - web3-core-method: 1.10.4 - web3-core-requestmanager: 1.10.4(encoding@0.1.13) - web3-utils: 1.10.4 - transitivePeerDependencies: - - encoding - - supports-color - - web3-core@1.2.11: - dependencies: - '@types/bn.js': 4.11.6 - '@types/node': 12.20.55 - bignumber.js: 9.1.2 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-core-requestmanager: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-eth-abi@1.10.0: - dependencies: - '@ethersproject/abi': 5.7.0 - web3-utils: 1.10.0 - - web3-eth-abi@1.10.4: - dependencies: - '@ethersproject/abi': 5.7.0 - web3-utils: 1.10.4 - - web3-eth-abi@1.2.11: - dependencies: - '@ethersproject/abi': 5.0.0-beta.153 - underscore: 1.9.1 - web3-utils: 1.2.11 - optional: true - - web3-eth-accounts@1.10.0(encoding@0.1.13): - dependencies: - '@ethereumjs/common': 2.5.0 - '@ethereumjs/tx': 3.3.2 - eth-lib: 0.2.8 - ethereumjs-util: 7.1.5 - scrypt-js: 3.0.1 - uuid: 9.0.1 - web3-core: 1.10.0(encoding@0.1.13) - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-utils: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth-accounts@1.10.4(encoding@0.1.13): - dependencies: - '@ethereumjs/common': 2.6.5 - '@ethereumjs/tx': 3.5.2 - '@ethereumjs/util': 8.1.0 - eth-lib: 0.2.8 - scrypt-js: 3.0.1 - uuid: 9.0.1 - web3-core: 1.10.4(encoding@0.1.13) - web3-core-helpers: 1.10.4 - web3-core-method: 1.10.4 - web3-utils: 1.10.4 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth-accounts@1.2.11: - dependencies: - crypto-browserify: 3.12.0 - eth-lib: 0.2.8 - ethereumjs-common: 1.5.0 - ethereumjs-tx: 2.1.2 - scrypt-js: 3.0.1 - underscore: 1.9.1 - uuid: 3.3.2 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-eth-contract@1.10.0(encoding@0.1.13): - dependencies: - '@types/bn.js': 5.1.5 - web3-core: 1.10.0(encoding@0.1.13) - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-core-promievent: 1.10.0 - web3-core-subscriptions: 1.10.0 - web3-eth-abi: 1.10.0 - web3-utils: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth-contract@1.10.4(encoding@0.1.13): - dependencies: - '@types/bn.js': 5.1.5 - web3-core: 1.10.4(encoding@0.1.13) - web3-core-helpers: 1.10.4 - web3-core-method: 1.10.4 - web3-core-promievent: 1.10.4 - web3-core-subscriptions: 1.10.4 - web3-eth-abi: 1.10.4 - web3-utils: 1.10.4 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth-contract@1.2.11: - dependencies: - '@types/bn.js': 4.11.6 - underscore: 1.9.1 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-core-promievent: 1.2.11 - web3-core-subscriptions: 1.2.11 - web3-eth-abi: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-eth-ens@1.10.0(encoding@0.1.13): - dependencies: - content-hash: 2.5.2 - eth-ens-namehash: 2.0.8 - web3-core: 1.10.0(encoding@0.1.13) - web3-core-helpers: 1.10.0 - web3-core-promievent: 1.10.0 - web3-eth-abi: 1.10.0 - web3-eth-contract: 1.10.0(encoding@0.1.13) - web3-utils: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth-ens@1.10.4(encoding@0.1.13): - dependencies: - content-hash: 2.5.2 - eth-ens-namehash: 2.0.8 - web3-core: 1.10.4(encoding@0.1.13) - web3-core-helpers: 1.10.4 - web3-core-promievent: 1.10.4 - web3-eth-abi: 1.10.4 - web3-eth-contract: 1.10.4(encoding@0.1.13) - web3-utils: 1.10.4 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth-ens@1.2.11: - dependencies: - content-hash: 2.5.2 - eth-ens-namehash: 2.0.8 - underscore: 1.9.1 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-promievent: 1.2.11 - web3-eth-abi: 1.2.11 - web3-eth-contract: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-eth-iban@1.10.0: - dependencies: - bn.js: 5.2.1 - web3-utils: 1.10.0 - - web3-eth-iban@1.10.4: - dependencies: - bn.js: 5.2.1 - web3-utils: 1.10.4 - - web3-eth-iban@1.2.11: - dependencies: - bn.js: 4.12.0 - web3-utils: 1.2.11 - optional: true - - web3-eth-personal@1.10.0(encoding@0.1.13): - dependencies: - '@types/node': 12.20.55 - web3-core: 1.10.0(encoding@0.1.13) - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-net: 1.10.0(encoding@0.1.13) - web3-utils: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth-personal@1.10.4(encoding@0.1.13): - dependencies: - '@types/node': 12.20.55 - web3-core: 1.10.4(encoding@0.1.13) - web3-core-helpers: 1.10.4 - web3-core-method: 1.10.4 - web3-net: 1.10.4(encoding@0.1.13) - web3-utils: 1.10.4 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth-personal@1.2.11: - dependencies: - '@types/node': 12.20.55 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-net: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-eth@1.10.0(encoding@0.1.13): - dependencies: - web3-core: 1.10.0(encoding@0.1.13) - web3-core-helpers: 1.10.0 - web3-core-method: 1.10.0 - web3-core-subscriptions: 1.10.0 - web3-eth-abi: 1.10.0 - web3-eth-accounts: 1.10.0(encoding@0.1.13) - web3-eth-contract: 1.10.0(encoding@0.1.13) - web3-eth-ens: 1.10.0(encoding@0.1.13) - web3-eth-iban: 1.10.0 - web3-eth-personal: 1.10.0(encoding@0.1.13) - web3-net: 1.10.0(encoding@0.1.13) - web3-utils: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth@1.10.4(encoding@0.1.13): - dependencies: - web3-core: 1.10.4(encoding@0.1.13) - web3-core-helpers: 1.10.4 - web3-core-method: 1.10.4 - web3-core-subscriptions: 1.10.4 - web3-eth-abi: 1.10.4 - web3-eth-accounts: 1.10.4(encoding@0.1.13) - web3-eth-contract: 1.10.4(encoding@0.1.13) - web3-eth-ens: 1.10.4(encoding@0.1.13) - web3-eth-iban: 1.10.4 - web3-eth-personal: 1.10.4(encoding@0.1.13) - web3-net: 1.10.4(encoding@0.1.13) - web3-utils: 1.10.4 - transitivePeerDependencies: - - encoding - - supports-color - - web3-eth@1.2.11: - dependencies: - underscore: 1.9.1 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-core-subscriptions: 1.2.11 - web3-eth-abi: 1.2.11 - web3-eth-accounts: 1.2.11 - web3-eth-contract: 1.2.11 - web3-eth-ens: 1.2.11 - web3-eth-iban: 1.2.11 - web3-eth-personal: 1.2.11 - web3-net: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-net@1.10.0(encoding@0.1.13): - dependencies: - web3-core: 1.10.0(encoding@0.1.13) - web3-core-method: 1.10.0 - web3-utils: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - - web3-net@1.10.4(encoding@0.1.13): - dependencies: - web3-core: 1.10.4(encoding@0.1.13) - web3-core-method: 1.10.4 - web3-utils: 1.10.4 - transitivePeerDependencies: - - encoding - - supports-color - - web3-net@1.2.11: - dependencies: - web3-core: 1.2.11 - web3-core-method: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-provider-engine@14.2.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): - dependencies: - async: 2.6.2 - backoff: 2.5.0 - clone: 2.1.2 - cross-fetch: 2.2.6(encoding@0.1.13) - eth-block-tracker: 3.0.1 - eth-json-rpc-infura: 3.2.1(encoding@0.1.13) - eth-sig-util: 1.4.2 - ethereumjs-block: 1.7.1 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - ethereumjs-vm: 2.6.0 - json-rpc-error: 2.0.0 - json-stable-stringify: 1.1.1 - promise-to-callback: 1.0.0 - readable-stream: 2.3.8 - request: 2.88.2 - semaphore: 1.1.0 - ws: 5.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - xhr: 2.6.0 - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - web3-providers-http@1.10.0(encoding@0.1.13): - dependencies: - abortcontroller-polyfill: 1.7.5 - cross-fetch: 3.1.8(encoding@0.1.13) - es6-promise: 4.2.8 - web3-core-helpers: 1.10.0 - transitivePeerDependencies: - - encoding - - web3-providers-http@1.10.4(encoding@0.1.13): - dependencies: - abortcontroller-polyfill: 1.7.5 - cross-fetch: 4.0.0(encoding@0.1.13) - es6-promise: 4.2.8 - web3-core-helpers: 1.10.4 - transitivePeerDependencies: - - encoding - - web3-providers-http@1.2.11: - dependencies: - web3-core-helpers: 1.2.11 - xhr2-cookies: 1.1.0 - optional: true - - web3-providers-ipc@1.10.0: - dependencies: - oboe: 2.1.5 - web3-core-helpers: 1.10.0 - - web3-providers-ipc@1.10.4: - dependencies: - oboe: 2.1.5 - web3-core-helpers: 1.10.4 - - web3-providers-ipc@1.2.11: - dependencies: - oboe: 2.1.4 - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - optional: true - - web3-providers-ws@1.10.0: - dependencies: - eventemitter3: 4.0.4 - web3-core-helpers: 1.10.0 - websocket: 1.0.34 - transitivePeerDependencies: - - supports-color - - web3-providers-ws@1.10.4: - dependencies: - eventemitter3: 4.0.4 - web3-core-helpers: 1.10.4 - websocket: 1.0.34 - transitivePeerDependencies: - - supports-color - - web3-providers-ws@1.2.11: - dependencies: - eventemitter3: 4.0.4 - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - websocket: 1.0.32 - transitivePeerDependencies: - - supports-color - optional: true - - web3-shh@1.10.0(encoding@0.1.13): - dependencies: - web3-core: 1.10.0(encoding@0.1.13) - web3-core-method: 1.10.0 - web3-core-subscriptions: 1.10.0 - web3-net: 1.10.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - web3-shh@1.10.4(encoding@0.1.13): - dependencies: - web3-core: 1.10.4(encoding@0.1.13) - web3-core-method: 1.10.4 - web3-core-subscriptions: 1.10.4 - web3-net: 1.10.4(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - supports-color - - web3-shh@1.2.11: - dependencies: - web3-core: 1.2.11 - web3-core-method: 1.2.11 - web3-core-subscriptions: 1.2.11 - web3-net: 1.2.11 - transitivePeerDependencies: - - supports-color - optional: true - - web3-utils@1.10.0: - dependencies: - bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 - ethereumjs-util: 7.1.5 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - utf8: 3.0.0 - - web3-utils@1.10.4: - dependencies: - '@ethereumjs/util': 8.1.0 - bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 - ethereum-cryptography: 2.1.3 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - utf8: 3.0.0 - - web3-utils@1.2.11: - dependencies: - bn.js: 4.12.0 - eth-lib: 0.2.8 - ethereum-bloom-filters: 1.0.10 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - underscore: 1.9.1 - utf8: 3.0.0 - optional: true - - web3@1.10.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): - dependencies: - web3-bzz: 1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - web3-core: 1.10.0(encoding@0.1.13) - web3-eth: 1.10.0(encoding@0.1.13) - web3-eth-personal: 1.10.0(encoding@0.1.13) - web3-net: 1.10.0(encoding@0.1.13) - web3-shh: 1.10.0(encoding@0.1.13) - web3-utils: 1.10.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10): - dependencies: - web3-bzz: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - web3-core: 1.10.4(encoding@0.1.13) - web3-eth: 1.10.4(encoding@0.1.13) - web3-eth-personal: 1.10.4(encoding@0.1.13) - web3-net: 1.10.4(encoding@0.1.13) - web3-shh: 1.10.4(encoding@0.1.13) - web3-utils: 1.10.4 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - web3@1.2.11(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - web3-bzz: 1.2.11(bufferutil@4.0.8)(utf-8-validate@5.0.10) - web3-core: 1.2.11 - web3-eth: 1.2.11 - web3-eth-personal: 1.2.11 - web3-net: 1.2.11 - web3-shh: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - optional: true - - webidl-conversions@3.0.1: {} - - websocket@1.0.32: - dependencies: - bufferutil: 4.0.8 - debug: 2.6.9 - es5-ext: 0.10.63 - typedarray-to-buffer: 3.1.5 - utf-8-validate: 5.0.10 - yaeti: 0.0.6 - transitivePeerDependencies: - - supports-color - - websocket@1.0.34: - dependencies: - bufferutil: 4.0.8 - debug: 2.6.9 - es5-ext: 0.10.63 - typedarray-to-buffer: 3.1.5 - utf-8-validate: 5.0.10 - yaeti: 0.0.6 - transitivePeerDependencies: - - supports-color - - whatwg-fetch@2.0.4: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-module@1.0.0: {} - - which-module@2.0.1: {} - - which-typed-array@1.1.14: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wide-align@1.1.3: - dependencies: - string-width: 2.1.1 - - widest-line@3.1.0: - dependencies: - string-width: 4.2.3 - - window-size@0.2.0: {} - - word-wrap@1.2.5: {} - - wordwrap@1.0.0: {} - - wordwrapjs@4.0.1: - dependencies: - reduce-flatten: 2.0.0 - typical: 5.2.0 - - workerpool@6.2.1: {} - - wrap-ansi@2.1.0: - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - - wrap-ansi@5.1.0: - dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@3.3.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - async-limiter: 1.0.1 - safe-buffer: 5.1.2 - ultron: 1.1.1 - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@5.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - async-limiter: 1.0.1 - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - xhr-request-promise@0.1.3: - dependencies: - xhr-request: 1.1.0 - - xhr-request@1.1.0: - dependencies: - buffer-to-arraybuffer: 0.0.5 - object-assign: 4.1.1 - query-string: 5.1.1 - simple-get: 2.8.2 - timed-out: 4.0.1 - url-set-query: 1.0.0 - xhr: 2.6.0 - - xhr2-cookies@1.1.0: - dependencies: - cookiejar: 2.1.4 - optional: true - - xhr@2.6.0: - dependencies: - global: 4.4.0 - is-function: 1.0.2 - parse-headers: 2.0.5 - xtend: 4.0.2 - - xmlhttprequest@1.8.0: {} - - xtend@2.1.2: - dependencies: - object-keys: 0.4.0 - - xtend@4.0.2: {} - - y18n@3.2.2: {} - - y18n@4.0.3: {} - - y18n@5.0.8: {} - - yaeti@0.0.6: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@1.10.2: {} - - yargs-parser@13.1.2: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - - yargs-parser@2.4.1: - dependencies: - camelcase: 3.0.0 - lodash.assign: 4.2.0 - - yargs-parser@20.2.4: {} - - yargs-unparser@1.6.0: - dependencies: - flat: 4.1.1 - lodash: 4.17.21 - yargs: 13.3.2 - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@13.3.2: - dependencies: - cliui: 5.0.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 13.1.2 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.1.2 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - - yargs@4.8.1: - dependencies: - cliui: 3.2.0 - decamelize: 1.2.0 - get-caller-file: 1.0.3 - lodash.assign: 4.2.0 - os-locale: 1.4.0 - read-pkg-up: 1.0.1 - require-directory: 2.1.1 - require-main-filename: 1.0.1 - set-blocking: 2.0.0 - string-width: 1.0.2 - which-module: 1.0.0 - window-size: 0.2.0 - y18n: 3.2.2 - yargs-parser: 2.4.1 - - yesno@0.3.1: {} - - yn@3.1.1: {} - - yocto-queue@0.1.0: {} diff --git a/packages/wallet-contracts/remappings.txt b/packages/wallet-contracts/remappings.txt deleted file mode 100644 index a1103484db..0000000000 --- a/packages/wallet-contracts/remappings.txt +++ /dev/null @@ -1,3 +0,0 @@ -ds-test/=lib/forge-std/lib/ds-test/src/ -forge-std-1.11.0/=dependencies/forge-std-1.11.0/ -forge-std/=lib/forge-std/src/ diff --git a/packages/wallet-contracts/run_huff_tests.sh b/packages/wallet-contracts/run_huff_tests.sh deleted file mode 100644 index 53576a9d78..0000000000 --- a/packages/wallet-contracts/run_huff_tests.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -for file in $(find ./src -type f -name '*.huff'); do - echo "Testing $file..." - output=$(huffc "$file" test 2>&1) - echo "$output" - - # Check for the presence of [FAIL] that is not part of another word like [PASS] - if echo "$output" | grep -E 'FAIL' > /dev/null; then - echo "Failure detected in $file" - exit 255 - else - echo "Processed $file successfully" - fi -done - -echo "All tests completed" \ No newline at end of file diff --git a/packages/wallet-contracts/soldeer.lock b/packages/wallet-contracts/soldeer.lock deleted file mode 100644 index 2072d0284f..0000000000 --- a/packages/wallet-contracts/soldeer.lock +++ /dev/null @@ -1,6 +0,0 @@ -[[dependencies]] -name = "forge-std" -version = "1.11.0" -url = "https://soldeer-revisions.s3.amazonaws.com/forge-std/1_11_0_09-10-2025_06:23:22_forge-std-1.11.zip" -checksum = "0290ef84c693dc9086f98f6a9b4a69dc5c2b6aa1cfe10a989bd1def1a456c099" -integrity = "84aa7d32f8c7329468cf16f31f0f74e68072e634fdbde98f3bb00c6b136103b2" diff --git a/packages/wallet-contracts/src/Errors.huff b/packages/wallet-contracts/src/Errors.huff deleted file mode 100644 index fbc60a09f6..0000000000 --- a/packages/wallet-contracts/src/Errors.huff +++ /dev/null @@ -1,158 +0,0 @@ -/// @title Errors -/// @notice SPDX-License-Identifier: MIT -/// @author jtriley.eth -/// @author clabby -/// @notice Custom error utilities. - -// https://docs.soliditylang.org/en/latest/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require - -// Errors -#define error Error(string) -#define error Panic(uint256) - -// Constants -// Solidity Panic Codes -#define constant COMPILER_PANIC = 0x00 -#define constant ASSERT_FALSE = 0x01 -#define constant ARITHMETIC_OVERFLOW = 0x11 -#define constant DIVIDE_BY_ZERO = 0x12 -#define constant INVALID_ENUM_VALUE = 0x21 -#define constant INVALID_STORAGE_BYTE_ARRAY = 0x22 -#define constant EMPTY_ARRAY_POP = 0x31 -#define constant ARRAY_OUT_OF_BOUNDS = 0x32 -#define constant MEMORY_TOO_LARGE = 0x41 -#define constant UNINITIALIZED_FUNCTION_POINTER = 0x51 - -/* - -Solidity Require. Error `string` MUST be no greater than 32 bytes. - -MEMORY LAYOUT WHEN THROWN -| sig || message offset || message length || message "revert" | -0x08c379a 0000000000000000000000000000000000000000000000000000000000000020 0000000000000000000000000000000000000000000000000000000000000006 7265766572740000000000000000000000000000000000000000000000000000 - -*/ -#define macro REQUIRE() = takes (3) returns (0) { - // takes: // [condition, message_length, message] - do_not_throw // [do_not_throw_jumpdest, condition, message_length, message] - jumpi // [message_length, message] - __ERROR(Error) // [error_sig, , message_length, message] - 0x00 // [mem_ptr, error_sig, message_length, message] - mstore // [message_length, message] - 0x20 // [message_offset, message_length, message] - 0x04 // [message_offset_ptr, message_offset, message_length, message] - mstore // [message_length, message] - 0x24 // [message_length_ptr, message_length, message] - mstore // [message] - 0x44 // [message_ptr, message] - mstore // [] - 0x80 // [size] - 0x00 // [offset, size] - revert // [] - do_not_throw: // [message_length, message] - pop // [message] - pop // [] -} - -/* - -Solidity Panic. - -MEMORY LAYOUT WHEN THROWN -| sig || panic code | -0x4e487b71 0000000000000000000000000000000000000000000000000000000000000001 - -*/ -#define macro PANIC() = takes (1) returns (0) { - // takes: // [panic_code] - __ERROR(Panic) // [panic_sig, panic_code] - 0x00 // [panic_sig_offset, panic_sig, panic_code] - mstore // [panic_code] - 0x04 // [panic_code_offset, panic_code] - mstore // [] - 0x24 // [revert_size] - 0x00 // [revert_offset, revert_size] - revert // [] -} - -/* -Solidity Assert. - -MEMORY LAYOUT WHEN THROWN -| sig || assert failed panic code | -0x4e487b71 0000000000000000000000000000000000000000000000000000000000000001 - -*/ -#define macro ASSERT() = takes (1) returns (0) { - // takes: // [condition] - do_not_panic // [do_not_panic_jumpdest, condition] - jumpi // [] - [ASSERT_FALSE] // [assert_false] - PANIC() // [] - do_not_panic: // [] -} - -// Assert that two stack elements are equal -#define macro ASSERT_EQ() = { - // takes: [a, b] - eq // [a == b] - ASSERT() // [] -} - -// Assert that two stack elements are not equal -#define macro ASSERT_NOT_EQ() = { - // takes: [a, b] - eq iszero // [a != b] - ASSERT() // [] -} - -// Assert that two memory offsets contain equal words -#define macro ASSERT_MEM_EQ(ptr_a, ptr_b) = { - // takes: [] - mload // [b] - mload // [a, b] - eq // [a == b] - ASSERT() // [] -} - -// Assert that two memory offsets do not contain equal words -#define macro ASSERT_MEM_NOT_EQ(ptr_a, ptr_b) = { - // takes: [] - mload // [b] - mload // [a, b] - eq iszero // [a != b] - ASSERT() // [] -} - -// Assert that two storage slots contain equal words -#define macro ASSERT_STORAGE_EQ(slot_a, slot_b) = { - // takes: [] - sload // [b] - sload // [a, b] - eq // [a == b] - ASSERT() // [] -} - -// Assert that two storage slots do not contain equal words -#define macro ASSERT_STORAGE_NOT_EQ(slot_a, slot_b) = { - // takes: [] - sload // [b] - sload // [a, b] - eq iszero // [a != b] - ASSERT() // [] -} - -/* Bubbles up revert data if call failed. Call directly after `call`, `staticcall`, `delegatecall`. */ -#define macro BUBBLE_UP_IF_FAILED() = takes (1) returns (0) { - // takes: // [call_succeeded] - call_succeeded // [call_succeeded_jumpdest, call_succeeded] - jumpi // [] - returndatasize // [returndatasize] - 0x00 // [memory_offset, returndatasize] - returndatasize // [returndatasize, memory_offset, returndatasize] - dup2 // [returndata_offset, returndatasize, memory_offset, returndatasize] - dup3 // [memory_offset, returndata_offset, returndatasize, memory_offset, returndatasize] - returndatacopy // [memory_offset, returndatasize] - revert // [] - call_succeeded: -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/L2Compressor.huff b/packages/wallet-contracts/src/L2Compressor.huff deleted file mode 100644 index b5bb044353..0000000000 --- a/packages/wallet-contracts/src/L2Compressor.huff +++ /dev/null @@ -1,140 +0,0 @@ -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/L2CompressorLib.huff b/packages/wallet-contracts/src/L2CompressorLib.huff deleted file mode 100644 index a5e91956f9..0000000000 --- a/packages/wallet-contracts/src/L2CompressorLib.huff +++ /dev/null @@ -1,2562 +0,0 @@ -#include "./Errors.huff" - -#define constant ADDR_BYTES_STORAGE = 0x00 -#define constant FMS = 0xa0 - -#define constant FLAG_READ_BYTES32_2_BYTES = 0x27 -#define constant FLAG_READ_ADDRESS_2_BYTES = 0x23 - -#define constant BYTES32_SMV = 0x80 -#define constant ADDRESS_SMV = 0x01 - -#define macro PERFORM_READ_SLOTS() = takes (0) returns (1) { - // input stack: [] - - 0x01 // [0x01] - dup1 // [rindex, 0x01] - callvalue // [windex, rindex, 0x01] - - read_another: - dup2 // [rindex, windex, rindex] - calldataload // [data[rindex], windex, rindex] - sload // [sload[data[rindex]], windex, rindex] - dup2 // [windex, sload[data[rindex]], windex, rindex] - mstore // [windex, rindex] - - 0x20 // [0x20, windex, rindex] - swap2 // [rindex, windex, 0x20] - dup3 // [0x20, rindex, windex, 0x20] - add // [(0x20 + rindex), windex, 0x20] - swap2 // [0x20, windex, (0x20 + rindex)] - add // [(0x20 + windex), (0x20 + rindex)] - - calldatasize // [size, (0x20 + windex), (0x20 + rindex)] - dup3 // [(0x20 + rindex), size, (0x20 + windex), (0x20 + rindex)] - lt // [((0x20 + rindex) < size), (0x20 + windex), (0x20 + rindex)] - read_another jumpi // [windex, rindex] - - pop // [rindex, 0x01] - sub // [(rindex - 0x01)] - - // output stack: [size] -} - -#define macro PERFORM_READ_SIZES() = takes (0) returns (0) { - - callvalue // [0x00] - sload // [sload[0x00]] - callvalue // [value, sload[0x00]] - mstore // [] - -} - -#define macro PERFORM_READ_ADDRESS() = takes (0) returns (0) { - - 0x01 // [0x01] - calldataload // [data[0x01]] - - [ADDRESS_SMV] // [ADDRESS_SMV, data[0x00]] - add // [(ADDRESS_SMV + data[0x00])] - sload // [sload[(ADDRESS_SMV + data[0x00])]] - - callvalue // [0x00, sload[(ADDRESS_SMV + data[0x00])]] - mstore // [] - -} - -#define macro PERFORM_READ_BYTES32() = takes (0) returns (0) { - - 0x01 // [0x01] - calldataload // [data[0x01]] - - [BYTES32_SMV] // [BYTES32_SMV, data[0x00]] - shl // [(data[0x00] << BYTES32_SMV)] - sload // [sload[(data[0x00] << BYTES32_SMV)]] - - callvalue // [0x00, sload[(data[0x00] << BYTES32_SMV)]] - mstore // [] - -} - -#define macro PERFORM_MANY_EXECUTES(nrfs) = takes (1) returns (3) { - // input stack: [rindex] - - LOAD_1_BYTE() // [size, rindex] - callvalue // [i, size, rindex] - swap2 // [rindex, size, i] - - do_another: - PERFORM_EXECUTE() // [rindex, size, i] - swap2 // [i, size, rindex] - 0x01 // [0x01, i, size, rindex] - add // [(0x01 + i), size, rindex] - swap2 // [rindex, size, (0x01 + i)] - - dup2 // [size, rindex, size, (0x01 + i)] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i)] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i)] - do_another jumpi // [rindex, size, (0x01 + i)] - - // output stack: [rindex, size, i] -} - -#define macro PERFORM_EXECUTE(nrfs) = takes (1) returns (1) { - // input stack: [rindex] - - [FMS] // [windex, rindex] - READ_EXECUTE() // [windex, rindex] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - BACKREAD_SINGLE_VALUE() // [address, windex, rindex] - - swap1 // [windex, address, rindex] - [FMS] // [FMS, windex, address, rindex] - swap1 // [windex, FMS, address, rindex] - sub // [size, address, rindex] - - callvalue // [0x00, size, address, rindex] - swap1 // [size, 0x00, address, rindex] - [FMS] // [FMS, size, 0x00, address, rindex] - callvalue // [0x00, FMS, size, 0x00, address, rindex] - callvalue // [0x00, 0x00, FMS, size, 0x00, address, rindex] - swap5 // [address, 0x00, FMS, size, 0x00, 0x00, rindex] - gaslimit // [gasLimit, address, 0x00, FMS, size, 0x00, 0x00, rindex] - call // [success, rindex] - - // For now, pop seems safer, since it won't revert all transactions if this is a batch - // the only thing to consider is that this could difficult the gas calculation - pop // [rindex] - - // output stack: [rindex] -} - -#define macro ADDRESSES_NUM() = takes (0) returns (1) { - [ADDR_BYTES_STORAGE] sload // [packed] - 0x80 shr // [num] - - // output stack: [num] -} - -#define macro PULL_ADDRESS() = takes(0) returns (1) { - [ADDR_BYTES_STORAGE] sload // [packed] - dup1 // [packed, packed] - 0x80 shr // [num, packed] - - 0x01 add // [num + 1, packed] - swap1 // [packed, num + 1] - - // Mask packed (only want lower 128 bits) - 0xffffffffffffffffffffffffffffffff and - - dup2 // [num + 1, packed, num + 1] - 0x80 shl // [num + 1 << 0x80, packed, num + 1] - or // [nextpacked, num + 1] - - [ADDR_BYTES_STORAGE] sstore // [num + 1] - - // output stack: [num + 1] -} - -#define macro BYTES32_STORAGE_POINTER() = takes (1) returns (1) { - // input stack: [index] - 0x80 shl - // output stack: [index << 0x80] -} - -#define macro ADDRESS_STORAGE_POINTER() = takes (1) returns (1) { - // input stack: [index] - 0x01 add - // output stack: [index + 1] -} - -#define macro BYTES32_NUM() = takes (0) returns (1) { - [ADDR_BYTES_STORAGE] sload // [packed] - 0xffffffffffffffffffffffffffffffff and // [num] - - // output stack: [num] -} - -#define macro PULL_BYTES32() = takes(0) returns (1) { - [ADDR_BYTES_STORAGE] sload // [packed] - dup1 // [packed, packed] - 0xffffffffffffffffffffffffffffffff and // [num, packed] - - 0x01 add // [num + 1, packed] - swap1 // [packed, num + 1] - - 0xffffffffffffffffffffffffffffffff00000000000000000000000000000000 and // [packed, num + 1] - - dup2 // [num + 1, packed, num + 1] - or // [nextpacked, num + 1] - - [ADDR_BYTES_STORAGE] sstore // [num + 1] - - // output stack: [num + 1] -} - -#define jumptable__packed FLAG_TABLE { - FLAG_READ_POWER_OF_10_MISC // 0x00 - FLAG_READ_BYTES32_1_BYTES // 0x01 - FLAG_READ_BYTES32_2_BYTES // 0x02 - FLAG_READ_BYTES32_3_BYTES // 0x03 - FLAG_READ_BYTES32_4_BYTES // 0x04 - FLAG_READ_BYTES32_5_BYTES // 0x05 - FLAG_READ_BYTES32_6_BYTES // 0x06 - FLAG_READ_BYTES32_7_BYTES // 0x07 - FLAG_READ_BYTES32_8_BYTES // 0x08 - FLAG_READ_BYTES32_9_BYTES // 0x09 - FLAG_READ_BYTES32_10_BYTES // 0x0a - FLAG_READ_BYTES32_11_BYTES // 0x0b - FLAG_READ_BYTES32_12_BYTES // 0x0c - FLAG_READ_BYTES32_13_BYTES // 0x0d - FLAG_READ_BYTES32_14_BYTES // 0x0e - FLAG_READ_BYTES32_15_BYTES // 0x0f - FLAG_READ_BYTES32_16_BYTES // 0x10 - FLAG_READ_BYTES32_17_BYTES // 0x11 - FLAG_READ_BYTES32_18_BYTES // 0x12 - FLAG_READ_BYTES32_19_BYTES // 0x13 - FLAG_READ_BYTES32_20_BYTES // 0x14 - FLAG_READ_BYTES32_21_BYTES // 0x15 - FLAG_READ_BYTES32_22_BYTES // 0x16 - FLAG_READ_BYTES32_23_BYTES // 0x17 - FLAG_READ_BYTES32_24_BYTES // 0x18 - FLAG_READ_BYTES32_25_BYTES // 0x19 - FLAG_READ_BYTES32_26_BYTES // 0x1a - FLAG_READ_BYTES32_27_BYTES // 0x1b - FLAG_READ_BYTES32_28_BYTES // 0x1c - FLAG_READ_BYTES32_29_BYTES // 0x1d - FLAG_READ_BYTES32_30_BYTES // 0x1e - FLAG_READ_BYTES32_31_BYTES // 0x1f - FLAG_READ_BYTES32_32_BYTES // 0x20 - FLAG_SAVE_ADDRESS // 0x21 - FLAG_SAVE_BYTES32 // 0x22 - FLAG_READ_ADDRESS_2 // 0x23 - FLAG_READ_ADDRESS_3 // 0x24 - FLAG_READ_ADDRESS_4 // 0x25 - FLAG_READ_EXECUTE // 0x26 - FLAG_READ_BYTES32_2 // 0x27 - FLAG_READ_BYTES32_3 // 0x28 - FLAG_READ_BYTES32_4 // 0x29 - FLAG_READ_POW_10_MANTISSA // 0x2a - FLAG_READ_N_BYTES // 0x2b - FLAG_READ_POWER_OF_2 // 0x2c - FLAG_ABI_0_PARAM // 0x2d - FLAG_ABI_1_PARAM // 0x2e - FLAG_ABI_2_PARAMS // 0x2f - FLAG_ABI_3_PARAMS // 0x20 - FLAG_ABI_4_PARAMS // 0x31 - FLAG_ABI_5_PARAMS // 0x32 - FLAG_ABI_6_PARAMS // 0x33 - FLAG_NESTED_N_FLAGS_8 // 0x34 - FLAG_NESTED_N_FLAGS_16 // 0x35 - // start: Signature specific methods - FLAG_SIGNATURE_W0 // 0x36 - FLAG_SIGNATURE_W1 // 0x37 - FLAG_SIGNATURE_W2 // 0x38 - FLAG_SIGNATURE_W3 // 0x39 - FLAG_SIGNATURE_W4 // 0x3a - FLAG_ADDRESS_W0 // 0x3b - FLAG_ADDRESS_W1 // 0x3c - FLAG_ADDRESS_W2 // 0x3d - FLAG_ADDRESS_W3 // 0x3e - FLAG_ADDRESS_W4 // 0x4f - FLAG_NODE // 0x40 - FLAG_BRANCH // 0x41 - FLAG_SUBDIGEST // 0x42 - FLAG_NESTED // 0x43 - FLAG_DYNAMIC_SIGNATURE // 0x44 - FLAG_S_SIG_NO_CHAIN // 0x45 - FLAG_S_SIG // 0x46 - FLAG_S_L_SIG_NO_CHAIN // 0x47 - FLAG_S_L_SIG // 0x48 - FLAG_READ_CHAINED // 0x49 - FLAG_READ_CHAINED_L // 0x4a - // end: Sequence specific methods - FLAG_READ_DYNAMIC_ABI // 0x4b - FLAG_NO_OP // 0x4c - FLAG_MIRROR_FLAG // 0x4d - FLAG_COPY_CALLDATA // 0x4e - FLAG_READ_STORE_FLAG // 0x4f -} - -#define constant HIGHEST_FLAG = 0x4f -#define constant HIGHEST_FLAG_PLUS_ONE = 0x50 - -#define macro READ_FLAG() = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - end // [end, rindex, windex] - swap2 // [windex, rindex, end] - - nrfs: - FN_READ_FLAG(nrfs) // [windex, rindex] - - end: -} - -#define macro FN_READ_FLAG(nrfs) = takes (3) returns (2) { - // input stack: [windex, rindex, jump_to] - - dup2 // [rindex, windex, rindex, jump_to] - calldataload // [cdata[rindex], windex, rindex, jump_to] - callvalue byte // [flag, windex, rindex, jump_to] - - swap2 // [rindex, windex, flag, jump_to] - 0x01 add // [rindex + 1, windex, flag, jump_to] - swap2 // [flag, windex, rindex + 1, jump_to] - - dup1 // [flag, flag, windex, rindex + 1, jump_to] - [HIGHEST_FLAG] lt // [HIGHEST_FLAG < flag, flag, windex, rindex + 1, jump_to] - default jumpi // [flag, windex, rindex + 1, jump_to] - - // Starts to become cheaper to skip the loading - // after 5 times, most real world cases will have more than - // 5 times. Notice that this assumes a single READ_FLAG instance - callvalue mload no_load jumpi - __tablesize(FLAG_TABLE) // [table_size, flag, windex, rindex + 1, jump_to] - __tablestart(FLAG_TABLE) // [table_start, table_size, flag, windex, rindex + 1, jump_to] - callvalue // [0x00, table_start, table_size, flag, windex, rindex + 1, jump_to] - codecopy // [flag, windex, rindex + 1] - no_load: - - 0x01 shl // [flag << 0x01, windex, rindex + 1, jump_to] - mload // [word, windex, rindex + 1, jump_to] - 0xf0 shr // [word >> 0xf0, windex, rindex + 1, jump_to] - jump // [windex, rindex + 1, jump_to] - - FLAG_READ_POWER_OF_10_MISC: - __tablestart(POW_10_TABLE) - READ_POW_10_AND_SELF_EXECUTE() - end jump - FLAG_READ_BYTES32_1_BYTES: - READ_BYTES32(0xf8, 0x01) - end jump - FLAG_READ_BYTES32_2_BYTES: - READ_BYTES32(0xf0, 0x02) - end jump - FLAG_READ_BYTES32_3_BYTES: - READ_BYTES32(0xe8, 0x03) - end jump - FLAG_READ_BYTES32_4_BYTES: - READ_BYTES32(0xe0, 0x04) - end jump - FLAG_READ_BYTES32_5_BYTES: - READ_BYTES32(0xd8, 0x05) - end jump - FLAG_READ_BYTES32_6_BYTES: - READ_BYTES32(0xd0, 0x06) - end jump - FLAG_READ_BYTES32_7_BYTES: - READ_BYTES32(0xc8, 0x07) - end jump - FLAG_READ_BYTES32_8_BYTES: - READ_BYTES32(0xc0, 0x08) - end jump - FLAG_READ_BYTES32_9_BYTES: - READ_BYTES32(0xb8, 0x09) - end jump - FLAG_READ_BYTES32_10_BYTES: - READ_BYTES32(0xb0, 0x0a) - end jump - FLAG_READ_BYTES32_11_BYTES: - READ_BYTES32(0xa8, 0x0b) - end jump - FLAG_READ_BYTES32_12_BYTES: - READ_BYTES32(0xa0, 0x0c) - end jump - FLAG_READ_BYTES32_13_BYTES: - READ_BYTES32(0x98, 0x0d) - end jump - FLAG_READ_BYTES32_14_BYTES: - READ_BYTES32(0x90, 0x0e) - end jump - FLAG_READ_BYTES32_15_BYTES: - READ_BYTES32(0x88, 0x0f) - end jump - FLAG_READ_BYTES32_16_BYTES: - READ_BYTES32(0x80, 0x10) - end jump - FLAG_READ_BYTES32_17_BYTES: - READ_BYTES32(0x78, 0x11) - end jump - FLAG_READ_BYTES32_18_BYTES: - READ_BYTES32(0x70, 0x12) - end jump - FLAG_READ_BYTES32_19_BYTES: - READ_BYTES32(0x68, 0x13) - end jump - FLAG_READ_BYTES32_20_BYTES: - READ_BYTES32(0x60, 0x14) - end jump - FLAG_READ_BYTES32_21_BYTES: - READ_BYTES32(0x58, 0x15) - end jump - FLAG_READ_BYTES32_22_BYTES: - READ_BYTES32(0x50, 0x16) - end jump - FLAG_READ_BYTES32_23_BYTES: - READ_BYTES32(0x48, 0x17) - end jump - FLAG_READ_BYTES32_24_BYTES: - READ_BYTES32(0x40, 0x18) - end jump - FLAG_READ_BYTES32_25_BYTES: - READ_BYTES32(0x38, 0x19) - end jump - FLAG_READ_BYTES32_26_BYTES: - READ_BYTES32(0x30, 0x1a) - end jump - FLAG_READ_BYTES32_27_BYTES: - READ_BYTES32(0x28, 0x1b) - end jump - FLAG_READ_BYTES32_28_BYTES: - READ_BYTES32(0x20, 0x1c) - end jump - FLAG_READ_BYTES32_29_BYTES: - READ_BYTES32(0x18, 0x1d) - end jump - FLAG_READ_BYTES32_30_BYTES: - READ_BYTES32(0x10, 0x1e) - end jump - FLAG_READ_BYTES32_31_BYTES: - READ_BYTES32(0x08, 0x1f) - end jump - FLAG_READ_BYTES32_32_BYTES: - READ_BYTES32_WORD() - end jump - - FLAG_SAVE_ADDRESS: - SAVE_ADDRESS() - end jump - - FLAG_SAVE_BYTES32: - SAVE_BYTES32() - end jump - - FLAG_READ_ADDRESS_2: - READ_ADDRESS_STORAGE(0x02, 0xf0) - end jump - FLAG_READ_ADDRESS_3: - READ_ADDRESS_STORAGE(0x03, 0xe8) - end jump - FLAG_READ_ADDRESS_4: - READ_ADDRESS_STORAGE(0x04, 0xe0) - end jump - - FLAG_READ_EXECUTE: - READ_EXECUTE() - end jump - - FLAG_READ_BYTES32_2: - READ_BYTES32_STORAGE(0x02, 0xf0) - end jump - FLAG_READ_BYTES32_3: - READ_BYTES32_STORAGE(0x03, 0xe8) - end jump - FLAG_READ_BYTES32_4: - READ_BYTES32_STORAGE(0x04, 0xe0) - end jump // [end jump, windex, rindex + 1, jump_to] - - FLAG_READ_POW_10_MANTISSA: - __tablestart(POW_10_TABLE) - READ_POW_10_MANTISSA(0x05, 0xd8) - end jump - - FLAG_READ_N_BYTES: - READ_N_BYTES() - end jump - - FLAG_READ_POWER_OF_2: - READ_POW_2() - end jump - - FLAG_ABI_0_PARAM: - __tablestart(COMMON_4BYTES) // [table_start, windex, rindex] - READ_ABI_0() - end jump - FLAG_ABI_1_PARAM: - __tablestart(COMMON_4BYTES) // [table_start, windex, rindex] - READ_ABI_1() - end jump - FLAG_ABI_2_PARAMS: - __tablestart(COMMON_4BYTES) // [table_start, windex, rindex] - READ_ABI_2() - end jump - FLAG_ABI_3_PARAMS: - __tablestart(COMMON_4BYTES) // [table_start, windex, rindex] - READ_ABI_3() - end jump - FLAG_ABI_4_PARAMS: - __tablestart(COMMON_4BYTES) // [table_start, windex, rindex] - READ_ABI_4() - end jump - FLAG_ABI_5_PARAMS: - __tablestart(COMMON_4BYTES) // [table_start, windex, rindex] - READ_ABI_5() - end jump - FLAG_ABI_6_PARAMS: - __tablestart(COMMON_4BYTES) // [table_start, windex, rindex] - READ_ABI_6() - end jump - - FLAG_NESTED_N_FLAGS_8: - READ_NESTED_N_FLAGS_8() - end jump - FLAG_NESTED_N_FLAGS_16: - READ_NESTED_N_FLAGS_16() - end jump - - FLAG_SIGNATURE_W0: - READ_SIGNATURE_W0() - end jump - FLAG_SIGNATURE_W1: - READ_SIGNATURE_WX(0x01) - end jump - FLAG_SIGNATURE_W2: - READ_SIGNATURE_WX(0x02) - end jump - FLAG_SIGNATURE_W3: - READ_SIGNATURE_WX(0x03) - end jump - FLAG_SIGNATURE_W4: - READ_SIGNATURE_WX(0x04) - end jump - - FLAG_ADDRESS_W0: - READ_ADDRESS_W0() - end jump - FLAG_ADDRESS_W1: - READ_ADDRESS_WX(, 0x01) - end jump - FLAG_ADDRESS_W2: - READ_ADDRESS_WX(, 0x02) - end jump - FLAG_ADDRESS_W3: - READ_ADDRESS_WX(, 0x03) - end jump - FLAG_ADDRESS_W4: - READ_ADDRESS_WX(, 0x04) - end jump - - FLAG_NODE: - READ_NODE() - end jump - FLAG_BRANCH: - READ_BRANCH() - end jump - FLAG_SUBDIGEST: - READ_SUBDIGEST() - end jump - FLAG_NESTED: - READ_NESTED() - end jump - FLAG_DYNAMIC_SIGNATURE: - READ_DYNAMIC_SIGNATURE() - end jump - - FLAG_S_SIG_NO_CHAIN: - READ_SEQUENCE_SIGNATURE(, 0x02, 0x01, 0xf8) - end jump - FLAG_S_SIG: - READ_SEQUENCE_SIGNATURE(, 0x01, 0x01, 0xf8) - end jump - FLAG_S_L_SIG_NO_CHAIN: - READ_SEQUENCE_SIGNATURE(, 0x02, 0x02, 0xf0) - end jump - FLAG_S_L_SIG: - READ_SEQUENCE_SIGNATURE(, 0x01, 0x02, 0xf0) - end jump - - FLAG_READ_CHAINED: - READ_CHAINED(, 0x01, 0xf8) - end jump - FLAG_READ_CHAINED_L: - READ_CHAINED(, 0x02, 0xf0) - end jump - - FLAG_READ_DYNAMIC_ABI: - __tablestart(COMMON_4BYTES) - READ_ABI_DYNAMIC() - end jump - - FLAG_NO_OP: - end jump - FLAG_MIRROR_FLAG: - READ_MIRROR_FLAG() - end jump - FLAG_COPY_CALLDATA: - READ_COPY_CALLDATA() - end jump - FLAG_READ_STORE_FLAG: - READ_STORE_FLAG() - end jump - - default: - // The default just pushes the flag as a byte (padded to 32 bytes) - // notice that we start at 0x01 since 0x00 can be pushed with the flag 0x00 - [HIGHEST_FLAG_PLUS_ONE] // [HIGHEST_FLAG_PLUS_ONE, flag, windex, rindex, jump_to] - swap1 sub // [flag - HIGHEST_FLAG_PLUS_ONE, windex, rindex, jump_to] - dup2 // [windex, flag - HIGHEST_FLAG_PLUS_ONE, windex, rindex, jump_to] - mstore // [windex, rindex, jump_to] - 0x20 add // [windex + 0x20, rindex, jump_to] - - end: - - swap1 // [rindex, windex, jump_to] - swap2 // [jump_to, windex, rindex] - jump // [windex, rindex] - - // output stack: // [windex, rindex] -} - -#define macro READ_POW_10_MANTISSA() = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - // The first 6 bits are exponent - - dup3 // [rindex, table_start, windex, rindex] - calldataload // [data[rindex], table_start, windex, rindex] - - 0xfa // [0xfa, data[rindex], table_start, windex, rindex] - shr // [exp, table_start, windex, rindex] - - POW_10() // [windex, rindex] - BACKREAD_SINGLE_VALUE() // [10 ** exp, windex, rindex] - - // The next 18 bits are the mantissa - - dup3 // [rindex, 10 ** exp, windex, rindex] - calldataload // [data[rindex], 10 ** exp, windex, rindex] - - 0xe8 // [0xe8, data[rindex], 10 ** exp, windex, rindex] - shr // [(data[rindex] >> 0xe8), 10 ** exp, windex, rindex] - 0x3ffff // [0x3ffff, (data[rindex] >> 0xe8), 10 ** exp, windex, rindex] - and // [mantissa, 10 ** exp, windex, rindex] - mul // [(mantissa * 10 ** exp), windex, rindex] - - dup2 // [windex, (mantissa * 10 ** exp), windex, rindex] - mstore // [windex, rindex] - - 0x20 // [0x20, windex, rindex] - add // [(0x20 + windex), rindex] - swap1 // [rindex, (0x20 + windex)] - 0x03 // [0x03, rindex, (0x20 + windex)] - add // [(0x03 + rindex), (0x20 + windex)] - swap1 // [(0x20 + windex), (0x03 + rindex)] - - // input stack: [windex, rindex] -} - -#define macro READ_POW_10_AND_SELF_EXECUTE(nrfs) = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - swap2 // [rindex, windex, table_start] - LOAD_1_BYTE() // [exp_word, rindex, windex, table_start] - - // We didn't had any more pleace for READ_SELF_EXECUTE without expanding - // the jumptable! so it has to live here. Sorry about that. - // 10 ** 0 * N is more expensive than just reading 1 byte, - // so this wasn't useful anyway - - dup1 // [exp_word, exp_word, rindex, windex, table_start] - normal_flow jumpi // [exp_word, rindex, windex, table_start] - - // --- WARNING UGLY CODE --- - - pop // [rindex, windex, table_start] - swap2 // [table_start, windex, rindex] - pop // [windex, rindex] - - READ_SELF_EXECUTE() // [windex, rindex] - end_pow_10 jump // [windex, rindex] - - normal_flow: - - // The first bit determines if we will multiply this by - // the next byte or not, this is fine as the maximum value that we - // can represent in a word is only 10 ** 77 - dup1 // [exp_word, exp_word, rindex, windex, table_start] - 0x80 and // [not_use_mul, exp_word, rindex, windex, table_start] - swap1 // [exp_word, not_use_mul, rindex, windex, table_start] - 0x7f and // [exp, not_use_mul, rindex, windex, table_start] - - swap2 // [rindex, not_use_mul, exp_word, windex, table_start] - swap4 // [table_start, not_use_mul, exp_word, windex, rindex] - swap1 // [not_use_mul, table_start, exp_word, windex, rindex] - swap3 // [windex, table_start, exp_word, not_use_mul, rindex] - swap2 // [exp_word, table_start, windex, not_use_mul, rindex] - - POW_10() // [windex, not_use_mul, rindex] - - swap1 // [not_use_mul, windex, rindex] - - end_pow_10 jumpi // [windex, rindex] - - BACKREAD_SINGLE_VALUE() // [pow_result, windex, rindex] - swap2 // [rindex, windex, pow_result] - LOAD_1_BYTE() // [mantissa, rindex, windex, pow_result] - swap1 // [rindex, mantissa, windex, pow_result] - swap3 // [pow_result, mantissa, windex, rindex] - mul // [(pow_result * mantissa), windex, rindex] - dup2 // [windex, (pow_result * mantissa), windex, rindex] - mstore // [windex, rindex] - 0x20 // [0x20, windex, rindex] - add // [(0x20 + windex), rindex] - - end_pow_10: // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro POW_10() = takes (3) returns (1) { - // input stack: [exp, table_start, windex] - - 0x05 // [0x05, exp, table_start, windex] - shl // [exp * 0x20, table_start, windex] - - add // [(table_start + exp * 0x20), windex] - - 0x20 // [0x20, (table_start + exp * 0x20), windex] - swap1 // [(table_start + exp * 0x20), 0x20, windex] - dup3 // [windex, (table_start + exp * 0x20), 0x20, windex] - codecopy // [windex] - - 0x20 add // [windex + 0x20] - - // output stack: [windex] -} - -#define macro READ_MIRROR_FLAG(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - LOAD_DYNAMIC_SIZE(0x02, 0xf0) // [trindex, rindex, windex] - swap1 // [rindex, trindex, windex] - swap2 // [windex, trindex, rindex] - - PERFORM_NESTED_READ_FLAG() // [windex, trindex, rindex] - swap1 // [trindex, windex, rindex] - pop // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_COPY_CALLDATA() = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - LOAD_DYNAMIC_SIZE(0x02, 0xf0) // [location, rindex, windex] - swap1 // [rindex, location, windex] - - LOAD_1_BYTE() // [size, rindex, location, windex] - - dup1 // [size, size, rindex, location, windex] - swap3 // [location, size, rindex, size, windex] - dup5 // [windex, location, size, rindex, size, windex] - calldatacopy // [rindex, size, windex] - - swap2 // [windex, size, rindex] - add // [(windex + size), rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_STORE_FLAG() = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - LOAD_DYNAMIC_SIZE(0x02, 0xf0) // [trindex, rindex, windex] - - dup1 // [trindex, trindex, rindex, windex] - calldataload // [data[trindex], trindex, rindex, windex] - callvalue byte // [flag, trindex, rindex, windex] - - swap1 // [trindex, flag, rindex, windex] - 0x01 add // [trindex + 1, flag, rindex, windex] - swap1 // [flag, trindex, rindex, windex] - - // There are only two cases, either the flag - // is storing an address or storing a bytes32 - // we are going to read the next 32 bytes or the next 20 bytes - - 0x21 // [0x21, flag, trindex, rindex, windex] - eq // [(0x21 == flag), trindex, rindex, windex] - is_addr jumpi // [trindex, rindex, windex] - - // is_not_addr: - calldataload // [word, rindex, windex] - - end_if jump - is_addr: // [trindex, rindex, windex] - calldataload // [word, rindex, windex] - 0x60 shr // [word >> 0x60, rindex, windex] - - end_if: - - dup3 // [windex, word, rindex, windex] - mstore // [rindex, windex] - swap1 // [windex, rindex] - 0x20 add // [windex + 0x20, rindex] - - // output stack: [windex, rindex] -} - -#define macro PERFORM_NESTED_READ_FLAG(nrfs) = takes(0) returns (0) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - back // [back, rindex, windex] - swap2 // [windex, rindex, back] - - jump // [windex, rindex] - - back: -} - -#define macro BACKREAD_SINGLE_VALUE() = takes (1) returns (2) { - // input stack: [windex] - - 0x20 swap1 sub // [windex - 0x20] - dup1 // [windex - 0x20, windex - 0x20] - - mload // [mem[windex - 0x20], windex - 0x20] - - // output stack: [mem[windex - 0x20], windex - 0x20] -} - -#define macro READ_NESTED_N_FLAGS_8(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - LOAD_1_BYTE() // [size, rindex, windex] - - swap2 // [windex, rindex, size] - READ_NESTED_N_FLAGS() - - // output stack: [windex, rindex] -} - -#define macro READ_NESTED_N_FLAGS_16(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - LOAD_DYNAMIC_SIZE(0x02, 0xf0) // [size, rindex, windex] - - swap2 // [windex, rindex, size] - READ_NESTED_N_FLAGS() - - // output stack: [windex, rindex] -} - -#define macro READ_NESTED_N_FLAGS(nrfs) = takes (3) returns (2) { - // input stack: [windex, rindex, n] - - callvalue // [i, windex, rindex, n] - - read_more: // [i, windex, rindex, n] - - swap2 // [rindex, windex, i, n] - swap1 // [windex, rindex, i, n] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, i, n] - - swap1 // [rindex, windex, i, n] - swap2 // [i, windex, rindex, n] - - 0x01 add // [i + 1, windex, rindex, n] - - dup4 // [n, i, windex, rindex, n] - dup2 // [i, n, i, windex, rindex, n] - lt // [(i < n), i, windex, rindex, n] - - read_more jumpi // [i, windex, rindex, n] - - pop // [windex, rindex, n] - swap2 // [n, rindex, windex] - pop // [rindex, windex] - swap1 // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_CHAINED(nrfs, s_bytes, s_offset) = takes (2) returns (2) { - // input stack: [windex, rindex] - - // First we need to write the chainId sequence prefix (0x03) - WRITE_SEQUENCE_FLAG(0x03) - - // Second we need to read the number of flags we are going to read - - callvalue // [0x00, windex, rindex] - swap2 // [rindex, windex, 0x00] - - LOAD_DYNAMIC_SIZE(, ) // [size, rindex, windex, 0x00] - - swap3 // [0x00, rindex, windex, size] - swap2 // [windex, rindex, 0x00, size] - - read_more: // [windex, rindex, i, size] - - // Reserve 3 bytes of the size, and keep a copy of the windex - // one will serve as a comparation point to determine the size - // the other will be the pointer that determines where we need to store - // the size - - // Clear the memory now, that way we don't need to make it later - callvalue // [0x00, windex, rindex, i, size] - dup2 // [windex, 0x00, windex, rindex, i, size] - mstore // [windex, rindex, i, size] - - // Create copies for windex, and advance 2 of them by 3 - dup1 // [windex, windex, rindex, i, size] - 0x03 add // [windex, size_pointer, rindex, i, size] - dup1 // [windex, windex, size_pointer, rindex, i, size] - - swap3 // [rindex, windex, size_pointer, windex, i, size] - swap1 // [windex, rindex, size_pointer, prev_windex, i, size] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, size_pointer, prev_windex, i, size] - - // Calculate the size and write it at the start - - swap1 // [rindex, windex, size_pointer, prev_windex, i, size] - swap3 // [prev_windex, windex, size_pointer, rindex, i, size] - dup2 // [windex, prev_windex, windex, size_pointer, rindex, i, size] - sub // [size, windex, size_pointer, rindex, i, size] - 0xe8 shl // [size << 0xe8, windex, size_pointer, rindex, i, size] - - dup3 // [size_pointer, size, windex, size_pointer, rindex, i, size] - mload // [mload[size_pointer], size, windex, size_pointer, rindex, i, size] - or // [(mload[size_pointer] | size), windex, size_pointer, rindex, i, size] - - swap1 // [windex, (mload[size_pointer] | size), size_pointer, rindex, i, size] - swap2 // [size_pointer, (mload[size_pointer] | size), windex, rindex, i, size] - mstore // [windex, rindex, i, size] - - swap2 // [i, rindex, windex, size] - 0x01 add // [i + 1, rindex, windex, size] - swap2 // [windex, rindex, i + 1, size] - - dup4 // [size, windex, rindex, i + 1, size] - dup4 // [i + 1, size, windex, rindex, i + 1, size] - lt // [(i + 1 < size), windex, rindex, i + 1, size] - read_more jumpi // [windex, rindex, i + 1, size] - - // [windex, rindex, i + 1, size] - - swap2 // [i, rindex, windex, size] - pop // [rindex, windex, size] - swap2 // [size, windex, rindex] - pop // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_DYNAMIC_SIGNATURE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - WRITE_SEQUENCE_FLAG(0x02) - - swap1 // [rindex, windex] - - // Read the weight, it is always 1 byte - LOAD_1_BYTE() // [weight, rindex, windex] - - dup3 // [windex, weight, rindex, windex] - mstore8 // [rindex, windex] - swap1 // [windex, rindex] - 0x01 add // [windex, rindex] - - // Read the address, use read flag as it may use a pointer - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - BACKREAD_SINGLE_VALUE() // [word, windex, rindex] - 0x60 shl // [address, windex, rindex] - - dup2 // [windex, word, windex, rindex] - mstore // [windex, rindex] - 0x14 add // [windex, rindex] - - // Now read another nested flag, as-is, but leave - // the space to demark the size - - // Clear the memory here, that way we don't need to mask it - // when we write the size - callvalue // [0x00, windex, rindex] - dup2 mstore // [windex, rindex] - - // Reserve 3 bytes for the size - dup1 // [windex, size_pointer, rindex] - 0x03 add // [windex, size_pointer, rindex] - - swap2 // [rindex, size_pointer, windex] - dup3 // [windex, rindex, size_pointer, prev_windex] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, size_pointer, prev_windex] - - // Need to go back and write the size now - - swap3 // [prev_windex, rindex, size_pointer, windex] - dup4 // [windex, prev_windex, rindex, size_pointer, windex] - sub // [size, rindex, size_pointer, windex] - - // The size is +1 since we also need to include the suffix "03" for EIP1271 - 0x01 add // [size + 1, rindex, size_pointer, windex] - - 0xe8 shl // [size << 0xe8, rindex, size_pointer, windex] - dup3 // [size_pointer, size, rindex, size_pointer, windex] - mload // [mload[size_pointer], size, rindex, size_pointer, windex] - or // [(mload[size_pointer] | size), rindex, size_pointer, windex] - swap1 // [rindex, (mload[size_pointer] | size), size_pointer, windex] - swap2 // [size_pointer, (mload[size_pointer] | size), rindex, windex] - mstore // [rindex, windex] - swap1 // [windex, rindex] - - // Write the suffix, just 03 - 0x03 // [0x03, windex, rindex] - dup2 // [windex, 0x03, windex, rindex] - mstore8 // [windex, rindex] - 0x01 add // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_SIGNATURE_W0() = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [weight, rindex, windex] - - swap2 // [windex, rindex, weight] - - READ_SIGNATURE() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_SIGNATURE_WX(weight) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - // [weight, rindex, windex] - swap2 // [windex, rindex, weight] - - READ_SIGNATURE() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_SIGNATURE() = takes (3) returns (2) { - // input stack: [windex, rindex, weight] - - WRITE_SEQUENCE_FLAG(0x00) - - // Second thing we must write is the weight, always 1 byte - - swap2 // [weight, rindex, windex] - dup3 // [windex, weight, rindex, windex] - mstore8 // [rindex, windex] - swap1 // [windex, rindex] - 0x01 add // [windex, rindex] - - // EOA signatures are always 66 bytes long - // we can just copy them - - 0x42 // [0x42, windex, rindex] - dup1 // [0x42, 0x42, windex, rindex] - - dup4 // [rindex, 0x42, 0x42, windex, rindex] - dup4 // [windex, rindex, 0x42, 0x42, windex, rindex] - calldatacopy // [0x42, windex, rindex] - - dup1 // [0x42, 0x42, windex, rindex] - swap3 // [rindex, 0x42, windex, 0x42] - add // [rindex, windex, 0x42] - swap2 // [0x42, windex, rindex] - add // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ADDRESS_W0(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [weight, rindex, windex] - - swap2 // [windex, rindex, weight] - - READ_ADDRESS() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ADDRESS_WX(nrfs, weight) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - // [weight, rindex, windex] - swap2 // [windex, rindex, weight] - - READ_ADDRESS() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ADDRESS(nrfs) = takes (3) returns (2) { - // input stack: [windex, rindex, weight] - - WRITE_SEQUENCE_FLAG(0x01) - - // Second thing we must write is the weight, always 1 byte - - swap2 // [weight, rindex, windex] - dup3 // [windex, weight, rindex, windex] - mstore8 // [rindex, windex] - swap1 // [windex, rindex] - 0x01 add // [windex, rindex] - - // Addresses are always 20 bytes long - // we use a nested read flag call, since this address - // could come from storage - - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - BACKREAD_SINGLE_VALUE() // [word, windex, rindex] - 0x60 shl // [address, windex, rindex] - - dup2 // [windex, word, windex, rindex] - mstore // [windex, rindex] - - 0x14 add // [windex + 0x14, rindex] -} - -#define macro READ_NODE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - WRITE_SEQUENCE_FLAG(0x03) - - // Now we just proceed by reading another flag - - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_BRANCH(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - WRITE_SEQUENCE_FLAG(0x04) - - // Now we just proceed by reading the branch - // the only important part is that we need to - // measure how much is written, as the branch is - // always prefixed by the size - - // Clear the memory here, that way we don't need to mask it - // when we write the size - callvalue // [0x00, windex, rindex] - dup2 mstore // [windex, rindex] - - // Reserve 3 bytes for the size - dup1 // [windex, size_pointer, rindex] - 0x03 add // [windex, size_pointer, rindex] - - swap2 // [rindex, size_pointer, windex] - dup3 // [windex, rindex, size_pointer, prev_windex] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, size_pointer, prev_windex] - - // Need to go back and write the size now - - swap3 // [prev_windex, rindex, size_pointer, windex] - dup4 // [windex, prev_windex, rindex, size_pointer, windex] - sub // [size, rindex, size_pointer, windex] - 0xe8 shl // [size << 0xe8, rindex, size_pointer, windex] - dup3 // [size_pointer, size, rindex, size_pointer, windex] - mload // [mload[size_pointer], size, rindex, size_pointer, windex] - or // [(mload[size_pointer] | size), rindex, size_pointer, windex] - swap1 // [rindex, (mload[size_pointer] | size), size_pointer, windex] - swap2 // [size_pointer, (mload[size_pointer] | size), rindex, windex] - mstore // [rindex, windex] - swap1 // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_SUBDIGEST(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - WRITE_SEQUENCE_FLAG(0x05) - - // Now we just proceed by reading another flag - - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - - -#define macro READ_NESTED(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - WRITE_SEQUENCE_FLAG(0x06) // [windex, rindex] - - // Read the weight and the threshold - // the weight is always 1 byte, the threshold uses 2 - // but in reality most Sequence wallets use 1, so this library - // only supports 1 byte for it. If the wallet is not compatible, READ_NESTED - // can't be used, and READ_N_BYTES must be used instead - - swap1 // [rindex, windex] - LOAD_1_BYTE() // [weight, rindex, windex] - swap1 // [rindex, weight, windex] - LOAD_1_BYTE() // [threshold, rindex, weight, windex] - 0xf0 shl // [threshold << 0xf0, rindex, weight, windex] - swap2 // [weight, rindex, threshold, windex] - - dup4 // [windex, weight, rindex, threshold, windex] - mstore8 // [rindex, threshold, windex] - swap2 // [windex, threshold, rindex] - 0x01 add // [windex, threshold, rindex] - swap1 // [threshold, windex, rindex] - dup2 // [windex, threshold, windex, rindex] - mstore // [windex, rindex] - 0x02 add // [windex, rindex] - - // Now we just proceed by reading the branch - // the only important part is that we need to - // measure how much is written, as the branch is - // always prefixed by the size - - // Clear the memory here, that way we don't need to mask it - // when we write the size - callvalue // [0x00, windex, rindex] - dup2 mstore // [windex, rindex] - - // Reserve 3 bytes for the size - dup1 // [windex, size_pointer, rindex] - 0x03 add // [windex, size_pointer, rindex] - - swap2 // [rindex, size_pointer, windex] - dup3 // [windex, rindex, size_pointer, prev_windex] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, size_pointer, prev_windex] - - // Need to go back and write the size now - - swap3 // [prev_windex, rindex, size_pointer, windex] - dup4 // [windex, prev_windex, rindex, size_pointer, windex] - sub // [size, rindex, size_pointer, windex] - 0xe8 shl // [size << 0xe8, rindex, size_pointer, windex] - dup3 // [size_pointer, size, rindex, size_pointer, windex] - mload // [mload[size_pointer], size, rindex, size_pointer, windex] - or // [(mload[size_pointer] | size), rindex, size_pointer, windex] - swap1 // [rindex, (mload[size_pointer] | size), size_pointer, windex] - swap2 // [size_pointer, (mload[size_pointer] | size), rindex, windex] - mstore // [rindex, windex] - swap1 // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro WRITE_SEQUENCE_FLAG(flag) = takes (2) returns (2) { - // input stack: [windex, rindex] - - // [flag, windex, rindex] - dup2 // [windex, flag, windex, rindex] - mstore8 // [windex, rindex] - 0x01 add // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_SEQUENCE_SIGNATURE(nrfs, sig_flag, size_t, offset_t) = takes (2) returns (2) { - // input stack: [windex, rindex] - - // Write the signature flag as-is - - // [sig_flag, windex, rindex] - dup2 // [windex, sig_flag, windex, rindex] - mstore8 // [windex, rindex] - 0x01 add // [windex, rindex] - - // Now read the threshold, it may be provided as 8 or 16 bits - // but we always write it using 16 - swap1 // [rindex, windex] - LOAD_DYNAMIC_SIZE(, ) // [threshold, rindex, windex] - 0xf0 shl // [threshold << 0xf0, rindex, windex] - dup3 // [windex, threshold << 0xf0, rindex, windex] - mstore // [rindex, windex] - swap1 // [windex, rindex] - 0x02 add // [windex, rindex] - - // Next read the checkpoint, using read flag is overkill here - // but we do it for the sake of simplicity - - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - BACKREAD_SINGLE_VALUE() // [checkpoint, windex, rindex] - - // The checkpoint always uses 4 bytes - 0xe0 shl // [checkpoint << 0xe0, windex, rindex] - dup2 // [windex, checkpoint, windex, rindex] - mstore // [windex, rindex] - 0x04 add // [windex, rindex] - - // Now read the rest of the tree, this is just another read flag - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_EXECUTE_STANDALONE() = takes (2) returns (2) { - skip jump - rf: - FN_READ_FLAG(rf) - skip: - READ_EXECUTE(rf) -} - -#define macro READ_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - // The execution function signature of Sequence is 0x7a9a1628 - - __RIGHTPAD(0x7a9a1628) // [0x7a9a1628, windex, rindex] - dup2 // [windex, 0x7a9a1628, windex, rindex] - mstore // [windex, rindex] - 0x04 add // [windex, rindex] - - // The first value is always where do the list of transactions starts - // this is always the same, as the list of transactions is the first - // dynamic type - - 0x60 // [0x60, windex, rindex] - dup2 // [windex, 0x60, windex, rindex] - mstore // [windex, rindex] - 0x20 add // [windex, rindex] - - // Reading the nonce is the simplest one, it is just a value - - READ_NONCE() // [windex, rindex] - - // We can't know when the signature will start, since we need to - // read the list of transactions first. So we leave a copy of the pointer - // to write it later. - - swap1 // [rindex, windex] - dup2 // [windex, rindex, prev_windex] - 0x20 add // [windex, rindex, prev_windex] - - // We start reading the transactions, the macro takes care of writting the - // internal pointers for them (and the number of transactions) - - READ_TRANSACTIONS() // [windex, rindex, prev_windex] - - // The signature starts at windex - prev_windex + 0x20 - // and the pointer needs to be written to prev_windex - - swap1 // [rindex, windex, prev_windex] - swap2 // [prev_windex, windex, rindex] - dup1 // [prev_windex, prev_windex, windex, rindex] - dup3 // [windex, prev_windex, prev_windex, windex, rindex] - sub // [(windex - prev_windex), prev_windex, windex, rindex] - 0x40 add // [sig_starts, prev_windex, windex, rindex] - swap1 // [prev_windex, sig_starts, windex, rindex] - - mstore // [windex, rindex] - - // Now we can read the signature, we just read a nested flag, it can generate - // a Sequence signature. We only need to take care of the size and the padding - - 0x20 add // [windex, rindex] - swap1 // [rindex, windex] - dup2 // [windex, rindex, prev_index] - - PERFORM_NESTED_READ_FLAG() - - swap1 // [rindex, windex, prev_windex] - swap2 // [prev_windex, windex, rindex] - dup1 // [prev_windex, prev_windex, windex, rindex] - dup3 // [windex, prev_windex, prev_windex, windex, rindex] - sub // [size, prev_windex, windex, rindex] - dup1 // [size, size, prev_windex, windex, rindex] - swap2 // [prev_windex, size, size, windex, rindex] - 0x20 swap1 sub // [size_place, size, size, windex, rindex] - mstore // [size, windex, rindex] - - // Last thing is handling the padding, bytes need to be multiple of 0x20 - - callvalue // [0x00, size, windex, rindex] - dup3 // [windex, 0x00, size, windex, rindex] - mstore // [size, windex, rindex] - - 0x1f and // [size % 32, windex, rindex] - 0x20 sub // [pad_diff, windex, rindex] - 0x1f and // [pad_diff % 32, windex, rindex] - add // [(padd_diff + windex), rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_NONCE_STANDALONE() = takes (2) returns (2) { - skip jump - rf: - FN_READ_FLAG(rf) - skip: - READ_NONCE(rf) -} - -#define macro READ_NONCE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - BACKREAD_SINGLE_VALUE() // [val, windex, rindex] - - 0x60 shl // [space, windex, rindex] - - swap2 // [rindex, windex, space] - swap1 // [windex, rindex, space] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, space] - BACKREAD_SINGLE_VALUE() // [nonce, windex, rindex, space] - - // Assume that we are reading the nonce already masked - - swap1 // [windex, nonce, rindex, space] - swap2 // [rindex, nonce, windex, space] - swap3 // [space, nonce, windex, rindex] - or // [(space | nonce), windex, rindex] - - // Now we have the compact representation of the nonce - // we can write it to memory on windex - - dup2 // [windex, (space | nonce), windex, rindex] - mstore // [windex, rindex] - - 0x20 add // [windex + 0x20, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_TRANSACTIONS_STANDALONE() = takes (2) returns (2) { - skip jump - rf: - FN_READ_FLAG(rf) - skip: - READ_TRANSACTIONS(rf) -} - -#define macro READ_TRANSACTIONS(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - dup2 // [rindex, windex, rindex] - calldataload // [mem[rindex], windex, rindex] - callvalue byte // [tx_num, windex, rindex] - swap2 // [rindex, windex, tx_num] - 0x01 add // [rindex + 1, windex, tx_num] - callvalue // [i, rindex, windex, tx_num] - - swap3 // [tx_num, rindex, windex, i] - swap2 // [windex, rindex, tx_num, i] - - // Write the number of transactions - - dup3 // [tx_num, windex, rindex, tx_num, i] - dup2 // [windex, tx_num, windex, rindex, tx_num, i] - mstore // [windex, rindex, tx_num, i] - 0x20 add // [windex + 0x20, rindex, tx_num, i] - - // Reserve 32 bytes for each tx (excluding the first one, as we already know) - // these will be used to store start of each tx - - // The first transaction will always start at 0x20 * txs + 0x20 - - dup3 // [tx_num, windex, rindex, tx_num, i] - 0x05 shl // [r_start, windex, rindex, tx_num, i] - dup1 // [r_start, r_start, windex, rindex, tx_num, i] - - dup3 // [windex, r_start, r_start, ts_index, rindex, tx_num, i] - add // [windex, r_start, ts_index, rindex, tx_num, i] - - swap3 // [rindex, r_start, ts_index, windex, tx_num, i] - dup4 // [windex, rindex, r_start, ts_index, windex, tx_num, i] - - do_tx: // [windex, rindex, pos, ts_index, windex, tx_num, i] - - // store pos for this transaction - // but keep a copy of it as it will be used again - - swap2 // [pos, rindex, windex, ts_index, windex, tx_num, i] - dup1 // [pos, pos, rindex, windex, ts_index, windex, tx_num, i] - dup5 // [ts_index, pos, pos, rindex, windex, ts_index, windex, tx_num, i] - mstore // [pos, rindex, windex, ts_index, windex, tx_num, i] - - swap3 // [ts_index, rindex, windex, pos, windex, tx_num, i] - 0x20 add // [ts_index, rindex, windex, pos, windex, tx_num, i] - - swap3 // [pos, rindex, windex, ts_index, windex, tx_num, i] - swap2 // [windex, rindex, pos, ts_index, windex, tx_num, i] - - READ_TRANSACTION() // [windex, rindex, pos, ts_index, prev_windex, tx_num, i] - - // size = windex - prev_windex - - swap4 // [prev_windex, rindex, r_start, ts_index, windex, tx_num, i] - dup5 // [windex, prev_windex, rindex, r_start, ts_index, windex, tx_num, i] - sub // [tx_i_size, rindex, r_start, ts_index, windex, tx_num, i] - - // pos = size + r_start - - swap1 // [rindex, tx_i_size, r_start, ts_index, windex, tx_num, i] - swap2 // [r_start, tx_i_size, rindex, ts_index, windex, tx_num, i] - add // [pos, rindex, ts_index, windex, tx_num, i] - - // Re-arrange the stack, we are about to loop back - - swap1 // [rindex, pos, ts_index, windex, tx_num, i] - dup4 // [windex, rindex, pos, ts_index, windex, tx_num, i] - - // Check if we have more to read - swap6 // [i, rindex, pos, ts_index, windex, tx_num, windex] - 0x01 add // [i + 1, rindex, pos, ts_index, windex, tx_num, windex] - swap6 // [windex, rindex, pos, ts_index, windex, tx_num, i] - dup7 // [i, windex, rindex, pos, ts_index, windex, tx_num, i] - - // The ts_index contains the index of the transaction x 32, we can - // easily get the i and compare it with the len of transactions to know if we must continue or not - - dup7 // [tx_num, i, windex, rindex, pos, ts_index, windex, tx_num, i] - xor do_tx jumpi // [windex, rindex, pos, ts_index, windex, tx_num, i] - - pop // [rindex, pos, ts_index, windex, tx_num, i] - swap5 // [i, pos, ts_index, windex, tx_num, rindex] - pop // [pos, ts_index, windex, tx_num, rindex] - pop // [ts_index, windex, tx_num, rindex] - pop // [windex, tx_num, rindex] - swap1 // [tx_num, windex, rindex] - pop // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_TRANSACTION_STANDALONE() = takes (2) returns (2) { - skip jump - rf: - FN_READ_FLAG(rf) - skip: - READ_TRANSACTION(rf) -} - -#define macro READ_TRANSACTION(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - // The first byte gives us information about what the transaction contains - - dup2 // [rindex, windex, rindex] - calldataload // [cdata[rindex], windex, rindex] - callvalue byte // [tflag, windex, rindex] - swap2 // [rindex, windex, tflag] - 0x01 add // [rindex + 1, windex, tflag] - swap2 // [tflag, windex, rindex + 1] - - // First bit of the flag determines if the transaction uses delegateCall - - dup1 // [tflag, tflag, windex, rindex] - 0x07 shr // [tflag >> 0x07, tflag, windex, rindex] - dup3 // [windex, tflag >> 0x07, tflag, windex, rindex] - mstore // [tflag, windex, rindex] - - swap1 // [windex, tflag, rindex] - 0x20 add // [windex + 0x20, tflag, rindex] - - // Second bit of the flag determines if the transaction uses revertOnError - - dup2 // [tflag, windex, tflag, rindex] - 0x06 shr // [tflag >> 0x06, windex, tflag, rindex] - 0x01 and // [tflag >> 0x06 & 0x01, windex, tflag, rindex] - dup2 // [windex, tflag >> 0x06 & 0x01, windex, tflag, rindex] - mstore // [windex, tflag, rindex] - - 0x20 add // [windex + 0x20, tflag, rindex] - - // Third bit of the flag determines if the transaction has a defined gasLimit - - dup2 // [tflag, windex, tflag, rindex] - 0x05 shr // [tflag >> 0x05, windex, tflag, rindex] - 0x01 and // [has_gas_limit, windex, tflag, rindex] - has_gas_limit jumpi // [windex, tflag, rindex] - - // The transaction has no gas_limit, we still need to write 0s - // to the memory and push the write index - - callvalue dup2 mstore // [windex, tflag, rindex] - 0x20 add // [windex + 0x20, tflag, rindex] - - // Re-arrange the stack so it matches the other branch - - swap1 // [tflag, windex, rindex] - swap2 // [rindex, windex, tflag] - swap1 // [windex, rindex, tflag] - - end_gas_Limit_if jump - - has_gas_limit: - - // Read advanced; this should only increase 32 bytes - // but we don't check that, buyer beware - - swap1 // [tflag, windex, rindex] - swap2 // [rindex, windex, tflag] - swap1 // [windex, rindex, tflag] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, tflag] - - end_gas_Limit_if: - - // All transactions must define an address - // this is simple, as it is just one more flag - - PERFORM_NESTED_READ_FLAG() - - // 4th bit of the flag determines if the transaction has a defined value - - dup3 // [tflag, windex, rindex, tflag] - 0x04 shr // [tflag >> 0x04, windex, rindex, tflag] - 0x01 and // [tflag >> 0x04 & 0x01, windex, rindex, tflag] - has_value jumpi // [windex, rindex, tflag] - - // The transaction has no value, we still need to write 0s - // to the memory and push the write index - - callvalue dup2 mstore // [windex, rindex, tflag] - 0x20 add // [windex + 0x20, rindex, tflag] - end_value_if jump - - has_value: - - // Read advanced; this should only increase 32 bytes - // but we don't check that, buyer beware - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, tflag] - - end_value_if: - - // 1st bit determines if the transaction has data - - swap2 // [tflag, rindex, windex] - 0x01 and // [has_data, rindex, windex] - - swap1 // [rindex, has_data, windex] - swap2 // [windex, has_data, rindex] - swap1 // [has_data, windex, rindex] - - has_data jumpi // [windex, rindex] - - // The transaction has no data, we still need to write 0s - // both for the pointer and size - - // All tx strucs have the same number of parameters, so 0xc0 is always the correct - //place for the start of the bytes data - - 0xc0 // [0xc0, windex, rindex] - dup2 // [windex, 0xc0, windex, rindex] - mstore // [windex, rindex] - - 0x20 // [0x20, windex, rindex] - add // [(0x20 + windex), rindex] - callvalue // [0x00, (0x20 + windex), rindex] - dup2 // [(0x20 + windex), 0x00, (0x20 + windex), rindex] - mstore // [windex, rindex] - - 0x20 // [0x20, windex, rindex] - add // [(0x20 + windex), rindex] - - end_data_if jump - - has_data: // [windex, rindex] - - // All tx strucs have the same number of parameters, so 0xc0 is always the correct - //place for the start of the bytes data - - 0xc0 // [0xc0, windex, rindex] - dup2 // [windex, 0xc0, windex, rindex] - mstore // [windex, rindex] - 0x20 add // [windex, rindex] - - // Leave some room to store the size of the data - 0x20 add // [windex + 0x20, rindex, prev_windex] - - swap1 // [rindex, windex] - dup2 // [windex, rindex, prev_windex] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, prev_windex] - - dup3 // [prev_windex, windex, rindex, prev_windex] - dup2 // [windex, prev_windex, windex, rindex, prev_windex] - sub // [size, windex, rindex, prev_windex] - - dup1 // [size, size, windex, rindex, prev_windex] - - 0x20 // [0x20, size, size, windex, rindex, prev_windex] - dup6 // [prev_windex, 0x20, size, size, windex, rindex, prev_windex] - sub // [(prev_windex - 0x20), size, size, windex, rindex, prev_windex] - mstore // [size, windex, rindex, prev_windex] - - // Write some zeros just in case - callvalue // [0x00, size, windex, rindex, prev_windex] - dup3 // [windex, 0x00, size, windex, rindex, prev_windex] - mstore // [size, windex, rindex, prev_windex] - - // Advance the windex enough so index becomes divisible by 32 - 0x1f and // [size % 32, windex, rindex, prev_windex] - 0x20 sub // [pad_diff, windex, rindex, prev_windex] - 0x1f and // [pad_diff % 32, windex, rindex, prev_windex] - add // [windex + pad_diff, rindex, prev_windex] - - swap2 // [prev_windex, rindex, windex + pad_diff] - pop // [rindex, windex] - swap1 // [windex, rindex] - - end_data_if: -} - -#define macro READ_SELF_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - // The SELF execution function signature of Sequence is 0x61c2926c - - __RIGHTPAD(0x61c2926c) // [0x61c2926c, windex, rindex] - dup2 // [windex, 0x61c2926c, windex, rindex] - mstore // [windex, rindex] - 0x04 add // [windex, rindex] - - // We need to write a single 0x20, this marks the position - // of the list of transactions. It is always the same. - 0x20 // [0x20, windex, rindex] - dup1 // [0x20, 0x20, windex, rindex] - dup3 // [windex, 0x20, 0x20, windex, rindex] - mstore // [0x20, windex, rindex] - add // [(0x20 + windex), rindex] - - // Now we can just read the list of transactions - // the macro handles all internal pointers - - READ_TRANSACTIONS() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_4_BYTES() = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - // Ideally we don't ask for table_start as an argument, we use it as a constant directly here - // but huff has a bug, if a table is used on a macro, and the macro is used many times, it will - // create copies of the table. This increases the file size a lot (2x) so I decided to have a single - // copy of the 4 bytes table. - - swap2 // [rindex, windex, table_start] - LOAD_1_BYTE() // [index, rindex, windex, table_start] - - // The 4 bytes may be provided either as an index (1 byte) - // of the known 4bytes table, or as 00 and the real 4 bytes - // 90% of the transactions use one of the common 4bytes - - dup1 // [index, index, rindex, windex, table_start] - is_index jumpi // [index, rindex, windex, table_start] - - // is_not_index: - pop // [rindex, windex, table_start] - swap2 // [table_start, windex, rindex] - pop // [windex, rindex] - - 0x04 // [0x04, windex, rindex] - dup1 // [0x04, 0x04, windex, rindex] - dup4 // [rindex, 0x04, 0x04, windex, rindex] - dup4 // [windex, rindex, 0x04, 0x04, windex, rindex] - calldatacopy // [0x04, windex, rindex] - - swap2 // [rindex, windex, 0x04] - dup3 // [0x04, rindex, windex, 0x04] - add // [(0x04 + rindex), windex, 0x04] - swap2 // [0x04, windex, (0x04 + rindex)] - add // [(0x04 + windex), (0x04 + rindex)] - end_if jump - - is_index: // [index, rindex, windex, table_start] - 0x04 // [0x04, index, rindex, windex, table_start] - swap1 // [index, 0x04, rindex, windex, table_start] - 0x02 // [0x02, index, 0x04, rindex, windex, table_start] - shl // [(index << 0x02), 0x04, rindex, windex, table_start] - - swap1 // [0x04, (index << 0x02), rindex, windex, table_start] - swap2 // [rindex, (index << 0x02), 0x04, windex, table_start] - swap4 // [table_start, (index << 0x02), 0x04, windex, rindex] - - add // [(table_start + (index << 0x02)), 0x04, windex, rindex] - dup3 // [windex, (table_start + (index << 0x02)), 0x04, windex, rindex] - codecopy // [windex, rindex] - - 0x04 add // [windex + 0x04, rindex] - - end_if: - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_0() = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - READ_ABI_4_BYTES() - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_1(nrfs) = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - READ_ABI_4_BYTES() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_2(nrfs) = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - READ_ABI_4_BYTES() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_3(nrfs) = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - READ_ABI_4_BYTES() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_4(nrfs) = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - READ_ABI_4_BYTES() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_5(nrfs) = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - READ_ABI_4_BYTES() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_6(nrfs) = takes (3) returns (2) { - // input stack: [table_start, windex, rindex] - - READ_ABI_4_BYTES() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_ABI_DYNAMIC(nrfs) = takes(3) returns (2) { - // input stack: [table_start, windex, rindex] - - READ_ABI_4_BYTES() // [table_start, windex, rindex] - - // First byte determines the number of parameters - - dup1 // [windex, windex, rindex] - swap2 // [rindex, windex, windex] - dup1 // [rindex, rindex, windex, windex] - calldataload // [word, rindex, windex, windex] - callvalue byte // [size, rindex, windex, windex] - swap1 // [rindex, size, windex, windex] - 0x01 add // [rindex, size, windex, windex] - - // Second is a bitmap, it determines which - // parameters are dynamic and which ones are static - // notice: this limits dynamic parameters to the first 8 ones - // all other ones are automatically considered static - - dup1 // [rindex, rindex, size, windex, windex] - calldataload // [word, rindex, size, windex, windex] - callvalue byte // [d_bitmap, rindex, size, windex, windex] - swap1 // [rindex, d_bitmap, size, windex, windex] - 0x01 add // [rindex, d_bitmap, size, windex, windex] - - callvalue // [0x00, rindex, d_bitmap, size, windex] - - // We will need to have two write indexes, one for the pointers (or values) - // and another one for the data blobs. The data blobs are the actual data - // of the dynamic parameters. It starts on (windex + size * 0x20). - - dup5 // [windex, i, rindex, d_bitmap, size, windex, windex] - dup5 // [size, windex, i, rindex, d_bitmap, size, windex, windex] - 0x05 shl // [size * 0x20, windex, i, rindex, d_bitmap, size, windex, windex] - add // [bwindex, i, rindex, d_bitmap, size, windex, windex] - - read_param: // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - - // We read the bitmap and determine if the param is dynamic or not - dup4 // [d_bitmap, bwindex, i, rindex, d_bitmap, size, windex, swindex] - 0x01 // [0x01, d_bitmap, bwindex, i, rindex, d_bitmap, size, windex, swindex] - dup4 // [i, 0x01, d_bitmap, bwindex, i, rindex, d_bitmap, size, windex, swindex] - shl // [(0x01 << i), d_bitmap, bwindex, i, rindex, d_bitmap, size, windex, swindex] - and // [is_dynamic, bwindex, i, rindex, d_bitmap, size, windex, swindex] - - is_dynamic jumpi // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - - // is_not_dynamic: - - // The parameter is not dynamic, we just need to read one value on windex - // and we can continue - - swap2 // [rindex, i, bwindex, d_bitmap, size, windex, swindex] - swap1 // [i, rindex, bwindex, d_bitmap, size, windex, swindex] - swap5 // [windex, rindex, bwindex, d_bitmap, size, i, swindex] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex, bwindex, d_bitmap, size, i, swindex] - - // We trust that we only increased windex by 0x20, and we keep iterating - swap5 // [i, rindex, bwindex, d_bitmap, size, windex, swindex] - 0x01 add // [i + 1, rindex, bwindex, d_bitmap, size, windex, swindex] - - swap1 // [rindex, i, bwindex, d_bitmap, size, windex, swindex] - swap2 // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - dup5 // [size, bwindex, i, rindex, d_bitmap, size, windex, swindex] - dup3 // [i, size, bwindex, i, rindex, d_bitmap, size, windex, swindex] - lt // [(i < size), bwindex, i, rindex, d_bitmap, size, windex, swindex] - read_param jumpi // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - break jump - - is_dynamic: // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - - // The parameter is dynamic, we are going to write it on bwindex - // but we need to: - // - save the pointer, since there we are going to store the size - // - keep a copy of the pointer, so we can determine the size - // - pad the end result to 32 bytes - // - store in windex a pointer to bwindex - - // The data pointer should lead to bwindex - swindex - dup7 // [swindex, bwindex, i, rindex, d_bitmap, size, windex, swindex] - dup2 // [bwindex, swindex, bwindex, i, rindex, d_bitmap, size, windex, swindex] - sub // [d_pointer, bwindex, i, rindex, d_bitmap, size, windex, swindex] - dup7 // [windex, d_pointer, bwindex, i, rindex, d_bitmap, size, windex, swindex] - mstore // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - swap5 // [windex, i, rindex, d_bitmap, size, bwindex, swindex] - 0x20 add // [windex + 0x20, i, rindex, d_bitmap, size, bwindex, swindex] - - dup6 // [bwindex, windex, i, rindex, d_bitmap, size, bwindex, swindex] - 0x20 add // [bwindex + 0x20, windex, i, rindex, d_bitmap, size, bwindex, swindex] - swap3 // [rindex, windex, i, bwindex, d_bitmap, size, size_b_pointer, swindex] - dup4 // [bwindex, rindex, windex, i, bwindex, d_bitmap, size, size_b_pointer, swindex] - - PERFORM_NESTED_READ_FLAG() // [bwindex, rindex, windex, i, prev_bwindex, d_bitmap, size, size_b_pointer, swindex] - - swap4 // [prev_bwindex, rindex, windex, i, bwindex, d_bitmap, size, size_b_pointer, swindex] - dup5 // [bwindex, prev_bwindex, rindex, windex, i, bwindex, d_bitmap, size, size_b_pointer, swindex] - sub // [b_size, rindex, windex, i, bwindex, d_bitmap, size, size_b_pointer, swindex] - - dup1 // [b_size, b_size, rindex, windex, i, bwindex, d_bitmap, size, size_b_pointer, swindex] - swap8 // [size_b_pointer, b_size, rindex, windex, i, bwindex, d_bitmap, size, b_size, swindex] - mstore // [rindex, windex, i, bwindex, d_bitmap, size, b_size, swindex] - - // Last we need to pad the bwindex - callvalue // [0x00, rindex, windex, i, bwindex, d_bitmap, size, b_size] - dup5 // [bwindex, 0x00, rindex, windex, i, bwindex, d_bitmap, size, b_size, swindex] - mstore // [rindex, windex, i, bwindex, d_bitmap, size, b_size, swindex] - - swap3 // [bwindex, windex, i, rindex, d_bitmap, size, b_size, swindex] - swap1 // [windex, bwindex, i, rindex, d_bitmap, size, b_size, swindex] - swap6 // [b_size, bwindex, i, rindex, d_bitmap, size, windex, swindex] - - 0x1f and // [b_size % 32, bwindex, i, rindex, d_bitmap, size, windex, swindex] - 0x20 sub // [pad_diff, bwindex, i, rindex, d_bitmap, size, windex, swindex] - 0x1f and // [pad_diff % 32, bwindex, i, rindex, d_bitmap, size, windex, swindex] - add // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - - swap1 // [i, bwindex, rindex, d_bitmap, size, windex, swindex] - 0x01 add // [i + 1, bwindex, rindex, d_bitmap, size, windex, swindex] - swap1 // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - - dup5 // [size, bwindex, i, rindex, d_bitmap, size, windex, swindex] - dup3 // [i, size, bwindex, i, rindex, d_bitmap, size, windex, swindex] - lt // [(i < size), bwindex, i, rindex, d_bitmap, size, windex, swindex] - read_param jumpi // [bwindex, i, rindex, d_bitmap, size, windex, swindex] - - break: - - // We have finished! we only need to clear the stack - // notice that bwindex is the windex now - swap5 // [windex, i, rindex, d_bitmap, size, bwindex, swindex] - pop // [i, rindex, d_bitmap, size, bwindex, swindex] - pop // [rindex, d_bitmap, size, bwindex, swindex] - swap4 // [swindex, d_bitmap, size, bwindex, rindex] - pop // [d_bitmap, size, bwindex, rindex] - pop // [size, bwindex, rindex] - pop // [bwindex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_BYTES32(shift_bits, read_bytes) = takes (2) returns (2) { - // input stack: [windex, rindex] - - 0x20 // [0x20, windex, rindex] - - dup3 // [rindex, 0x20, windex, rindex] - calldataload // [word, 0x20, windex, rindex] - - // Shift to the right so we only read the first bits - shr // [word >> , 0x20, windex, rindex] - - // Store on windex - dup3 // [windex, word >> , 0x20, windex, rindex] - mstore // [0x20, windex, rindex] - - add // [windex + 0x20, rindex] - - swap1 // [rindex, windex + 0x20] - add // [rindex + , windex + 0x20] - swap1 // [windex + 0x20, rindex + ] - - // output stack: [0x20 + windex, valB + rindex] -} - -#define macro READ_BYTES32_WORD() = takes (3) returns (2) { - // input stack: [windex, rindex] - - 0x20 // [0x20, windex, rindex] - dup1 // [0x20, 0x20, windex, rindex] - - dup4 // [rindex, 0x20, 0x20, windex, rindex] - calldataload // [word, 0x20, 0x20, windex, rindex] - - // Store on windex - dup4 // [windex, word >> , 0x20, 0x20, windex, rindex] - mstore // [0x20, 0x20, windex, rindex] - - swap3 // [rindex, 0x20, 0x20, windex] - add // [rindex + 0x20, 0x20, windex] - swap2 // [windex, 0x20, rindex + 0x20] - add // [windex + 0x20, rindex + 0x20] - - // output stack: [windex + 0x20, rindex + 0x20] -} - -#define macro SAVE_ADDRESS() = takes (3) returns (2) { - // input stack: [windex, rindex] - - dup2 // [rindex, windex, rindex] - calldataload // [word, windex, rindex] - - // Clean the address before storing it - // shifting it to the right by 0x60 bits - - 0x60 shr // [addr, windex, rindex] - - dup1 // [addr, addr, windex, rindex] - dup3 // [windex, addr, addr, windex, rindex] - mstore // [addr, windex, rindex] - - PULL_ADDRESS() ADDRESS_STORAGE_POINTER() sstore // [windex, rindex] - - // Add 32 bytes to windex and 20 to rindex - 0x20 add // [windex + 0x20, rindex] - swap1 // [rindex, windex + 0x20] - 0x14 add // [rindex + 0x14, windex + 0x20] - swap1 // [windex + 0x20, rindex + 0x14] - - // output stack: [windex + 0x20, rindex + 0x14] -} - -#define macro SAVE_BYTES32() = takes (3) returns (2) { - // input stack: [windex, rindex] - - dup2 // [rindex, windex, rindex] - calldataload // [word, windex, rindex] - - dup1 // [word, word, windex, rindex] - - dup3 // [windex, word, word, windex, rindex] - mstore // [word, windex, rindex] - - PULL_BYTES32() BYTES32_STORAGE_POINTER() sstore // [windex, rindex] - - // Add 32 bytes to both indexes - - 0x20 dup1 // [0x20, 0x20, windex, rindex] - swap3 // [rindex, 0x20, windex, 0x20] - add // [rindex + 0x20, 0x20, windex] - - swap2 // [windex, 0x20, rindex + 0x20] - add // [windex + 0x20, rindex + 0x20] - - // output stack: [windex + 32, rindex + 32] -} - -// Reads a stored bytes32 using a 2 to 5 bytes pointer index -#define macro READ_BYTES32_STORAGE(read_bytes, read_bits_shift) = takes (3) returns (2) { - READ_STORAGE(BYTES32_SMV, shl, , ) -} - -#define macro READ_ADDRESS_STORAGE(read_bytes, read_bits_shift) = takes (3) returns (2) { - READ_STORAGE(ADDRESS_SMV, add, , ) -} - -#define macro READ_STORAGE(smv, smc, read_bytes, read_bits_shift) = takes (3) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_DYNAMIC_SIZE(, ) // [index, nrindex + size, windex] - sload // [bytes32, nrindex + size, windex] - - dup3 // [windex, bytes32, nrindex + size, windex] - mstore // [nrindex + size, windex] - - swap1 // [windex, nrindex + size] - - 0x20 add // [windex + 0x20, nrindex + size] - - // output stack: [windex + 0x20, nrindex + size] -} - -#define macro READ_POW_2() = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [exp, rindex, windex] - - // an exp value 0 means that the formula will be 2 ** exp - 1 - // and we need to read a second exponent - - dup1 // [exp, exp, rindex, windex] - dont_sub_1 jumpi // [exp, rindex, windex] - - //sub_1: - pop // [rindex, windex] - - LOAD_1_BYTE() // [exp, rindex, windex] - - 0x01 // [0x01, exp, rindex, windex] - dup1 // [0x01, 0x01, exp, rindex, windex] - swap2 // [exp, 0x01, 0x01, rindex, windex] - dup3 // [0x01, exp, 0x01, 0x01, rindex, windex] - - add // [(0x01 + exp), 0x01, 0x01, rindex, windex] - shl // [(0x01 << (0x01 + exp)), 0x01, rindex, windex] - sub // [((0x01 << (0x01 + exp)) - 0x01), rindex, windex] - - end_if jump - - dont_sub_1: - 0x01 // [0x01, exp, rindex, windex] - swap1 // [exp, 0x01, rindex, windex] - shl // [(0x01 << exp), rindex, windex] - - end_if: - - dup3 // [windex, (0x01 << exp), rindex, windex] - swap2 // [rindex, (0x01 << exp), windex, windex] - swap3 // [windex, (0x01 << exp), windex, rindex] - - mstore // [windex, rindex] - 0x20 add // [windex + 0x20, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_N_BYTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - BACKREAD_SINGLE_VALUE() // [size, windex, rindex] - - dup2 // [windex, size, windex, rindex + 1] - dup2 add // [windex + size, size, windex, rindex + 1] - swap2 // [windex, size, windex + size, rindex + 1] - - dup4 // [rindex + 1, windex, size, windex + size, rindex + 1] - dup3 // [size, rindex + 1, windex, size, windex + size, rindex + 1] - add // [rindex + 1 + size, windex, size, windex + size, rindex + 1] - swap4 // [rindex + 1, windex, size, windex + size, rindex + 1 + size] - swap1 // [windex, rindex + 1, size, windex + size, rindex + 1 + size] - - calldatacopy // [windex, rindex + 1 + size] - - // output stack: [windex + size, rindex + size] -} - -#define macro LOAD_1_BYTE() = takes (1) returns (2) { - // input stack: [rindex] - - dup1 // [rindex, rindex] - 0x01 // [0x01, rindex, rindex] - add // [(0x01 + rindex), rindex] - swap1 // [rindex, (0x01 + rindex)] - - calldataload // [data[rindex], (0x01 + rindex)] - - callvalue // [0x00, data[rindex], (0x01 + rindex)] - byte // [byte[0x00], (0x01 + rindex)] - - // output stack: [value, rindex] -} - -#define macro LOAD_DYNAMIC_SIZE(read_bytes, read_bits_shift) = takes (1) returns (2) { - // input stack: [rindex] - - dup1 // [rindex, rindex] - - add // [rindex + size, rindex] - swap1 // [rindex, rindex + size] - - calldataload // [cdata[rindex], rindex] - - // Value needs to be shifted, so we only read - // the first "size" bytes - - // [size, cdata[rindex], rindex] - shr // [cdata[rindex] >> size bits, size + rindex] - - // output stack: [cdata[rindex] >> size bits, size + rindex] -} - -#[calldata("0xb2d10eb37ef5838bb835ea71bbd4053daf8de7bd8ecdf638451a2bc966a145a899")] -#define test TEST_SAVE_BYTES32() = { - 0x01 // [rindex] - 0x20 // [windex, rindex] - - SAVE_BYTES32() // [windex, rindex] - - 0x40 eq ASSERT() // [] - 0x21 eq ASSERT() // [rindex] - - // Validate that memory was written correctly - - 0x20 mload // [mem[0x20]] () - 0xd10eb37ef5838bb835ea71bbd4053daf8de7bd8ecdf638451a2bc966a145a899 - - eq ASSERT() // [] - - // Validate that the written address is correct - 0x01 0x80 shl sload // [addr] - 0xd10eb37ef5838bb835ea71bbd4053daf8de7bd8ecdf638451a2bc966a145a899 eq ASSERT() // [] - - // Validate that the total increased to 1 - BYTES32_NUM() 0x01 eq ASSERT() // [] -} - -#[calldata("0x0201f020c002f1e0040203")] -#define test TEST_READ_BYTES32() = { - // Save 3 different bytes32 values - - 0xfe9716a384ec3b055bb8aae87323a14412cbfceb52c95324dccf071fb3f83855 - 0x0201 0x80 shl sstore - - 0xcf85e6408b0191a7ed9970e635257854b95aa7b708f485ae667e6fd467e5f45e - 0xf020c002 0x80 shl sstore - - 0xa577e893e614c9aa4b19f2369e1c177adab9fe3156970a39afc166c0f2d905ee - 0xf1e0040203 0x80 shl sstore - - // Read the first bytes32 - 0x00 // [rindex] - 0x00 // [windex, rindex] - - READ_BYTES32_STORAGE(0x02, 0xf0) // [windex, rindex] - - 0x20 eq ASSERT() // [rindex] - 0x02 eq ASSERT() // [] - - 0x00 mload 0xfe9716a384ec3b055bb8aae87323a14412cbfceb52c95324dccf071fb3f83855 eq ASSERT() // [] - - // Read the second bytes32 - 0x02 // [rindex] - 0x20 // [windex, rindex] - - READ_BYTES32_STORAGE(0x04, 0xe0) // [windex, rindex] - - 0x40 eq ASSERT() // [rindex] - 0x06 eq ASSERT() // [] - - 0x20 mload 0xcf85e6408b0191a7ed9970e635257854b95aa7b708f485ae667e6fd467e5f45e eq ASSERT() // [] - - // Read the third bytes32 - 0x06 // [rindex] - 0x10 // [windex, rindex] - - READ_BYTES32_STORAGE(0x05, 0xd8) // [windex, rindex] - - 0x30 eq ASSERT() // [rindex] - 0x0b eq ASSERT() // [] - - 0x10 mload 0xa577e893e614c9aa4b19f2369e1c177adab9fe3156970a39afc166c0f2d905ee eq ASSERT() // [] -} - -#[calldata("0x0201f020c002f1e0040203")] -#define test TEST_READ_ADDRESS() = { - // Save 3 different bytes32 values - - 0x000000000000000000000000d789f5242a537b0584893b564a8c7a4be35b9238 - 0x0201 ADDRESS_STORAGE_POINTER() sstore - - 0x000000000000000000000000d5b5127436fd875ab7c334dffb62533ba011c2d9 - 0xf020c002 ADDRESS_STORAGE_POINTER() sstore - - 0x0000000000000000000000008a745d2b92c6e02e8ed087581c63d073f98f2479 - 0xf1e0040203 ADDRESS_STORAGE_POINTER() sstore - - // Read the first bytes32 - 0x00 // [rindex] - 0x00 // [windex, rindex] - - READ_ADDRESS_STORAGE(0x02, 0xf0) // [windex, rindex] - - 0x20 eq ASSERT() // [rindex] - 0x02 eq ASSERT() // [] - - 0x00 mload 0x000000000000000000000000d789f5242a537b0584893b564a8c7a4be35b9238 eq ASSERT() // [] - - // Read the second bytes32 - 0x02 // [rindex] - 0x20 // [windex, rindex] - - READ_ADDRESS_STORAGE(0x04, 0xe0) // [windex, rindex] - - 0x40 eq ASSERT() // [rindex] - 0x06 eq ASSERT() // [] - - 0x20 mload 0x000000000000000000000000d5b5127436fd875ab7c334dffb62533ba011c2d9 eq ASSERT() // [] - - // Read the third bytes32 - 0x06 // [rindex] - 0x10 // [windex, rindex] - - READ_ADDRESS_STORAGE(0x05, 0xd8) // [windex, rindex] - - 0x30 eq ASSERT() // [rindex] - 0x0b eq ASSERT() // [] - - 0x10 mload 0x0000000000000000000000008a745d2b92c6e02e8ed087581c63d073f98f2479 eq ASSERT() // [] -} - - -#[calldata("0x000203ff00ff")] -#define test TEST_READ_POW_2() = takes (2) returns (2) { - 0x00 // [rindex] - 0x00 // [windex, rindex] - - READ_POW_2() // [windex, rindex] - - 0x20 eq ASSERT() // [rindex] - 0x02 eq ASSERT() // [] - - 0x00 mload 0x07 eq ASSERT() // [] - - 0x01 // [rindex] - 0x20 // [windex, rindex] - - READ_POW_2() // [windex, rindex] - - 0x40 eq ASSERT() // [rindex] - 0x02 eq ASSERT() // [] - - 0x20 mload 0x04 eq ASSERT() // [] - - 0x02 // [rindex] - 0x05 // [windex, rindex] - - READ_POW_2() // [windex, rindex] - - 0x25 eq ASSERT() // [rindex] - 0x03 eq ASSERT() // [] - - 0x05 mload 0x08 eq ASSERT() // [] - - 0x03 // [rindex] - 0x00 // [windex, rindex] - - READ_POW_2() // [windex, rindex] - - 0x20 eq ASSERT() // [rindex] - 0x04 eq ASSERT() // [] - - 0x00 mload 0x8000000000000000000000000000000000000000000000000000000000000000 eq ASSERT() // [] - - 0x04 // [rindex] - 0x00 // [windex, rindex] - - READ_POW_2() // [windex, rindex] - - 0x20 eq ASSERT() // [rindex] - 0x06 eq ASSERT() // [] - - 0x00 mload 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff eq ASSERT() // [] -} - -#[calldata("0xb2d10eb37ef5838bb835ea71bbd4053daf8de7bd8ecdf638451a2bc966a145a899")] -#define test TEST_LOAD_DYNAMIC_SIZE() = { - 0x00 // [rindex] - - LOAD_DYNAMIC_SIZE(0x02, 0xf0) // [val, nrindex + size] - - 0xb2d1 eq ASSERT() // [rindex] - 0x02 eq ASSERT() // [] - - 0x04 // [rindex] - - LOAD_DYNAMIC_SIZE(0x05, 0xd8) // [val, nrindex + size] - - 0x7ef5838bb8 eq ASSERT() // [rindex] - 0x09 eq ASSERT() // [] -} - -#[calldata("0x02f1f2")] -#define test TEST_READ_FLAG_2_BYTES() = { - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - 0x20 [FMS] add eq ASSERT() // [rindex] - 0x03 eq ASSERT() // [] - - [FMS] mload 0xf1f2 eq ASSERT() // [] -} - -#define test TEST_NUMS() = { - ADDRESSES_NUM() // [num] - 0x00 eq ASSERT() // [] - - PULL_ADDRESS() // [nnum] - 0x01 eq ASSERT() // [] - - ADDRESSES_NUM() // [num] - 0x01 eq ASSERT() // [] - - PULL_ADDRESS() // [nnum] - 0x02 eq ASSERT() // [] - - ADDRESSES_NUM() // [num] - 0x02 eq ASSERT() // [] - - PULL_BYTES32() // [nnum] - 0x01 eq ASSERT() // [] - - BYTES32_NUM() // [num] - 0x01 eq ASSERT() // [] - - ADDRESSES_NUM() // [num] - 0x02 eq ASSERT() // [] - - PULL_ADDRESS() // [nnum] - 0x03 eq ASSERT() // [] - - BYTES32_NUM() // [nnum] - 0x01 eq ASSERT() // [] - - PULL_BYTES32() // [nnum] - 0x02 eq ASSERT() // [] - - BYTES32_NUM() // [num] - 0x02 eq ASSERT() // [] - - ADDRESSES_NUM() // [num] - 0x03 eq ASSERT() // [] -} - -#[calldata("0xb2d10eb37ef5838bb835ea71bbd4053daf8de7bd8ecdf638451a2bc966a145a8")] -#define test TEST_FLAG_READ_BYTES32() = { - 0x01 // [rindex] - [FMS] 0x40 add // [windex, rindex] - - READ_BYTES32(0xf0, 0x02) // [windex, rindex] - - [FMS] 0x60 add eq ASSERT() // [rindex] - 0x03 eq ASSERT() // [] - - [FMS] 0x40 add mload 0xd10e eq ASSERT() // [] - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_BYTES32(0x00, 0x20) // [windex, rindex] - - [FMS] 0x20 add eq ASSERT() // [rindex] - 0x20 eq ASSERT() // [] - - [FMS] mload 0xb2d10eb37ef5838bb835ea71bbd4053daf8de7bd8ecdf638451a2bc966a145a8 eq ASSERT() // [] - - 0x00 // [rindex] - [FMS] 0x40 add // [windex, rindex] - - READ_BYTES32_WORD() // [windex, rindex] - - [FMS] 0x60 add eq ASSERT() // [rindex] - 0x20 eq ASSERT() // [] - - [FMS] 0x40 add - mload 0xb2d10eb37ef5838bb835ea71bbd4053daf8de7bd8ecdf638451a2bc966a145a8 eq ASSERT() // [] -} - -// 0xd10eb37ef5838bb835ea71bbd4053daf8de7bd8e -#[calldata("0xb2d10eb37ef5838bb835ea71bbd4053daf8de7bd8ecdf638451a2bc966a145a8")] -#define test TEST_SAVE_ADDRESS() = { - 0x01 // [rindex] - [FMS] // [windex, rindex] - - SAVE_ADDRESS() // [windex, rindex] - - [FMS] 0x20 add eq ASSERT() // [rindex] - 0x15 eq ASSERT() // [] - - // Validate that memory was written correctly - - [FMS] mload // [mem[0x20]] () - 0x000000000000000000000000d10eb37ef5838bb835ea71bbd4053daf8de7bd8e - eq ASSERT() // [] - - // Validate that the written address is correct - 0x02 sload // [addr] - 0x000000000000000000000000d10eb37ef5838bb835ea71bbd4053daf8de7bd8e - eq ASSERT() // [] - - // Validate that the total increased to 1 - ADDRESSES_NUM() 0x01 eq ASSERT() // [] -} - -#define table POW_10_TABLE { - 0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000009896800000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000002540be400000000000000000000000000000000000000000000000000000000174876e800000000000000000000000000000000000000000000000000000000e8d4a51000000000000000000000000000000000000000000000000000000009184e72a00000000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000152d02c7e14af680000000000000000000000000000000000000000000000000d3c21bcecceda1000000000000000000000000000000000000000000000000084595161401484a00000000000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000204fce5e3e250261100000000000000000000000000000000000000000000001431e0fae6d7217caa0000000000000000000000000000000000000000000000c9f2c9cd04674edea40000000000000000000000000000000000000000000007e37be2022c0914b268000000000000000000000000000000000000000000004ee2d6d415b85acef8100000000000000000000000000000000000000000000314dc6448d9338c15b0a00000000000000000000000000000000000000000001ed09bead87c0378d8e6400000000000000000000000000000000000000000013426172c74d822b878fe8000000000000000000000000000000000000000000c097ce7bc90715b34b9f1000000000000000000000000000000000000000000785ee10d5da46d900f436a000000000000000000000000000000000000000004b3b4ca85a86c47a098a22400000000000000000000000000000000000000002f050fe938943acc45f655680000000000000000000000000000000000000001d6329f1c35ca4bfabb9f561000000000000000000000000000000000000000125dfa371a19e6f7cb54395ca000000000000000000000000000000000000000b7abc627050305adf14a3d9e40000000000000000000000000000000000000072cb5bd86321e38cb6ce6682e8000000000000000000000000000000000000047bf19673df52e37f2410011d100000000000000000000000000000000000002cd76fe086b93ce2f768a00b22a0000000000000000000000000000000000001c06a5ec5433c60ddaa16406f5a400000000000000000000000000000000000118427b3b4a05bc8a8a4de845986800000000000000000000000000000000000af298d050e4395d69670b12b7f41000000000000000000000000000000000006d79f82328ea3da61e066ebb2f88a0000000000000000000000000000000000446c3b15f9926687d2c40534fdb5640000000000000000000000000000000002ac3a4edbbfb8014e3ba83411e915e8000000000000000000000000000000001aba4714957d300d0e549208b31adb10000000000000000000000000000000010b46c6cdd6e3e0828f4db456ff0c8ea00000000000000000000000000000000a70c3c40a64e6c51999090b65f67d92400000000000000000000000000000006867a5a867f103b2fffa5a71fba0e7b680000000000000000000000000000004140c78940f6a24fdffc78873d4490d2100000000000000000000000000000028c87cb5c89a2571ebfdcb54864ada834a00000000000000000000000000000197d4df19d605767337e9f14d3eec8920e400000000000000000000000000000fee50b7025c36a0802f236d04753d5b48e800000000000000000000000000009f4f2726179a224501d762422c946590d91000000000000000000000000000063917877cec0556b21269d695bdcbf7a87aa0000000000000000000000000003e3aeb4ae1383562f4b82261d969f7ac94ca40000000000000000000000000026e4d30eccc3215dd8f3157d27e23acbdcfe680000000000000000000000000184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000000000000000f316271c7fc3908a8bef464e3945ef7a25360a000000000000000000000000097edd871cfda3a5697758bf0e3cbb5ac5741c640000000000000000000000005ef4a74721e864761ea977768e5f518bb6891be8000000000000000000000003b58e88c75313ec9d329eaaa18fb92f75215b1710000000000000000000000025179157c93ec73e23fa32aa4f9d3bda934d8ee6a0000000000000000000000172ebad6ddc73c86d67c5faa71c245689c107950240000000000000000000000e7d34c64a9c85d4460dbbca87196b61618a4bd216800000000000000000000090e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000000005a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000003899162693736ac531a5a58f1fbb4b746504382ca7e40000000000000000000235fadd81c2822bb3f07877973d50f28bf22a31be8ee8000000000000000000161bcca7119915b50764b4abe86529797775a5f1719510000000000000000000dd15fe86affad91249ef0eb713f39ebeaa987b6e6fd2a0000000000000000000 -} - -#define table COMMON_4BYTES { - 0x00000000a9059cbb095ea7b37ff36ab538ed173918cbafe5202ee0edfb3bdb41e2bbb158ab834bab6ea056a923b872dda68a76cc5f5755298803dbeea22cb465c89e43612da0340990411a321cff79cd223da1ba2e1a7d4df305d71939125215d0e30db0f7654176a694fc3a1a695230b6b55f25791ac94764887334c658695c441a3e704f1d48324a25d94aa454dfa9c18a84bce2b39746178979aec9807539ddd81f82a8a41c70cf557fe33d18b9129cec63924ab0d1900dcd7a6cd9627aa49149bafe672a9400dfbe4a31c6bf3262f242432ae5ab4da240c10f192e7ba6efc23e1a211aa3a008d6b347f7ded9382a00000003e9fad8eefaebafa8ae169a50e8e3370041fe00a0fa558b712e95b6c8c48fdfca000000006a80c33f627dd56a5c11d7954946e2065e83b463ca722cdcfb90b32000000008f7c1e582a32fe0a1db006a75000000010002191ce6d66ac8a0712d685d5d442296aa7368d3392ddf0ea5812fa5d754d1d29dff129979ef457901451ca64f797659d667a500032587865a6b4f379607f57c02520082d2697fc11695488758a5f34e71d92d9ddd67ba183d4e0b8f69c188e3dec8fbedc9af952d2da8066a761202a9b1d507ca120b1ff14fcbc8961c9ae442842e0e2195995c94b918de608060405174e8532505c3d98568523a0e89439bd149d05cefef39a14ce6931a000225879bfcb236415565b0454a2ab3ce558087f7a1696342966c688b4cb0ec4faa8a26e4a76726e8eda9df1519cdeb356282bfe17376b5009952eb3d7989fe34b0793b38bcdfc0f053566e02751cecc01a8c84f463e18e3cd18ca029ada03907d6b3483805550fa59f3e0c89bbb8b2c5ebeaec4997adb6f5e54063761610fcb88a802f3ccfd60b2e2d726ca4202615b44848f51610ca95bcf64e0579b177ec22895118ed436a474d474898c0f4ed31b967cb0ca6e158f8db7fd4089120491ca415bcad8201aa3f6e5110ae5312ea8e3df02124b77d239ba67a6a45156e29f6241735bbd017e8c73f7658fd86b2ecc4c44193c39bc12042d96a094a13d98d135d4c66a3ad4451a32e17de789ec9b36be47d166cbfff3b87f884e54a0b020003ad58bdd147e7ef24bad42590c8fd6ed002032587c6427474f6162b01baa2abde1ff013f11846eac55915d806f6aa658b00024a9c564a515869328dec4454b20df5298aca853828b6f06427e5b6b4af05f3fef3a352a438b81249c58bfeab2e5af9d83bb568c2c5fb02022587d586d8e0db254e5005eec2890e7527028f4af52f6a627842508c1dbd0f694584a6417ed63049105d1e9a6950d9caed120103258748d5c7e3be389d577430e0c649b780f00af49149d508e6238e1e280cae47bea8683fa88d5db3b4df1e83409a852a12e3c2998238343009a2daa6d5560f0439589c1298a06aa1e6d24d559317 -} diff --git a/packages/wallet-contracts/src/__TEMP__csfnkjajkqagwbukjfojatjegwtjmxhdL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__csfnkjajkqagwbukjfojatjegwtjmxhdL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__csfnkjajkqagwbukjfojatjegwtjmxhdL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__cvwewezvvfcuoxtlisicumgcpzqhgavjL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__cvwewezvvfcuoxtlisicumgcpzqhgavjL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__cvwewezvvfcuoxtlisicumgcpzqhgavjL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__cvyihdgegfauooldcwyvlordhurwepivL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__cvyihdgegfauooldcwyvlordhurwepivL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__cvyihdgegfauooldcwyvlordhurwepivL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__dpdvzwushkgzisywrbnkhcrodypkvbvyL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__dpdvzwushkgzisywrbnkhcrodypkvbvyL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__dpdvzwushkgzisywrbnkhcrodypkvbvyL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__ecomtgzdrtxibkzevmerruajxffksduvL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__ecomtgzdrtxibkzevmerruajxffksduvL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__ecomtgzdrtxibkzevmerruajxffksduvL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__iacuotklnugcaogzpvcdfhvolsvzerleL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__iacuotklnugcaogzpvcdfhvolsvzerleL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__iacuotklnugcaogzpvcdfhvolsvzerleL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__jcmwhtnovsnvnyyhadlushmcopgxtlcwL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__jcmwhtnovsnvnyyhadlushmcopgxtlcwL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__jcmwhtnovsnvnyyhadlushmcopgxtlcwL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__jdfvnyqsqtnysjlyfovitokyykvxttnoL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__jdfvnyqsqtnysjlyfovitokyykvxttnoL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__jdfvnyqsqtnysjlyfovitokyykvxttnoL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__jyyzvebufexucahwkkbkfdcmuiabvbfeL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__jyyzvebufexucahwkkbkfdcmuiabvbfeL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__jyyzvebufexucahwkkbkfdcmuiabvbfeL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__kbisarygvfqaqtuxwpgejdnyqkualpwlL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__kbisarygvfqaqtuxwpgejdnyqkualpwlL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__kbisarygvfqaqtuxwpgejdnyqkualpwlL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__lszmdtforkxonmlujouewhlrvjjrmurcL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__lszmdtforkxonmlujouewhlrvjjrmurcL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__lszmdtforkxonmlujouewhlrvjjrmurcL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__mgltnswskwojupcsygtzovabokiotusaL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__mgltnswskwojupcsygtzovabokiotusaL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__mgltnswskwojupcsygtzovabokiotusaL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__mzwfsngwzygdglttftvfnbgkuxhmtqwiL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__mzwfsngwzygdglttftvfnbgkuxhmtqwiL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__mzwfsngwzygdglttftvfnbgkuxhmtqwiL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__nxqmasuaqrahclmuoszdisbtgmuppjvfL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__nxqmasuaqrahclmuoszdisbtgmuppjvfL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__nxqmasuaqrahclmuoszdisbtgmuppjvfL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__pgmagdckbktfjhzdpajytwhcpkhlmscqL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__pgmagdckbktfjhzdpajytwhcpkhlmscqL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__pgmagdckbktfjhzdpajytwhcpkhlmscqL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__pwbfbdaeweytjiloryhjilsqguaprwtwL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__pwbfbdaeweytjiloryhjilsqguaprwtwL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__pwbfbdaeweytjiloryhjilsqguaprwtwL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__pxqvpgsonlpbmziexnicojtlgsgfouyrL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__pxqvpgsonlpbmziexnicojtlgsgfouyrL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__pxqvpgsonlpbmziexnicojtlgsgfouyrL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__qcagqkszwlsndhjyagmukhxiugwadpxxL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__qcagqkszwlsndhjyagmukhxiugwadpxxL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__qcagqkszwlsndhjyagmukhxiugwadpxxL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__qymdioekngjvjjjqfpzmxlycnvbslwevL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__qymdioekngjvjjjqfpzmxlycnvbslwevL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__qymdioekngjvjjjqfpzmxlycnvbslwevL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__rpzdmcdnijxlttsivcfgzleurbgpchhzL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__rpzdmcdnijxlttsivcfgzleurbgpchhzL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__rpzdmcdnijxlttsivcfgzleurbgpchhzL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__rulclzzfmyszewnycpzlqmcopsqccarqL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__rulclzzfmyszewnycpzlqmcopsqccarqL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__rulclzzfmyszewnycpzlqmcopsqccarqL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__uexsnlcvbjyubdfmmdxzehdfcdiwufcrL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__uexsnlcvbjyubdfmmdxzehdfcdiwufcrL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__uexsnlcvbjyubdfmmdxzehdfcdiwufcrL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__ughbfnqmhbdbiuueqxutuvcxicgrmnxwL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__ughbfnqmhbdbiuueqxutuvcxicgrmnxwL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__ughbfnqmhbdbiuueqxutuvcxicgrmnxwL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__uzsvtiqnxxrhkhfelgdrwmnbwwirribaL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__uzsvtiqnxxrhkhfelgdrwmnbwwirribaL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__uzsvtiqnxxrhkhfelgdrwmnbwwirribaL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__vffsqkjyicdnumnesfhcjlgtqguwdpnpL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__vffsqkjyicdnumnesfhcjlgtqguwdpnpL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__vffsqkjyicdnumnesfhcjlgtqguwdpnpL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__vtbpzpccsyytsvygxsyhvyojjbqsghpbL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__vtbpzpccsyytsvygxsyhvyojjbqsghpbL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__vtbpzpccsyytsvygxsyhvyojjbqsghpbL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__xhuychsyvcmrjzhibkdksklxflvtfefdL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__xhuychsyvcmrjzhibkdksklxflvtfefdL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__xhuychsyvcmrjzhibkdksklxflvtfefdL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__ylxrpbrfcykqjxgggzptgdvokhmzcvamL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__ylxrpbrfcykqjxgggzptgdvokhmzcvamL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__ylxrpbrfcykqjxgggzptgdvokhmzcvamL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/__TEMP__zkzjzrglozoqyyfvpcdqeanjxglmtzbbL2Compressor.huff b/packages/wallet-contracts/src/__TEMP__zkzjzrglozoqyyfvpcdqeanjxglmtzbbL2Compressor.huff deleted file mode 100644 index da1916e7d5..0000000000 --- a/packages/wallet-contracts/src/__TEMP__zkzjzrglozoqyyfvpcdqeanjxglmtzbbL2Compressor.huff +++ /dev/null @@ -1,142 +0,0 @@ - - -#include "./L2CompressorLib.huff" - - -#define jumptable SELECTORS_TABLE { - execute_transaction // 0x00 - execute_many_transactions // 0x01 - read_address // 0x02 - read_bytes32 // 0x03 - sizes // 0x04 - read_storage_slots // 0x05 - decompress_transaction // 0x06 - decompress_many_transactions // 0x07 -} - -#define macro MAIN() = takes (0) returns (0) { - // Write the jump table to 0x20 - // or else the flags jumptable won't get written - // all this memory will be reused anyway - __tablesize(SELECTORS_TABLE) // [table_size] - __tablestart(SELECTORS_TABLE) // [table_start, table_size] - 0x20 // [0x20, table_start, table_size] - codecopy // [] - - callvalue // [0x00] - calldataload // [data[0x00]] - callvalue // [0x00, data[0x00]] - byte // [method] - - 0x05 // [0x05, method] - shl // [(method << 0x05)] - 0x20 add // [method + 0x20] - mload // [mload[method]] - jump // [] - - execute_transaction: - 0x01 // [rindex] - PERFORM_EXECUTE(nrfs) // [rindex] - callvalue callvalue return - - execute_many_transactions: - 0x01 // [rindex] - PERFORM_MANY_EXECUTES(nrfs) // [rindex, size, i] - callvalue callvalue return - - read_address: - PERFORM_READ_ADDRESS() - 0x20 callvalue return - - read_bytes32: - PERFORM_READ_BYTES32() - 0x20 callvalue return - - sizes: - PERFORM_READ_SIZES() - 0x20 callvalue return - - read_storage_slots: - PERFORM_READ_SLOTS() // [size] - callvalue // [0x00, size] - return - - decompress_transaction: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_FULL_EXECUTE(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - decompress_many_transactions: - 0x01 // [rindex] - [FMS] // [windex, rindex] - - READ_MANY_FULL_EXECUTES(nrfs) // [windex, rindex] - - [FMS] // [FMS, windex, rindex] - swap1 // [windex, FMS, rindex] - sub // [(windex - FMS), rindex] - - [FMS] // [FMS, (windex - FMS), rindex] - return // [rindex] - - // This will be appended at the end - // unreachable code as all the method return first - - nrfs: - FN_READ_FLAG(nrfs) -} - - - -#define macro READ_FULL_EXECUTE(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - READ_EXECUTE() // [windex, rindex] - PERFORM_NESTED_READ_FLAG() // [windex, rindex] - - // output stack: [windex, rindex] -} - -#define macro READ_MANY_FULL_EXECUTES(nrfs) = takes (2) returns (2) { - // input stack: [windex, rindex] - - swap1 // [rindex, windex] - - LOAD_1_BYTE() // [size, rindex, windex] - callvalue // [i, size, rindex, windex] - swap2 // [rindex, size, i, windex] - - do_another: // [rindex, size, i, windex] - swap1 // [size, rindex, i, windex] - swap2 // [i, rindex, size, windex] - swap3 // [windex, rindex, size, i] - - READ_FULL_EXECUTE() // [windex, rindex, size, i] - - swap3 // [i, rindex, size, windex] - swap2 // [size, rindex, i, windex] - swap1 // [rindex, size, i, windex] - - swap2 // [i, size, rindex, windex] - 0x01 // [0x01, i, size, rindex, windex] - add // [(0x01 + i), size, rindex, windex] - swap2 // [rindex, size, (0x01 + i), windex] - - dup2 // [size, rindex, size, (0x01 + i), windex] - dup4 // [(0x01 + i), size, rindex, size, (0x01 + i), windex] - lt // [((0x01 + i) < size), rindex, size, (0x01 + i), windex] - do_another jumpi // [rindex, size, (0x01 + i), windex] - - swap1 // [size, rindex, (0x01 + i), windex] - swap3 // [windex, rindex, (0x01 + i), size] - - // output stack: [windex, rindex, (0x01 + i), size] -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/imps/L2CompressorImps.huff b/packages/wallet-contracts/src/imps/L2CompressorImps.huff deleted file mode 100644 index 6ea7dad705..0000000000 --- a/packages/wallet-contracts/src/imps/L2CompressorImps.huff +++ /dev/null @@ -1,52 +0,0 @@ -#include "../L2CompressorLib.huff" - -#define function testLoadDynamicSize(bytes32 _a, bytes32 _b, uint256, uint256) view returns (uint256, uint256, bytes32) -#define function testReadBytes32(bytes32 _a, bytes32 _b, uint256, uint256, uint256) view returns (uint256, uint256) - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // Identify which function is being called. - 0x00 calldataload 0xE0 shr // [func_sig] - - dup1 __FUNC_SIG(testLoadDynamicSize) eq testLoadDynamicSize jumpi - dup1 __FUNC_SIG(testReadBytes32) eq testReadBytes32 jumpi - - // Revert if no match is found. - 0x00 dup1 revert - - testLoadDynamicSize: - IMP_LOAD_DYNAMIC_SIZE() - - testReadBytes32: - IMP_READ_BYTES32() -} - -#define macro IMP_LOAD_DYNAMIC_SIZE() = takes (2) returns (0) { - 0x04 0x40 add calldataload // [rindex] - 0x04 0x60 add calldataload // [size, rindex] - - LOAD_DYNAMIC_SIZE() // [size bits, rindex + size] - - 0x00 mstore // [rindex + size] - 0x20 mstore // [] - - 0x40 0x00 return -} - -#define macro IMP_READ_BYTES32() = takes (3) returns (2) { - 0x04 0x40 add calldataload // [rindex] - 0x04 0x60 add calldataload // [windex, rindex] - 0x04 0x80 add calldataload // [flag, windex, rindex] - - READ_BYTES32() // [windex, rindex] - - 0x00 mstore // [rindex] - 0x20 mstore // [] - - 0x04 0x60 add calldataload // [windex] - mload // [written] - - 0x40 mstore // [] - - 0x60 0x00 return -} \ No newline at end of file diff --git a/packages/wallet-contracts/src/imps/L2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/L2CompressorReadExecute.huff deleted file mode 100644 index b75163c894..0000000000 --- a/packages/wallet-contracts/src/imps/L2CompressorReadExecute.huff +++ /dev/null @@ -1,30 +0,0 @@ -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/L2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/L2CompressorReadFlag.huff deleted file mode 100644 index a046df2368..0000000000 --- a/packages/wallet-contracts/src/imps/L2CompressorReadFlag.huff +++ /dev/null @@ -1,30 +0,0 @@ -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/L2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/L2CompressorReadNonce.huff deleted file mode 100644 index 847b600317..0000000000 --- a/packages/wallet-contracts/src/imps/L2CompressorReadNonce.huff +++ /dev/null @@ -1,30 +0,0 @@ -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/L2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/L2CompressorReadTx.huff deleted file mode 100644 index 113e35ba87..0000000000 --- a/packages/wallet-contracts/src/imps/L2CompressorReadTx.huff +++ /dev/null @@ -1,30 +0,0 @@ -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/L2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/L2CompressorReadTxs.huff deleted file mode 100644 index a5042b2f4c..0000000000 --- a/packages/wallet-contracts/src/imps/L2CompressorReadTxs.huff +++ /dev/null @@ -1,30 +0,0 @@ -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__aayxscdgqfgqckqcfvplniuqleqmglgpL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__aayxscdgqfgqckqcfvplniuqleqmglgpL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__aayxscdgqfgqckqcfvplniuqleqmglgpL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__agjsoduxivwxbunbrskpnttujfxlnsuqL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__agjsoduxivwxbunbrskpnttujfxlnsuqL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__agjsoduxivwxbunbrskpnttujfxlnsuqL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__aozfhsjnhfgdhkvygupcezykxnllxhooL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__aozfhsjnhfgdhkvygupcezykxnllxhooL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__aozfhsjnhfgdhkvygupcezykxnllxhooL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__auoqqxuvhsugblxkhmuynutuutdpetfmL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__auoqqxuvhsugblxkhmuynutuutdpetfmL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__auoqqxuvhsugblxkhmuynutuutdpetfmL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__bgiysfzlfrqnqopegdijkxkzjebeugweL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__bgiysfzlfrqnqopegdijkxkzjebeugweL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__bgiysfzlfrqnqopegdijkxkzjebeugweL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__bhcstacsnwaeevimfyeuyukrpkefkpjvL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__bhcstacsnwaeevimfyeuyukrpkefkpjvL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__bhcstacsnwaeevimfyeuyukrpkefkpjvL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__bjodacjzehrzeexubslwqheqqdtpojdxL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__bjodacjzehrzeexubslwqheqqdtpojdxL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__bjodacjzehrzeexubslwqheqqdtpojdxL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__bqzqrnjvdcsevkfpbluzvxgnvfnbjbvdL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__bqzqrnjvdcsevkfpbluzvxgnvfnbjbvdL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__bqzqrnjvdcsevkfpbluzvxgnvfnbjbvdL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__bxxjqefyxrrctwjijuvxauktfiveuhazL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__bxxjqefyxrrctwjijuvxauktfiveuhazL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__bxxjqefyxrrctwjijuvxauktfiveuhazL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__cczbajsfeehqceablvdedlohtwcpgruiL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__cczbajsfeehqceablvdedlohtwcpgruiL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__cczbajsfeehqceablvdedlohtwcpgruiL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__ceqwybpkmvqejmujxdddmmbuqrzcvpqlL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__ceqwybpkmvqejmujxdddmmbuqrzcvpqlL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__ceqwybpkmvqejmujxdddmmbuqrzcvpqlL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__cinzltxsvuofyvnmuiiddtfwsyytzwszL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__cinzltxsvuofyvnmuiiddtfwsyytzwszL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__cinzltxsvuofyvnmuiiddtfwsyytzwszL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__ckntqzzuqphqsecwtcwuiczrfadymzpwL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__ckntqzzuqphqsecwtcwuiczrfadymzpwL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__ckntqzzuqphqsecwtcwuiczrfadymzpwL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__ctxqvslrdaagplfabzhyfjejoyhqoxvnL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__ctxqvslrdaagplfabzhyfjejoyhqoxvnL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__ctxqvslrdaagplfabzhyfjejoyhqoxvnL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__cxyftrlslztbljuqlicrbibyyssybguhL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__cxyftrlslztbljuqlicrbibyyssybguhL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__cxyftrlslztbljuqlicrbibyyssybguhL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__cyxkjqcsonpojbyksbsvglcrgoqbepkaL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__cyxkjqcsonpojbyksbsvglcrgoqbepkaL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__cyxkjqcsonpojbyksbsvglcrgoqbepkaL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__deeivxbssjzviqkksdozrardbmkofvggL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__deeivxbssjzviqkksdozrardbmkofvggL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__deeivxbssjzviqkksdozrardbmkofvggL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__dexeqmbbqijqudvjnczxedpzkrqkrxgpL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__dexeqmbbqijqudvjnczxedpzkrqkrxgpL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__dexeqmbbqijqudvjnczxedpzkrqkrxgpL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__ebpduriemctxazssijauhsotgyqtayygL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__ebpduriemctxazssijauhsotgyqtayygL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__ebpduriemctxazssijauhsotgyqtayygL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__edfwesooemxojadwrkmombuemzhicuirL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__edfwesooemxojadwrkmombuemzhicuirL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__edfwesooemxojadwrkmombuemzhicuirL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__eicqyirjstlxuotvptvgszvdeemgpomnL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__eicqyirjstlxuotvptvgszvdeemgpomnL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__eicqyirjstlxuotvptvgszvdeemgpomnL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__eiovqvzojbuhtglrinqvkqirnywzkmmmL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__eiovqvzojbuhtglrinqvkqirnywzkmmmL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__eiovqvzojbuhtglrinqvkqirnywzkmmmL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__elmwrfrphdzesjosulrygitvkhredhzhL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__elmwrfrphdzesjosulrygitvkhredhzhL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__elmwrfrphdzesjosulrygitvkhredhzhL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__eqatcxksiizfyaalvdegpzaqhuqqhiasL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__eqatcxksiizfyaalvdegpzaqhuqqhiasL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__eqatcxksiizfyaalvdegpzaqhuqqhiasL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__etsleznlprfdbomdvycqormkvpykanxnL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__etsleznlprfdbomdvycqormkvpykanxnL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__etsleznlprfdbomdvycqormkvpykanxnL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__ezolvnoridtqgdaoucihkxihmonvdzfxL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__ezolvnoridtqgdaoucihkxihmonvdzfxL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__ezolvnoridtqgdaoucihkxihmonvdzfxL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__fjxkkzopmkrdujlfcvecckcbuhhhpvpfL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__fjxkkzopmkrdujlfcvecckcbuhhhpvpfL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__fjxkkzopmkrdujlfcvecckcbuhhhpvpfL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__fnqywxkjihwbqdurhcftzbzzrxvcmizbL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__fnqywxkjihwbqdurhcftzbzzrxvcmizbL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__fnqywxkjihwbqdurhcftzbzzrxvcmizbL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__fophszhswirxqqcvcwxtmeqbuwldxifmL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__fophszhswirxqqcvcwxtmeqbuwldxifmL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__fophszhswirxqqcvcwxtmeqbuwldxifmL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__fvrcmlbliwfwkjwbyxrediuokmghmftbL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__fvrcmlbliwfwkjwbyxrediuokmghmftbL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__fvrcmlbliwfwkjwbyxrediuokmghmftbL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__fzlawzzpwhflvpxtrdpemqiejqiknsfiL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__fzlawzzpwhflvpxtrdpemqiejqiknsfiL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__fzlawzzpwhflvpxtrdpemqiejqiknsfiL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__gllqgrsektwpyxkfoughzygdwrhxuzibL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__gllqgrsektwpyxkfoughzygdwrhxuzibL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__gllqgrsektwpyxkfoughzygdwrhxuzibL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__gmuxapiaoacldjbqqarixmvtxkffgwchL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__gmuxapiaoacldjbqqarixmvtxkffgwchL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__gmuxapiaoacldjbqqarixmvtxkffgwchL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__gnbrxkaxjdmimbyepztqmujkoilcaudgL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__gnbrxkaxjdmimbyepztqmujkoilcaudgL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__gnbrxkaxjdmimbyepztqmujkoilcaudgL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__grtgxrlusabnzjycyuqniujobcpgjuysL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__grtgxrlusabnzjycyuqniujobcpgjuysL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__grtgxrlusabnzjycyuqniujobcpgjuysL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__guymonsuywmugusjixyvzwfzordmogvuL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__guymonsuywmugusjixyvzwfzordmogvuL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__guymonsuywmugusjixyvzwfzordmogvuL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__gvmiqpcdvchroaxhcnyygzhjrvozrogmL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__gvmiqpcdvchroaxhcnyygzhjrvozrogmL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__gvmiqpcdvchroaxhcnyygzhjrvozrogmL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__hahsuwlfvumxsoepdhwqsahoduwcqrrpL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__hahsuwlfvumxsoepdhwqsahoduwcqrrpL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__hahsuwlfvumxsoepdhwqsahoduwcqrrpL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__hbzqhssjozyiqufyamizmyrwtgelqlacL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__hbzqhssjozyiqufyamizmyrwtgelqlacL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__hbzqhssjozyiqufyamizmyrwtgelqlacL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__hfunbeczbrqifdmdhdecpajexqefympmL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__hfunbeczbrqifdmdhdecpajexqefympmL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__hfunbeczbrqifdmdhdecpajexqefympmL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__htawaymiowrkxyrnxkesysithbtrbvqqL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__htawaymiowrkxyrnxkesysithbtrbvqqL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__htawaymiowrkxyrnxkesysithbtrbvqqL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__hwddxmqkngntwieovwlvozjzwlctwrzrL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__hwddxmqkngntwieovwlvozjzwlctwrzrL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__hwddxmqkngntwieovwlvozjzwlctwrzrL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__iepjlcxcjkjplwmrexbaruoucdulzvqvL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__iepjlcxcjkjplwmrexbaruoucdulzvqvL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__iepjlcxcjkjplwmrexbaruoucdulzvqvL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__igcaczanzcfoaizsmahiisgmgdjzfjxqL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__igcaczanzcfoaizsmahiisgmgdjzfjxqL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__igcaczanzcfoaizsmahiisgmgdjzfjxqL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__irlchgckchrpalaqwygxkipfvshmgystL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__irlchgckchrpalaqwygxkipfvshmgystL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__irlchgckchrpalaqwygxkipfvshmgystL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__ixvgjbblpufenoaperstvmceseoukqtcL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__ixvgjbblpufenoaperstvmceseoukqtcL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__ixvgjbblpufenoaperstvmceseoukqtcL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__jehdemzdnzfibjlvuclsezveuuexubagL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__jehdemzdnzfibjlvuclsezveuuexubagL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__jehdemzdnzfibjlvuclsezveuuexubagL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__jgpbsiwsniszmajdqepfceqpqhdfzbiiL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__jgpbsiwsniszmajdqepfceqpqhdfzbiiL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__jgpbsiwsniszmajdqepfceqpqhdfzbiiL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__jowmzjwgdpwndoapfucdlmsxiuwbhxrsL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__jowmzjwgdpwndoapfucdlmsxiuwbhxrsL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__jowmzjwgdpwndoapfucdlmsxiuwbhxrsL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__jujqtnlfowbvuxcpetgqmymkladcanwtL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__jujqtnlfowbvuxcpetgqmymkladcanwtL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__jujqtnlfowbvuxcpetgqmymkladcanwtL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__jvyndfqmdiikuahllmivwlrgrfhmdzslL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__jvyndfqmdiikuahllmivwlrgrfhmdzslL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__jvyndfqmdiikuahllmivwlrgrfhmdzslL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__kqlasykhhfirrrmebqsqsnoleofcgyciL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__kqlasykhhfirrrmebqsqsnoleofcgyciL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__kqlasykhhfirrrmebqsqsnoleofcgyciL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__krffnjyglejvywvaqrlwcoejtxsysubcL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__krffnjyglejvywvaqrlwcoejtxsysubcL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__krffnjyglejvywvaqrlwcoejtxsysubcL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__lcamxsrkjvabmusmojsaspukxeydggrhL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__lcamxsrkjvabmusmojsaspukxeydggrhL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__lcamxsrkjvabmusmojsaspukxeydggrhL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__lhhzpskainxqfqaqlpehxidlrhdvkcoyL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__lhhzpskainxqfqaqlpehxidlrhdvkcoyL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__lhhzpskainxqfqaqlpehxidlrhdvkcoyL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__lqfhpuhoyykhenkubqyenjlfkzsbjkxcL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__lqfhpuhoyykhenkubqyenjlfkzsbjkxcL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__lqfhpuhoyykhenkubqyenjlfkzsbjkxcL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__lvxixehkgptearwmufefnibyzayqaaciL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__lvxixehkgptearwmufefnibyzayqaaciL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__lvxixehkgptearwmufefnibyzayqaaciL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__lyxapewhygradusuogqwefdorgsntvcxL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__lyxapewhygradusuogqwefdorgsntvcxL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__lyxapewhygradusuogqwefdorgsntvcxL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__mfzlovayqwfmitftdbihfqfuruuvbxqbL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__mfzlovayqwfmitftdbihfqfuruuvbxqbL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__mfzlovayqwfmitftdbihfqfuruuvbxqbL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__mimqucgooefgrgmedlqkqqhszmvuuxioL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__mimqucgooefgrgmedlqkqqhszmvuuxioL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__mimqucgooefgrgmedlqkqqhszmvuuxioL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__mlmvtiltzqbjdwbouzrwkvkhpzncpjzsL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__mlmvtiltzqbjdwbouzrwkvkhpzncpjzsL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__mlmvtiltzqbjdwbouzrwkvkhpzncpjzsL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__mscgrvpcuajxspktkuiktwofhzwbszraL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__mscgrvpcuajxspktkuiktwofhzwbszraL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__mscgrvpcuajxspktkuiktwofhzwbszraL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__mscqnapvfrrvforntvdsgkeofzbhbhdsL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__mscqnapvfrrvforntvdsgkeofzbhbhdsL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__mscqnapvfrrvforntvdsgkeofzbhbhdsL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__nikafqmlyyfgnksobnextlfkyykzrdomL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__nikafqmlyyfgnksobnextlfkyykzrdomL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__nikafqmlyyfgnksobnextlfkyykzrdomL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__nmkhnrsondojimozdduewzkbcwlvsakcL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__nmkhnrsondojimozdduewzkbcwlvsakcL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__nmkhnrsondojimozdduewzkbcwlvsakcL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__nwvyiqgthdyhbeqefkhccrhufdhjjazeL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__nwvyiqgthdyhbeqefkhccrhufdhjjazeL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__nwvyiqgthdyhbeqefkhccrhufdhjjazeL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__obfmnrpwkqhjnhtlarvljeqysguhoizaL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__obfmnrpwkqhjnhtlarvljeqysguhoizaL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__obfmnrpwkqhjnhtlarvljeqysguhoizaL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__osezdxhuqmvwkwrmogebamkqmhdvljmlL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__osezdxhuqmvwkwrmogebamkqmhdvljmlL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__osezdxhuqmvwkwrmogebamkqmhdvljmlL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__pabiechkuxsxbofnkwdnlbnftvkuearfL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__pabiechkuxsxbofnkwdnlbnftvkuearfL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__pabiechkuxsxbofnkwdnlbnftvkuearfL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__paowmqtaesjuestckycmjquytqlfsdxoL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__paowmqtaesjuestckycmjquytqlfsdxoL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__paowmqtaesjuestckycmjquytqlfsdxoL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__pbsqieaiicgyhrvarrpmypzdufaanmpuL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__pbsqieaiicgyhrvarrpmypzdufaanmpuL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__pbsqieaiicgyhrvarrpmypzdufaanmpuL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__pdhdqmtavohyssvasdtggpxqllpajsfgL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__pdhdqmtavohyssvasdtggpxqllpajsfgL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__pdhdqmtavohyssvasdtggpxqllpajsfgL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__petemgomrtnkvriaaltgrrlpmnzupwinL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__petemgomrtnkvriaaltgrrlpmnzupwinL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__petemgomrtnkvriaaltgrrlpmnzupwinL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__prsagizbgnvlqmbynuotwqkanwdlaqwpL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__prsagizbgnvlqmbynuotwqkanwdlaqwpL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__prsagizbgnvlqmbynuotwqkanwdlaqwpL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__pwmrquntendpgjgzyejxobzrgvpizgfdL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__pwmrquntendpgjgzyejxobzrgvpizgfdL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__pwmrquntendpgjgzyejxobzrgvpizgfdL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__qcnbdgafrzidybihlkysfiliofczzxkhL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__qcnbdgafrzidybihlkysfiliofczzxkhL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__qcnbdgafrzidybihlkysfiliofczzxkhL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__qmgpovlxptxlyeikmnrgvhavunciniubL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__qmgpovlxptxlyeikmnrgvhavunciniubL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__qmgpovlxptxlyeikmnrgvhavunciniubL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__qotscdrriksxilvopyxfsbdteqegnyogL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__qotscdrriksxilvopyxfsbdteqegnyogL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__qotscdrriksxilvopyxfsbdteqegnyogL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__qpcuafrrwylbrmzpjfotpjfuqxtnqrznL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__qpcuafrrwylbrmzpjfotpjfuqxtnqrznL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__qpcuafrrwylbrmzpjfotpjfuqxtnqrznL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__qrusinhmosfcvmayqquwflixlquuhfxhL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__qrusinhmosfcvmayqquwflixlquuhfxhL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__qrusinhmosfcvmayqquwflixlquuhfxhL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__raqvmbdtosqccjiitanbofqxpeepnlpnL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__raqvmbdtosqccjiitanbofqxpeepnlpnL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__raqvmbdtosqccjiitanbofqxpeepnlpnL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__ruqfgeoaamevndekencowviukvlcrylcL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__ruqfgeoaamevndekencowviukvlcrylcL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__ruqfgeoaamevndekencowviukvlcrylcL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__sccswirfbmatrvwbvymwfzttbygcbfmqL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__sccswirfbmatrvwbvymwfzttbygcbfmqL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__sccswirfbmatrvwbvymwfzttbygcbfmqL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__sgfhxhvokcpqraldrihrcqjmlolnoulkL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__sgfhxhvokcpqraldrihrcqjmlolnoulkL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__sgfhxhvokcpqraldrihrcqjmlolnoulkL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__smnsryuyuhbbunwequckjtrcwgaqmtqrL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__smnsryuyuhbbunwequckjtrcwgaqmtqrL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__smnsryuyuhbbunwequckjtrcwgaqmtqrL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__stxwzpcueqdwmcsxvxwzkubprcmgpexkL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__stxwzpcueqdwmcsxvxwzkubprcmgpexkL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__stxwzpcueqdwmcsxvxwzkubprcmgpexkL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__syiwghttzfntbuucvfvlctpjeldqbrshL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__syiwghttzfntbuucvfvlctpjeldqbrshL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__syiwghttzfntbuucvfvlctpjeldqbrshL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__tadxtxolhcweyyokjpleorchotchzsecL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__tadxtxolhcweyyokjpleorchotchzsecL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__tadxtxolhcweyyokjpleorchotchzsecL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__tlpzvbklzufubgnwcvynodibgfqnidibL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__tlpzvbklzufubgnwcvynodibgfqnidibL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__tlpzvbklzufubgnwcvynodibgfqnidibL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__uobsemubvemlejzpjvdzyjcjrsbhplpsL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__uobsemubvemlejzpjvdzyjcjrsbhplpsL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__uobsemubvemlejzpjvdzyjcjrsbhplpsL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__uudbvubkefushlwgxsfgldujuphcmuueL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__uudbvubkefushlwgxsfgldujuphcmuueL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__uudbvubkefushlwgxsfgldujuphcmuueL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__uyprsxxzmvxmqqzffpwypehvvksjzbvnL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__uyprsxxzmvxmqqzffpwypehvvksjzbvnL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__uyprsxxzmvxmqqzffpwypehvvksjzbvnL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__vmmtlehczdflhfwnklqlujjtzpxrejpmL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__vmmtlehczdflhfwnklqlujjtzpxrejpmL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__vmmtlehczdflhfwnklqlujjtzpxrejpmL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__voqybenghboelsmsisgwnqqymvpjvskcL2CompressorReadFlag.huff b/packages/wallet-contracts/src/imps/__TEMP__voqybenghboelsmsisgwnqqymvpjvskcL2CompressorReadFlag.huff deleted file mode 100644 index 6bc3f6157c..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__voqybenghboelsmsisgwnqqymvpjvskcL2CompressorReadFlag.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_FLAG() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__vtdvfmunyolkgcpjpzhtgjgwawtaakhwL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__vtdvfmunyolkgcpjpzhtgjgwawtaakhwL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__vtdvfmunyolkgcpjpzhtgjgwawtaakhwL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__vtynudukibsyoxexvoiaurnusvgnrhusL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__vtynudukibsyoxexvoiaurnusvgnrhusL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__vtynudukibsyoxexvoiaurnusvgnrhusL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__vvictwvevvjztwupwcjsnyherfswgsgcL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__vvictwvevvjztwupwcjsnyherfswgsgcL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__vvictwvevvjztwupwcjsnyherfswgsgcL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__vzqupagxqpkbexuaqyoulenyhrwfuvsiL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__vzqupagxqpkbexuaqyoulenyhrwfuvsiL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__vzqupagxqpkbexuaqyoulenyhrwfuvsiL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__wcgjgrxjyjenenrnolprlkfulinnjttkL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__wcgjgrxjyjenenrnolprlkfulinnjttkL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__wcgjgrxjyjenenrnolprlkfulinnjttkL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__weeyfqxkqtokrkcwbrxerdftkvyxqwwiL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__weeyfqxkqtokrkcwbrxerdftkvyxqwwiL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__weeyfqxkqtokrkcwbrxerdftkvyxqwwiL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__xbuxrypubsjveaucjyhkmwlwmhlgvymnL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__xbuxrypubsjveaucjyhkmwlwmhlgvymnL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__xbuxrypubsjveaucjyhkmwlwmhlgvymnL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__xeqwdqdlujruiiyywivxsxrlsluymfdiL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__xeqwdqdlujruiiyywivxsxrlsluymfdiL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__xeqwdqdlujruiiyywivxsxrlsluymfdiL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__xprohfjolmgvmuxskobwcqavoskmutltL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__xprohfjolmgvmuxskobwcqavoskmutltL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__xprohfjolmgvmuxskobwcqavoskmutltL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__yhfcljsbzcghwkonkegmtbremlhrxnejL2CompressorReadExecute.huff b/packages/wallet-contracts/src/imps/__TEMP__yhfcljsbzcghwkonkegmtbremlhrxnejL2CompressorReadExecute.huff deleted file mode 100644 index 7351d4df36..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__yhfcljsbzcghwkonkegmtbremlhrxnejL2CompressorReadExecute.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_EXECUTE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__yphredkigvzhxnjzbspndmkchcjaofllL2CompressorReadNonce.huff b/packages/wallet-contracts/src/imps/__TEMP__yphredkigvzhxnjzbspndmkchcjaofllL2CompressorReadNonce.huff deleted file mode 100644 index eb09bd2b6d..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__yphredkigvzhxnjzbspndmkchcjaofllL2CompressorReadNonce.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_NONCE_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__zfeyxnkrahdyldfbtyakjkbvehkjdbmgL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__zfeyxnkrahdyldfbtyakjkbvehkjdbmgL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__zfeyxnkrahdyldfbtyakjkbvehkjdbmgL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__zmblbdmtdrpbbopekynjthxzellyhsxeL2CompressorReadTxs.huff b/packages/wallet-contracts/src/imps/__TEMP__zmblbdmtdrpbbopekynjthxzellyhsxeL2CompressorReadTxs.huff deleted file mode 100644 index 4a6f01a186..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__zmblbdmtdrpbbopekynjthxzellyhsxeL2CompressorReadTxs.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTIONS_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/src/imps/__TEMP__zvcrygcudiscauggwhjnxbrgifehtxhfL2CompressorReadTx.huff b/packages/wallet-contracts/src/imps/__TEMP__zvcrygcudiscauggwhjnxbrgifehtxhfL2CompressorReadTx.huff deleted file mode 100644 index 8c9f99fc5b..0000000000 --- a/packages/wallet-contracts/src/imps/__TEMP__zvcrygcudiscauggwhjnxbrgifehtxhfL2CompressorReadTx.huff +++ /dev/null @@ -1,32 +0,0 @@ - - -#include "../L2CompressorLib.huff" - -#define constant FMS = 0xa0 - -// Function Dispatching -#define macro MAIN() = takes (1) returns (1) { - // readAdvanced with whatever calldata is passed - // first 32 bytes returns the new rindex and the next 32 bytes returns the new windex - - 0x00 // [rindex] - [FMS] // [windex, rindex] - - READ_TRANSACTION_STANDALONE() // [windex, rindex] - - [FMS] // [0xa0, windex, rindex] - dup2 // [windex, 0xa0, windex, rindex] - sub // [len, windex, rindex] - - swap2 // [rindex, windex, len] - - 0x80 [FMS] sub mstore // [windex, len] - 0x60 [FMS] sub mstore // [len] - - 0x60 0x40 [FMS] sub mstore // [len] - dup1 0x20 [FMS] sub mstore // [len] - - 0x80 add // [len + 0x80] - - 0x80 [FMS] sub return -} diff --git a/packages/wallet-contracts/test/ChainedSignatures.spec.ts b/packages/wallet-contracts/test/ChainedSignatures.spec.ts deleted file mode 100644 index 5aab0892f6..0000000000 --- a/packages/wallet-contracts/test/ChainedSignatures.spec.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { expect } from 'chai' -import { ethers } from 'ethers' -import { expectToBeRejected } from './utils' -import { deploySequenceContext, SequenceContext } from './utils/contracts' -import { SequenceWallet } from './utils/wallet' - -contract('Chained signatures', (accounts: string[]) => { - let context: SequenceContext - - let wallet: SequenceWallet - let typeHash: string - - before(async () => { - context = await deploySequenceContext() - }) - - beforeEach(async () => { - wallet = SequenceWallet.basicWallet(context) - await wallet.deploy() - typeHash = await wallet.mainModule.SET_IMAGE_HASH_TYPE_HASH() - }) - - const chain = (top: string, ...rest: { sig: string }[]) => { - const encodedRest = ethers.solidityPacked( - rest.map(() => ['uint24', 'bytes']).flat(), - rest.map(r => [ethers.getBytes(r.sig).length, r.sig]).flat() - ) - - return ethers.solidityPacked(['uint8', 'uint24', 'bytes', 'bytes'], [3, ethers.getBytes(top).length, top, encodedRest]) - } - - const hashSetImageHash = (imageHash: string) => { - return ethers.keccak256(ethers.AbiCoder.defaultAbiCoder().encode(['bytes32', 'bytes32'], [typeHash, imageHash])) - } - - it('Should accept a single chained signature', async () => { - const wallet_b = SequenceWallet.basicWallet(context, { address: wallet.address }) - - const hsih = hashSetImageHash(wallet_b.imageHash) - - const sig = await wallet.signDigest(hsih) - const topsig = await wallet_b.signTransactions([{}]) - const bundled = chain(topsig, { sig: sig }) - - await wallet_b.relayTransactions([{}], bundled) - }) - - it('Should accept two chained signatures', async () => { - let wallet_b = SequenceWallet.basicWallet(context, { address: wallet.address, signing: 2, idle: 1 }) - let wallet_c = SequenceWallet.basicWallet(context, { address: wallet_b.address, signing: 3, idle: 7 }) - - const checkpoint1 = BigInt(wallet.config.checkpoint) + 1n - const checkpoint2 = checkpoint1 + 1n - - wallet_b = wallet_b.useConfig({ ...wallet_b.config, checkpoint: checkpoint1 }) - wallet_c = wallet_c.useConfig({ ...wallet_c.config, checkpoint: checkpoint2 }) - - const hsih1 = hashSetImageHash(wallet_b.imageHash) - const hsih2 = hashSetImageHash(wallet_c.imageHash) - - const sig1 = await wallet.signDigest(hsih1) - const sig2 = await wallet_b.signDigest(hsih2) - - const topsig = await wallet_c.signTransactions([{}]) - const bundled = chain(topsig, { sig: sig2 }, { sig: sig1 }) - - await wallet_c.relayTransactions([{}], bundled) - }) - - it('Should reject chained signatures if checkpoint is wrongly ordered', async () => { - let wallet_b = SequenceWallet.basicWallet(context, { address: wallet.address, signing: 2, idle: 1 }) - let wallet_c = SequenceWallet.basicWallet(context, { address: wallet_b.address, signing: 3, idle: 7 }) - - const checkpoint1 = BigInt(wallet.config.checkpoint) + 1n - const checkpoint2 = checkpoint1 - 1n - - wallet_b = wallet_b.useConfig({ ...wallet_b.config, checkpoint: checkpoint1 }) - wallet_c = wallet_c.useConfig({ ...wallet_c.config, checkpoint: checkpoint2 }) - - const hsih1 = hashSetImageHash(wallet_b.imageHash) - const hsih2 = hashSetImageHash(wallet_c.imageHash) - - const sig1 = await wallet.signDigest(hsih1) - const sig2 = await wallet_b.signDigest(hsih2) - - const topsig = await wallet_c.signTransactions([{}]) - const bundled = chain(topsig, { sig: sig2 }, { sig: sig1 }) - - const tx = wallet_c.relayTransactions([{}], bundled) - await expectToBeRejected(tx, `WrongChainedCheckpointOrder(${checkpoint1}, ${checkpoint2})`) - }) - - it('Should accept top level signature encoded as chained', async () => { - const sig = await wallet.signTransactions([{}]) - await wallet.relayTransactions([{}], chain(sig)) - }) - - it('Should accept top level signature encoded as chained twice', async () => { - const sig = await wallet.signTransactions([{}]) - await wallet.relayTransactions([{}], chain(chain(sig))) - }) - - it('Should reject signature if current checkpoint is equal to signed checkpoint', async () => { - let wallet_b = SequenceWallet.basicWallet(context, { address: wallet.address }) - - const checkpoint = BigInt(wallet.config.checkpoint) - wallet_b = wallet_b.useConfig({ ...wallet_b.config, checkpoint: checkpoint }) - - const hsih = hashSetImageHash(wallet_b.imageHash) - const sig = await wallet.signDigest(hsih) - const topsig = await wallet_b.signTransactions([{}]) - const bundled = chain(topsig, { sig: sig }) - - await expectToBeRejected( - wallet_b.relayTransactions([{}], bundled), - `WrongChainedCheckpointOrder(${checkpoint}, ${checkpoint})` - ) - }) - - it('Should reject signature if current checkpoint is above to signed checkpoint', async () => { - let wallet_b = SequenceWallet.basicWallet(context, { address: wallet.address }) - - const checkpoint = BigInt(wallet.config.checkpoint) - 1n - wallet_b = wallet_b.useConfig({ ...wallet_b.config, checkpoint: checkpoint }) - - const hsih = hashSetImageHash(wallet_b.imageHash) - const sig = await wallet.signDigest(hsih) - const topsig = await wallet_b.signTransactions([{}]) - const bundled = chain(topsig, { sig: sig }) - - await expectToBeRejected( - wallet_b.relayTransactions([{}], bundled), - `WrongChainedCheckpointOrder(${wallet.config.checkpoint}, ${checkpoint})` - ) - }) -}) diff --git a/packages/wallet-contracts/test/ERC165.spec.ts b/packages/wallet-contracts/test/ERC165.spec.ts deleted file mode 100644 index f55cf6da2a..0000000000 --- a/packages/wallet-contracts/test/ERC165.spec.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { ethers } from 'ethers' -import { ContractType, deploySequenceContext, ERC165CheckerMock, SequenceContext } from './utils/contracts' -import { SequenceWallet } from './utils/wallet' -import { expect, interfaceIdOf, randomHex } from './utils' - -const interfaceIds = [ - 'IERC223Receiver', - 'IERC721Receiver', - 'IERC1155Receiver', - 'IERC1271Wallet', - 'IModuleAuth', - 'IModuleCalls', - 'IModuleCreator', - 'IModuleHooks', - 'IModuleUpdate' -] - -contract('ERC165', () => { - let context: SequenceContext - let erc165checker: ContractType - let wallet: SequenceWallet - - before(async () => { - context = await deploySequenceContext() - erc165checker = await ERC165CheckerMock.deploy() - }) - - beforeEach(async () => { - wallet = SequenceWallet.basicWallet(context) - await wallet.deploy() - }) - - describe('Implement all interfaces for ERC165 on MainModule', () => { - interfaceIds.forEach(element => { - it(`Should return implements ${element} interfaceId`, async () => { - const interfaceId = interfaceIdOf(new ethers.Interface(artifacts.require(element).abi)) - expect(BigInt(interfaceId) === 0n).to.be.false - - const erc165result = await erc165checker.doesContractImplementInterface(wallet.address, interfaceId) - expect(erc165result).to.be.true - }) - }) - }) - describe('Implement all interfaces for ERC165 on MainModuleUpgradable', () => { - beforeEach(async () => { - await wallet.updateImageHash(randomHex(32)) - }) - - interfaceIds.concat('IModuleAuthUpgradable').forEach(element => { - it(`Should return implements ${element} interfaceId`, async () => { - const interfaceId = interfaceIdOf(new ethers.Interface(artifacts.require(element).abi)) - expect(BigInt(interfaceId) === 0n).to.be.false - - const erc165result = await erc165checker.doesContractImplementInterface(wallet.address, interfaceId) - expect(erc165result).to.be.true - }) - }) - }) - describe('Manually defined interfaces', () => { - const interfaces = [ - ['ERC165', '0x01ffc9a7'], - ['ERC721', '0x150b7a02'], - ['ERC1155', '0x4e2312e0'] - ] - - interfaces.forEach(i => { - it(`Should implement ${i[0]} interface`, async () => { - const erc165result = await erc165checker.doesContractImplementInterface(wallet.address, i[1]) - expect(erc165result).to.be.true - }) - }) - }) -}) diff --git a/packages/wallet-contracts/test/Factory.spec.ts b/packages/wallet-contracts/test/Factory.spec.ts deleted file mode 100644 index c498857466..0000000000 --- a/packages/wallet-contracts/test/Factory.spec.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { ethers } from 'ethers' - -import { ethers as hethers } from 'hardhat' -import { addressOf } from './utils/sequence' -import { expect, expectToBeRejected } from './utils' -import { ContractType, Factory, ModuleMock } from './utils/contracts' - -contract('Factory', () => { - let module: ContractType - let factory: ContractType - - beforeEach(async () => { - module = await ModuleMock.deploy() - factory = await Factory.deploy() - - await module.waitForDeployment() - await factory.waitForDeployment() - }) - - describe('Deploy wallets', () => { - it('Should deploy wallet', async () => { - await factory.deploy( - await module.getAddress(), - ethers.AbiCoder.defaultAbiCoder().encode(['address'], [ethers.Wallet.createRandom().address]) - ) - await factory.waitForDeployment() - }) - - it('Should predict wallet address', async () => { - const hash = ethers.hexlify(ethers.randomBytes(32)) - const predict = addressOf(await factory.getAddress(), await module.getAddress(), hash) - await factory.deploy(await module.getAddress(), hash) - await factory.waitForDeployment() - expect(await hethers.provider.getCode(predict)).to.not.equal('0x') - }) - - it('Should initialize with main module', async () => { - const hash = ethers.hexlify(ethers.randomBytes(32)) - await factory.deploy(await module.getAddress(), hash) - const address = addressOf(await factory.getAddress(), await module.getAddress(), hash) - const wallet = await ModuleMock.attach(address) - const receipt = await (await wallet.ping()).wait() - - if (!receipt) { - throw new Error('No receipt') - } - - expect(wallet.interface.parseLog(receipt.logs[0])?.name).to.equal('Pong') - }) - - it('Should fail to deploy twice', async () => { - const hash = ethers.hexlify(ethers.randomBytes(32)) - await factory.deploy(await module.getAddress(), hash) - - const tx2 = factory.deploy(await module.getAddress(), hash) - await expectToBeRejected(tx2, `DeployFailed("${await module.getAddress()}", "${hash}")`) - }) - - it('Should fail to deploy with not enough gas', async () => { - const hash = ethers.hexlify(ethers.randomBytes(32)) - const tx = factory.deploy(await module.getAddress(), hash, { gasLimit: 80000 }) - await expectToBeRejected(tx, `DeployFailed("${await module.getAddress()}", "${hash}")`) - }) - }) -}) diff --git a/packages/wallet-contracts/test/GasEstimation.spec.ts b/packages/wallet-contracts/test/GasEstimation.spec.ts deleted file mode 100644 index 850d6499e9..0000000000 --- a/packages/wallet-contracts/test/GasEstimation.spec.ts +++ /dev/null @@ -1,353 +0,0 @@ -import { ethers } from 'ethers' -import { expect } from './utils' - -import { - CallReceiverMock, - ContractType, - deploySequenceContext, - GasEstimator, - GuestModule, - ModuleMock, - SequenceContext, - MainModuleGasEstimation, - MainModule -} from './utils/contracts' -import { applyTxDefaults, toSimplifiedConfig, Transaction } from './utils/sequence' -import { SequenceWallet } from './utils/wallet' - -function txBaseCost(data: ethers.BytesLike): number { - const bytes = ethers.getBytes(data) - return Number(bytes.reduce((p, c) => (c == 0 ? p + 4n : p + 16n), 0n) + 21000n) -} - -contract('Estimate gas usage', () => { - let context: SequenceContext - - let gasEstimator: ContractType - let callReceiver: ContractType - let guestModule: ContractType - let moduleMock: ContractType - - let wallet: SequenceWallet - - const bundleWithDeploy = async (txData: string) => { - return applyTxDefaults([ - { - target: await context.factory.getAddress(), - data: context.factory.interface.encodeFunctionData('deploy', [await context.mainModule.getAddress(), wallet.imageHash]) - }, - { - target: wallet.address, - data: txData - } - ]) - } - - const estimate = (address: string, data: ethers.BytesLike) => ({ - call: async () => { - return gasEstimator.estimate.staticCall(address, data) - } - }) - - const estimateGasUsage = async ( - txs: Partial[], - wallet: SequenceWallet, - deploy: boolean = false, - nonce: ethers.BigNumberish = 0 - ) => { - const stubSignature = await SequenceWallet.detailedWallet(context, { - threshold: wallet.config.threshold, - signers: toSimplifiedConfig(wallet.config).signers.map(() => ethers.Wallet.createRandom()) - }).signMessage(ethers.randomBytes(32)) - - const txData = wallet.mainModule.interface.encodeFunctionData('execute', [applyTxDefaults(txs), nonce, stubSignature]) - if (!deploy) { - const res = await estimate(wallet.address, txData).call() - return Number(res.gas + BigInt(txBaseCost(txData))) - } - - const guestModuleData = guestModule.interface.encodeFunctionData('execute', [ - await bundleWithDeploy(txData), - 0, - new Uint8Array([]) - ]) - const res = await estimate(await guestModule.getAddress(), guestModuleData).call() - return Number(res.gas + BigInt(txBaseCost(txData))) - } - - const gasUsedFor = async (tx: ethers.ContractTransactionResponse) => { - const receipt = await tx.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - return Number(BigInt(receipt.gasUsed)) - } - - before(async () => { - context = await deploySequenceContext() - - // Deploy MainModuleGasEstimation (hardhat doesn't support overwrites, so we use this as the real module) - context.mainModule = (await MainModuleGasEstimation.deploy()) as any as ContractType - - gasEstimator = await GasEstimator.deploy() - guestModule = await GuestModule.deploy() - moduleMock = await ModuleMock.deploy() - }) - - beforeEach(async () => { - wallet = SequenceWallet.basicWallet(context) - callReceiver = await CallReceiverMock.deploy() - }) - - describe('Estimate gas of transactions', () => { - describe('without wallet deployed', () => { - it('Should estimate wallet deployment', async () => { - wallet = SequenceWallet.basicWallet(context) - const factoryData = context.factory.interface.encodeFunctionData('deploy', [ - await context.mainModule.getAddress(), - wallet.imageHash - ]) - - const estimated = Number(BigInt((await estimate(await context.factory.getAddress(), factoryData).call()).gas)) - const realTx = await context.factory.deploy(await context.mainModule.getAddress(), wallet.imageHash) - expect(estimated + txBaseCost(factoryData)).to.approximately(await gasUsedFor(realTx), 5000) - }) - - it('Should estimate wallet deployment + upgrade', async () => { - const transactions = [ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImplementation', [await moduleMock.getAddress()]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet, true) - - const signature = await wallet.signTransactions(transactions, 0) - const executeTxData = await bundleWithDeploy( - wallet.mainModule.interface.encodeFunctionData('execute', [applyTxDefaults(transactions), 0, signature]) - ) - const realTx = await guestModule.execute(executeTxData, 0, new Uint8Array([])) - - expect(estimated).to.approximately(await gasUsedFor(realTx), 5000) - }) - - it('Should estimate wallet deployment + upgrade + transaction', async () => { - const transactions = [ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImplementation', [await moduleMock.getAddress()]) - }, - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(299))]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet, true) - - const signature = await wallet.signTransactions(transactions, 0) - const executeTxData = await bundleWithDeploy( - wallet.mainModule.interface.encodeFunctionData('execute', [applyTxDefaults(transactions), 0, signature]) - ) - const realTx = await guestModule.execute(executeTxData, 0, new Uint8Array([])) - - expect(estimated).to.approximately(await gasUsedFor(realTx), 5000) - - expect(await callReceiver.lastValA()).to.equal(1n) - }) - - it('Should estimate wallet deployment + upgrade + failed transaction', async () => { - await callReceiver.setRevertFlag(true) - - const transactions = [ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImplementation', [await moduleMock.getAddress()]) - }, - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(299))]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet, true) - - const signature = await wallet.signTransactions(transactions, 0) - const executeTxData = await bundleWithDeploy( - wallet.mainModule.interface.encodeFunctionData('execute', [applyTxDefaults(transactions), 0, signature]) - ) - const realTx = await guestModule.execute(executeTxData, 0, new Uint8Array([])) - - expect(estimated).to.approximately(await gasUsedFor(realTx), 5000) - }) - - it('Should estimate wallet deployment + upgrade + fixed gas transaction', async () => { - const transactions = [ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImplementation', [await moduleMock.getAddress()]) - }, - { - revertOnError: false, - gasLimit: 900000, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(299))]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet, true) - - const signature = await wallet.signTransactions(transactions, 0) - const executeTxData = await bundleWithDeploy( - wallet.mainModule.interface.encodeFunctionData('execute', [applyTxDefaults(transactions), 0, signature]) - ) - const realTx = await guestModule.execute(executeTxData, 0, new Uint8Array([])) - - expect(estimated).to.approximately(await gasUsedFor(realTx), 5000) - }) - }) - ;[ - { - name: 'single signer', - signers: 1 - }, - { - name: 'many signers', - signers: 32 - } - ].map(o => { - describe(`with wallet deployed and ${o.name}`, () => { - beforeEach(async () => { - wallet = SequenceWallet.basicWallet(context, { signing: o.signers }) - await wallet.deploy() - }) - - it('Should estimate single transaction', async () => { - const transactions = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(299))]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet) - const gasUsed = await wallet - .sendTransactions(transactions) - .then(t => t.wait()) - .then(r => Number(r?.gasUsed)) - - expect(estimated).to.approximately(gasUsed, 5000) - }) - - it('Should estimate multiple transactions', async () => { - const transactions = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(299))]) - }, - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(2299))]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet) - const gasUsed = await wallet - .sendTransactions(transactions) - .then(t => t.wait()) - .then(r => Number(r?.gasUsed)) - - // TODO: The estimator overEstimates the gas usage due to the gas refund - expect(gasUsed).to.be.below(estimated) - }) - - it('Should estimate multiple transactions with bad nonce', async () => { - const transactions = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(299))]) - }, - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(2299))]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet, false, 999999999) - const gasUsed = await wallet - .sendTransactions(transactions) - .then(t => t.wait()) - .then(r => Number(r?.gasUsed)) - - // TODO: The estimator overEstimates the gas usage due to the gas refund - expect(gasUsed).to.be.below(estimated) - }) - - it('Should estimate multiple transactions with failing transactions', async () => { - const altCallReceiver = await CallReceiverMock.deploy() - await altCallReceiver.setRevertFlag(true) - - const transactions = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(299))]) - }, - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(2299))]) - }, - { - revertOnError: false, - target: await altCallReceiver.getAddress(), - data: altCallReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(229))]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet) - const gasUsed = await wallet - .sendTransactions(transactions) - .then(t => t.wait()) - .then(r => Number(r?.gasUsed)) - - // TODO: The estimator overEstimates the gas usage due to the gas refund - expect(gasUsed).to.be.below(estimated) - }) - - it('Should estimate multiple transactions with failing transactions and fixed gas limits', async () => { - const altCallReceiver = await CallReceiverMock.deploy() - await altCallReceiver.setRevertFlag(true) - - const transactions = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(299))]) - }, - { - gasLimit: 90000, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(12))]) - }, - { - revertOnError: false, - target: await altCallReceiver.getAddress(), - data: altCallReceiver.interface.encodeFunctionData('testCall', [1, ethers.hexlify(ethers.randomBytes(229))]) - } - ] - - const estimated = await estimateGasUsage(transactions, wallet) - const gasUsed = await wallet - .sendTransactions(transactions) - .then(t => t.wait()) - .then(r => Number(r?.gasUsed)) - - // TODO: The estimator overEstimates the gas usage due to the gas refund - expect(gasUsed).to.be.below(estimated) - }) - }) - }) - }) -}) diff --git a/packages/wallet-contracts/test/GuestModule.spec.ts b/packages/wallet-contracts/test/GuestModule.spec.ts deleted file mode 100644 index 7d466e3816..0000000000 --- a/packages/wallet-contracts/test/GuestModule.spec.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { expect, expectToBeRejected } from './utils' -import { ethers as hethers } from 'hardhat' -import { ethers } from 'ethers' -import { CallReceiverMock, ContractType, GuestModule, HookCallerMock, MainModule } from './utils/contracts' -import { applyTxDefaults, Transaction } from './utils/sequence' - -contract('GuestModule', () => { - let guestModule: ContractType - let callReceiver: ContractType - let hookCallerMock: ContractType - - describe('GuestModule wallet', () => { - before(async () => { - guestModule = await GuestModule.deploy() - callReceiver = await CallReceiverMock.deploy() - hookCallerMock = await HookCallerMock.deploy() - }) - - let valA: bigint - let valB: string - - let transactions: Transaction[] - - beforeEach(async () => { - valA = ethers.toBigInt(ethers.randomBytes(3)) - valB = ethers.hexlify(ethers.randomBytes(120)) - - transactions = applyTxDefaults([ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - ]) - }) - - it('Should accept transactions without signature', async () => { - await guestModule.execute(transactions, 0, new Uint8Array([])) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - it('Should accept transactions on selfExecute', async () => { - await guestModule.selfExecute(transactions) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - it('Should accept transactions with random signature', async () => { - const signature = ethers.randomBytes(96) - - await guestModule.execute(transactions, 0, signature) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - it('Should accept transactions with random nonce', async () => { - const nonce = 9123891 - - await guestModule.execute(transactions, nonce, new Uint8Array([])) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - it('Should revert on delegateCall transactions', async () => { - const transactions = applyTxDefaults([ - { - delegateCall: true - } - ]) - - const tx = guestModule.selfExecute(transactions) - await expectToBeRejected(tx, 'DelegateCallNotAllowed(0)') - }) - it('Should not accept ETH', async () => { - const signer = await hethers.provider.getSigner() - const tx = signer.sendTransaction({ value: 1, to: await guestModule.getAddress() }) - await expect(tx).to.be.rejected - }) - it('Should not implement hooks', async () => { - const tx = hookCallerMock.callERC1155Received(await guestModule.getAddress()) - await expect(tx).to.be.rejected - }) - it('Should not be upgradeable', async () => { - const mainModule = await MainModule.attach(await guestModule.getAddress()) - const newImageHash = ethers.hexlify(ethers.randomBytes(32)) - - const migrateBundle = applyTxDefaults([ - { - target: await mainModule.getAddress(), - data: mainModule.interface.encodeFunctionData('updateImageHash', [newImageHash]) - } - ]) - - const tx = guestModule.selfExecute(migrateBundle) - await expect(tx).to.be.rejected - }) - }) -}) diff --git a/packages/wallet-contracts/test/LibBytes.spec.ts b/packages/wallet-contracts/test/LibBytes.spec.ts deleted file mode 100644 index 0212ccb8ac..0000000000 --- a/packages/wallet-contracts/test/LibBytes.spec.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { ethers } from 'ethers' - -import { expect, expectStaticToBeRejected, randomHex } from './utils' -import { ContractType, LibBytesImpl, LibBytesPointerImpl } from './utils/contracts' - -contract('LibBytes', () => { - let libBytes: ContractType - let libBytesPointer: ContractType - - before(async () => { - libBytes = await LibBytesImpl.deploy() - libBytesPointer = await LibBytesPointerImpl.deploy() - }) - - describe('readFirstUint16', () => { - it('Should read first uint16', async () => { - const res = await libBytesPointer.readFirstUint16('0x03021e4453120a') - expect(res[0]).to.equal(770n) - expect(res[1]).to.equal(2n) - }) - - it('Should read first uint16 of 2 byte array', async () => { - const res = await libBytesPointer.readFirstUint16('0xff0a') - expect(res[0]).to.equal(65290n) - expect(res[1]).to.equal(2n) - }) - - it('Should read first uint16 out of bounds', async () => { - const res = await libBytesPointer.readFirstUint16('0x') - expect(res[0]).to.equal(0n) - expect(res[1]).to.equal(2n) - }) - }) - - describe('readBytes32', () => { - let bytes32: string - beforeEach(async () => { - bytes32 = randomHex(32) - }) - it('Should read bytes32 at index zero', async () => { - const data = bytes32.concat(randomHex(16).slice(2)) - - const res = await libBytes.readBytes32(data, 0) - expect(res).to.equal(bytes32) - }) - it('Should read bytes32 at given index', async () => { - const data = randomHex(12).concat(bytes32.slice(2)).concat(randomHex(44).slice(2)) - - const res = await libBytes.readBytes32(data, 12) - expect(res).to.equal(bytes32) - }) - it('Should read bytes32 at last index', async () => { - const data = randomHex(11).concat(bytes32.slice(2)) - - const res = await libBytes.readBytes32(data, 11) - expect(res).to.equal(bytes32) - }) - it('Should read bytes32 out of bounds', async () => { - const data = randomHex(11).concat(bytes32.slice(2)) - const res = await libBytes.readBytes32(data, 12) - expect(res).to.equal('0x' + data.slice(26, 26 + 64) + '00') - }) - it('Should read bytes32 totally out of bounds', async () => { - const res = await libBytes.readBytes32('0x010203', 3145) - expect(res).to.equal(ethers.ZeroHash) - }) - }) - - describe('readUint32', () => { - it('Should read uint32 at index zero', async () => { - const res = await libBytes.readUint32('0x837fc8a10d', 0) - expect(res).to.equal(2206189729n) - }) - it('Should read uint32 at given index', async () => { - const res = await libBytes.readUint32('0x5a9c2a992a8c22199af0', 3) - expect(res).to.equal(2569702434n) - }) - it('Should read uint32 at last index', async () => { - const res = await libBytes.readUint32('0x029183af982299dfa001', 6) - expect(res).to.equal(2581569537n) - }) - it('Should read zeros uint32 out of bounds', async () => { - const res1 = await libBytes.readUint32('0x2293', 1) - const res2 = await libBytes.readUint32('0x2193000000', 1) - expect(res1).to.equal(2466250752n) - expect(res1).to.equal(res2) - }) - it('Should read all zeros uint32 fully out of bounds', async () => { - const res = await libBytes.readUint32('0xff92a09f339922', 15) - expect(res).to.equal(0n) - }) - }) - - describe('readUint16', () => { - it('Should read uint16 at index zero', async () => { - const res = await libBytesPointer.readUint16('0x5202', 0) - expect(res[0]).to.equal(20994n) - expect(res[1]).to.equal(2n) - }) - it('Should read uint16 at given index', async () => { - const res = await libBytesPointer.readUint16('0x5a9c2a1019d401d3', 3) - expect(res[0]).to.equal(4121n) - expect(res[1]).to.equal(5n) - }) - it('Should read uint16 at last index', async () => { - const res = await libBytesPointer.readUint16('0x020414', 1) - expect(res[0]).to.equal(1044n) - expect(res[1]).to.equal(3n) - }) - it('Should read zeros uint16 out of bounds', async () => { - const res1 = await libBytesPointer.readUint16('0x5a', 0) - const res2 = await libBytesPointer.readUint16('0x5a00', 0) - expect(res1[0]).to.equal(23040n) - expect(res1[0]).to.equal(res2[0]) - expect(res1[1]).to.equal(2n) - }) - it('Should read zeros uint16 fully out of bounds', async () => { - const res = await libBytesPointer.readUint16('0x5a9ca2', 12) - expect(res[0]).to.equal(0n) - expect(res[1]).to.equal(14n) - }) - }) - - describe('readUint24', () => { - it('Should read uint24 at index zero', async () => { - const res = await libBytesPointer.readUint24('0x5202fa', 0) - expect(res[0]).to.equal(5374714n) - expect(res[1]).to.equal(3n) - }) - it('Should read uint24 at given index', async () => { - const res = await libBytesPointer.readUint24('0x5202f7220c', 2) - expect(res[0]).to.equal(16196108n) - expect(res[1]).to.equal(5n) - }) - it('Should read uint24 at last index', async () => { - const res = await libBytesPointer.readUint24('0x021f2b00', 1) - expect(res[0]).to.equal(2042624n) - expect(res[1]).to.equal(4n) - }) - it('Should read zeros uint24 out of bounds', async () => { - const res1 = await libBytesPointer.readUint24('0xf598', 0) - const res2 = await libBytesPointer.readUint24('0xf59800', 0) - expect(res1[0]).to.equal(16095232n) - expect(res1[0]).to.equal(res2[0]) - expect(res1[1]).to.equal(3n) - }) - it('Should read zeros uint24 fully out of bounds', async () => { - const res = await libBytesPointer.readUint24('0x5a9ca221', 12) - expect(res[0]).to.equal(0n) - expect(res[1]).to.equal(15n) - }) - }) - - describe('readUint64', () => { - it('Should read uint64 at index zero', async () => { - const res = await libBytesPointer.readUint64('0xc1725050681dcb2a', 0) - expect(res[0]).to.equal(13939292102939495210n) - expect(res[1]).to.equal(8n) - }) - it('Should read uint64 at given index', async () => { - const res = await libBytesPointer.readUint64('0x0837acc1725050681dcb2a01cc', 3) - expect(res[0]).to.equal(13939292102939495210n) - expect(res[1]).to.equal(11n) - }) - it('Should read uint64 at last index', async () => { - const res = await libBytesPointer.readUint64('0x0837acc1725050681dcb2a', 3) - expect(res[0]).to.equal(13939292102939495210n) - expect(res[1]).to.equal(11n) - }) - it('Should read zeros uint64 out of bounds', async () => { - const res1 = await libBytesPointer.readUint64('0x5a', 0) - const res2 = await libBytesPointer.readUint64('0x5a00', 0) - const res3 = await libBytesPointer.readUint64('0x5a00000000000000', 0) - expect(res1[0]).to.equal(6485183463413514240n) - expect(res1[0]).to.equal(res2[0]) - expect(res1[0]).to.equal(res3[0]) - expect(res1[1]).to.equal(8n) - }) - it('Should read zeros uint64 fully out of bounds', async () => { - const res = await libBytesPointer.readUint64('0x5a9ca2', 12) - expect(res[0]).to.equal(0n) - expect(res[1]).to.equal(20n) - }) - }) -}) diff --git a/packages/wallet-contracts/test/LibString.spec.ts b/packages/wallet-contracts/test/LibString.spec.ts deleted file mode 100644 index 7ca5f5c93c..0000000000 --- a/packages/wallet-contracts/test/LibString.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { ethers } from 'ethers' - -import { expect, expectStaticToBeRejected, randomHex } from './utils' -import { ContractType, LibStringImp } from './utils/contracts' - -contract('LibString', () => { - let libString: ContractType - - before(async () => { - libString = await LibStringImp.deploy() - }) - - describe('bytesToHexadecimal', () => { - new Array(99).fill(0).map((_, i) => { - it(`Should convert ${i} bytes to hexadecimal`, async () => { - const bytes = randomHex(i) - const expected = ethers.hexlify(bytes) - const result = await libString.bytesToHexadecimal(bytes) - expect(result).to.eq(expected.slice(2)) - - const prefixed = await libString.prefixHexadecimal(result) - expect(prefixed).to.eq(expected) - }) - }) - }) - - describe('bytesToBase32', () => { - ;[ - ['0x', 'b'], - ['0x69', 'bne'], - ['0x8775', 'bq52q'], - ['0x91e0f3', 'bshqpg'], - ['0x4867e789', 'bjbt6pci'], - ['0x456fe65b8d', 'bivx6mw4n'], - ['0xb20b0f525320', 'bwifq6ustea'], - ['0xd292f6c85f4e5a', 'b2kjpnsc7jzna'], - ['0xf78beb02b622adc7', 'b66f6wavwekw4o'], - ['0xfad9c9851352f0ae0e', 'b7lm4tbitklyk4dq'], - ['0x30b4bca5f67cc95312be', 'bgc2lzjpwptevgev6'], - ['0xebc9fd66e4ae84644d502b', 'b5pe72zxev2cgitkqfm'], - ['0x0f198dc28836e24782e8d182', 'bb4my3quig3repaxi2gba'], - ['0x50059d23099f062187e9d52d8a', 'bkacz2iyjt4dcdb7j2uwyu'], - ['0x4c0e454dc43d303c896ef5f9c449', 'bjqhektoehuydzclo6x44isi'], - ['0x1ee41f4e940e4bf14df57a4fc06dd9', 'bd3sb6tuubzf7ctpvpjh4a3oz'], - ['0x04a8d211d53b45d29fed9a624bb2d5e0', 'basuneeovhnc5fh7ntjrexmwv4a'], - ['0x0a8b878364cdd555bda61db7c67503bb5e', 'bbkfypa3ezxkvlpngdw34m5idxnpa'], - ['0x313b3c6e446ee6eb6477c0b0b01b70799cb6', 'bge5ty3sen3towzdxycylag3qpgolm'], - ['0xe8be4a44970232babf052c3e75f611df8099c5', 'b5c7eurexaizlvpyffq7hl5qr36ajtri'], - ['0x461eb18d034475a35d4084a89e0e3a47980f3408', 'biyplddidir22gxkaqsuj4dr2i6ma6nai'], - ['0x519e139092a60229fe1a4db06d26fd199af9d39680', 'bkgpbheesuybct7q2jwyg2jx5dgnptu4wqa'], - ['0x0fdd1a5696148daf6986505e2b3dc9af16ed91452720', 'bb7oruvuwcsg262mgkbpcwpojv4lo3ekfe4qa'], - ['0x63a77d886c3f6593b6c6d37c7ab1f16ca3e34bd67e1ae1', 'bmotx3cdmh5szhnwg2n6hvmprnsr6gs6wpynoc'], - ['0x1198cc96b431176fc2d5bc8a8c49ce041e184649ec3b9cbb', 'bcgmmzfvugelw7qwvxsfiysooaqpbqrsj5q5zzoy'], - ['0x6b8d9af44a31c799ef835a522f8b630435c8e77e844360ad3d', 'bnogzv5ckghdzt34dljjc7c3daq24rz36qrbwblj5'], - ['0xbb2cb7057a24b8588bafd87907ee7579b159027dc7224a3f6540', 'bxmwlobl2es4frc5p3b4qp3tvpgyvsat5y4reup3fia'], - ['0x1f64b537d0e4b0158142dfa7cbfd9af76af0931862e48df02ba35b', 'bd5slkn6q4syblakc36t4x7m265vpbeyymlsi34blunnq'], - ['0x11c5655f9d5496039fe6b1a9651014d4a19e62331d61e73b48fec776', 'bchcwkx45kslahh7gwguwkeau2sqz4yrtdvq6oo2i73dxm'], - ['0x752c3c5cb4a3f06e4feff3f543278e97c7626569994b12b0d9ba9c7c83', 'bouwdyxfuupyg4t7p6p2ugj4os7dwezljtffrfmgzxkohzay'], - ['0xb6bd83f8bba80bc8aca3706f7090cd5a0f0cc6adf4e89614bff58c149880', 'bw26yh6f3vaf4rlfdobxxbegnlihqzrvn6tujmff76wgbjgea'], - ['0x90f4b198a1a1b2d3e01c36ba3460f46249f180dfa67b152f81552266a18708', 'bsd2ldgfbugznhya4g25diyhumje7dag7uz5rkl4bkurgnimhba'], - [ - '0x24cda83efac2802425b1c35a2d21b01576e71d0e512bcc80840f85f9e0af2faa', - 'betg2qpx2ykacijnrynnc2inqcv3oohiokev4zaeeb6c7tyfpf6va' - ], - [ - '0x169dc221f4cec8756de592c3205a23177867f18c383d2251bd1a5c03cc346c3fe8', - 'bc2o4eipuz3ehk3pfslbsawrdc54gp4mmha6seun5djoahtbunq76q' - ], - [ - '0x65b13b1aef3e44180314108b7f0434ddc23ad740a0df4df7984ad0bf1fdd84edcbaf', - 'bmwytwgxphzcbqayuccfx6bbu3xbdvv2audpu354yjlil6h65qtw4xly' - ] - ].map(([bytes, base32Encoded]) => { - it(`Should convert ${ethers.getBytes(bytes).length} bytes to base32`, async () => { - const result = await libString.bytesToBase32(bytes) - expect(result).to.equal(base32Encoded.slice(1)) - - const prefixed = await libString.prefixBase32(result) - expect(prefixed).to.equal(base32Encoded) - }) - }) - }) -}) diff --git a/packages/wallet-contracts/test/MainModule.bench.ts b/packages/wallet-contracts/test/MainModule.bench.ts deleted file mode 100644 index bf192462d3..0000000000 --- a/packages/wallet-contracts/test/MainModule.bench.ts +++ /dev/null @@ -1,198 +0,0 @@ -import { ethers } from 'ethers' - -import { deploySequenceContext, SequenceContext } from './utils/contracts' -import { SequenceWallet } from './utils/wallet' -import { Transaction } from './utils/sequence' - -const optimalGasLimit = 2n ** 22n -const runs = 256 - -function report2(values: ethers.BigNumberish[]) { - const bns = values.map(v => BigInt(v)) - - const min = bns.reduce((a, b) => (a < b ? a : b)) - const max = bns.reduce((a, b) => (a > b ? a : b)) - const avg = bns.reduce((p, n) => (p + n) / BigInt(values.length)) - - return { min, max, avg } -} - -function report(test: string, values: ethers.BigNumberish[]) { - const { min, max, avg } = report2(values) - console.info(` -> ${test} runs: ${values.length} cost min: ${min.toString()} max: ${max.toString()} avg: ${avg.toString()}`) -} - -contract('MainModule', () => { - let context: SequenceContext - - before(async () => { - context = await deploySequenceContext() - }) - - if (process.env.BENCHMARK) { - describe.only('Benchmark', function () { - ;(this as any).timeout(0) - - it('Deploy a wallet', async () => { - const results: ethers.BigNumberish[] = [] - - for (let i = 0; i < runs; i++) { - const tx = await SequenceWallet.basicWallet(context).deploy() - const receipt = await tx?.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - results.push(receipt.gasUsed) - } - - report('deploy wallets', results) - }) - - it('Relay 1/1 transaction', async () => { - const results: ethers.BigNumberish[] = [] - - for (let i = 0; i < runs; i++) { - const wallet = SequenceWallet.basicWallet(context) - await wallet.deploy() - const tx = await wallet.sendTransactions([{}]) - const receipt = await tx.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - results.push(receipt.gasUsed) - } - - report('relay 1/1 transaction', results) - }) - - const batches = [2, 3, 5, 10, 50, 100] - batches.forEach(n => { - it(`Relay 1/1 ${n} transactions`, async () => { - const results: ethers.BigNumberish[] = [] - - const transactions = new Array(n).fill(0).map(() => ({ - delegateCall: false, - revertOnError: true, - gasLimit: optimalGasLimit, - target: ethers.ZeroAddress, - value: 0n, - data: '0x0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12e0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12e' - })) - - for (let i = 0; i < runs; i++) { - const wallet = SequenceWallet.basicWallet(context) - await wallet.deploy() - const tx = await wallet.sendTransactions(transactions) - const receipt = await tx.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - results.push(receipt.gasUsed) - } - - report(`relay 1/1 ${n} transactions`, results) - }) - }) - - batches.forEach(n => { - const ntxs = Math.floor(n / 2) - const nfailing = n - ntxs - it(`Relay 1/1 ${ntxs} transactions and ${nfailing} failing transactions`, async () => { - const results: ethers.BigNumberish[] = [] - - const transactions: Transaction[] = new Array(ntxs) - .fill(0) - .map(() => ({ - delegateCall: false, - revertOnError: true, - gasLimit: optimalGasLimit, - target: ethers.ZeroAddress, - value: 0n, - data: new Uint8Array([]) - })) - .concat( - await Promise.all( - new Array(nfailing).fill(0).map(async () => ({ - delegateCall: false, - revertOnError: false, - gasLimit: optimalGasLimit, - target: await context.factory.getAddress(), - value: 0n, - data: new Uint8Array([]) - })) - ) - ) - - for (let i = 0; i < runs; i++) { - const wallet = SequenceWallet.basicWallet(context) - await wallet.deploy() - const tx = await wallet.sendTransactions(transactions) - const receipt = await tx.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - results.push(receipt.gasUsed) - } - - report(`relay 1/1 ${ntxs} transactions and ${nfailing} failing transactions`, results) - }) - }) - - const transaction: Transaction = { - delegateCall: false, - revertOnError: true, - gasLimit: optimalGasLimit, - target: ethers.ZeroAddress, - value: 0n, - data: new Uint8Array([]) - } - - it('Relay 2/5 transaction', async () => { - const results: ethers.BigNumberish[] = [] - - for (let i = 0; i < runs; i++) { - const wallet = SequenceWallet.basicWallet(context, { signing: [3, 1], idle: [1, 1, 3], threshold: 4 }) - await wallet.deploy() - const tx = await wallet.sendTransactions([transaction]) - const receipt = await tx.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - results.push(receipt.gasUsed) - } - - report('relay 2/5 transaction', results) - }) - - it('Relay 255/255 transaction', async () => { - const results: ethers.BigNumberish[] = [] - - for (let i = 0; i < runs; i++) { - const wallet = SequenceWallet.basicWallet(context, { signing: 255, idle: 0, threshold: 255 }) - await wallet.deploy() - - const tx = await wallet.sendTransactions([transaction], undefined, { gasLimit: 60000000 }) - const receipt = await tx.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - results.push(receipt.gasUsed) - } - - report('relay 255/255 transaction', results) - }) - }) - } -}) diff --git a/packages/wallet-contracts/test/MainModule.spec.ts b/packages/wallet-contracts/test/MainModule.spec.ts deleted file mode 100644 index b6204f9fc8..0000000000 --- a/packages/wallet-contracts/test/MainModule.spec.ts +++ /dev/null @@ -1,2247 +0,0 @@ -import { ethers } from 'ethers' -import { ethers as hethers } from 'hardhat' - -import { bytes32toAddress, getChainId, expect, expectToBeRejected, randomHex, getSigHash } from './utils' - -import { - CallReceiverMock, - ContractType, - deploySequenceContext, - ModuleMock, - SequenceContext, - DelegateCallMock, - HookMock, - HookCallerMock, - GasBurnerMock, - AlwaysRevertMock -} from './utils/contracts' -import { Imposter } from './utils/imposter' -import { - applyTxDefaults, - computeStorageKey, - digestOf, - encodeNonce, - leavesOf, - legacyTopology, - merkleTopology, - optimize2SignersTopology, - printTopology, - SignatureType, - SimplifiedWalletConfig, - subdigestOf, - toSimplifiedConfig, - WalletConfig -} from './utils/sequence' -import { SequenceWallet, StaticSigner } from './utils/wallet' - -contract('MainModule', (accounts: string[]) => { - let context: SequenceContext - let callReceiver: ContractType - - let wallet: SequenceWallet - - before(async () => { - context = await deploySequenceContext() - }) - - beforeEach(async () => { - callReceiver = await CallReceiverMock.deploy() - await callReceiver.waitForDeployment() - - wallet = SequenceWallet.basicWallet(context) - await wallet.deploy() - }) - - describe('Nested signatures', () => { - it('Should accept simple nested signed ERC1271 message', async () => { - // Wallet A - const wallet_a = SequenceWallet.basicWallet(context) - await wallet_a.deploy() - - wallet = SequenceWallet.detailedWallet(context, { threshold: 1, signers: [wallet_a] }) - await wallet.deploy() - - const message = randomHex(32) - const signature = await wallet.signMessage(message) - - const hookCaller = await HookCallerMock.deploy() - await hookCaller.callERC1271isValidSignatureData(wallet.address, message, signature) - }) - - it('Should accept simple nested signer', async () => { - // Wallet A - const wallet_a = SequenceWallet.basicWallet(context) - await wallet_a.deploy() - - wallet = SequenceWallet.detailedWallet(context, { threshold: 1, signers: [wallet_a] }) - await wallet.deploy() - - const valA = 4123222n - const valB = randomHex(99) - - const transaction = { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - - await wallet.sendTransactions([transaction]) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - - it('Should accept two nested signers', async () => { - // WalletA - const wallet_a = SequenceWallet.basicWallet(context) - await wallet_a.deploy() - - // WalletB - const wallet_b = SequenceWallet.basicWallet(context) - await wallet_b.deploy() - - // Top level wallet - wallet = SequenceWallet.detailedWallet(context, { threshold: 1, signers: [wallet_a, wallet_b] }) - await wallet.deploy() - - const valA = 4123222n - const valB = randomHex(99) - - const transaction = { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - - await wallet.sendTransactions([transaction]) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - - it('Should accept mixed nested and eoa signers', async () => { - // WalletA - const wallet_a = SequenceWallet.basicWallet(context) - await wallet_a.deploy() - - // EOA (B) - const singer_b = ethers.Wallet.createRandom() - - // Top level wallet - wallet = SequenceWallet.detailedWallet(context, { threshold: 1, signers: [wallet_a, singer_b] }) - await wallet.deploy() - - const valA = 4123222n - const valB = randomHex(99) - - const transaction = { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - - await wallet.sendTransactions([transaction]) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - ;[ - { - name: '2 nested sequence wallets', - childs: 1, - depth: 2 - }, - { - name: '64 nested sequence wallets', - childs: 1, - depth: 64 - }, - { - name: '97 nested sequence wallets', - childs: 1, - depth: 97 - }, - { - name: 'binary tree of sequence wallets', - childs: 2, - depth: 5 - }, - { - name: 'ternary tree of sequence wallets', - childs: 3, - depth: 4 - }, - { - name: 'hexary tree of sequence wallets', - childs: 16, - depth: 2 - }, - { - name: 'random tree of sequence wallets (depth 1)', - depth: 1 - }, - { - name: 'random tree of sequence wallets (depth 2)', - depth: 2 - }, - { - name: 'random tree of sequence wallets (depth 3)', - depth: 3 - }, - { - name: 'random tree of sequence wallets (depth 4)', - depth: 4 - } - ].map(c => { - it(`Should handle ${c.name}`, async () => { - const genWallet = async ( - depth: number, - numChilds: number | undefined, - max: number - ): Promise => { - if (depth === max) { - return ethers.Wallet.createRandom() - } - - const nchilds = numChilds || Math.floor(Math.random() * 5) + 1 - const childs = await Promise.all(new Array(nchilds).fill(0).map(async () => genWallet(depth + 1, nchilds, max))) - const wallet = SequenceWallet.detailedWallet(context, { threshold: childs.length, signers: childs }) - await wallet.deploy() - - return wallet - } - - wallet = (await genWallet(0, c.childs, c.depth)) as SequenceWallet - - const valA = 5423n - const valB = randomHex(120) - - const transaction = { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - - await wallet.sendTransactions([transaction], undefined, { gasLimit: 50000000 }) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - }) - - it('Should reject invalid nested signature', async () => { - const wallet_a = SequenceWallet.basicWallet(context) - await wallet_a.deploy() - - let wallet_b = SequenceWallet.basicWallet(context) - await wallet_b.deploy() - - wallet = SequenceWallet.detailedWallet(context, { threshold: 1, signers: [wallet_a, wallet_b] }) - await wallet.deploy() - - const imposter = Imposter.random(wallet_b.signers[0] as StaticSigner) - wallet_b = wallet_b.useSigners([imposter]) - wallet = wallet.useSigners([wallet_a, wallet_b]) - - const transaction = { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [5423, randomHex(32)]) - } - - const subdigest = await subdigestOf(wallet.address, digestOf([transaction], await wallet.getNonce())) - const badNestedSignature = await wallet_b.signDigest(subdigest).then(s => s + '03') - - const tx = wallet.sendTransactions([transaction]) - await expectToBeRejected(tx, `InvalidNestedSignature("${subdigest}", "${wallet_b.address}", "${badNestedSignature}")`) - }) - - it('Should enforce threshold on nested sigantures', async () => { - const wallet_a = SequenceWallet.basicWallet(context) - await wallet_a.deploy() - - let wallet_b = SequenceWallet.basicWallet(context) - await wallet_b.deploy() - - wallet = SequenceWallet.detailedWallet(context, { threshold: 3, signers: [wallet_a, wallet_b] }) - await wallet.deploy() - - const signauture = await wallet.signTransactions([{}]) - const subdigest = await subdigestOf(wallet.address, digestOf([{}], await wallet.getNonce())) - - const tx = wallet.relayTransactions([{}], signauture) - await expect(tx).to.be.rejected - }) - - it('Should read weight of nested wallets', async () => { - const wallet_a = SequenceWallet.basicWallet(context) - await wallet_a.deploy() - - const wallet_b = SequenceWallet.basicWallet(context) - await wallet_b.deploy() - - const wallet_c = SequenceWallet.basicWallet(context) - await wallet_c.deploy() - - wallet = SequenceWallet.detailedWallet(context, { - threshold: 2, - signers: [wallet_a, wallet_b, { weight: 2, value: wallet_c }] - }) - await wallet.deploy() - - const valA = 5423n - const valB = randomHex(120) - - const transaction = { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - - await wallet.useSigners(wallet_c).sendTransactions([transaction]) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - }) - - describe('Authentication', () => { - it('Should accept initial owner signature', async () => { - await wallet.sendTransactions([{}]) - }) - - it('Should reject non-owner signature', async () => { - const tx = wallet.useSigners(Imposter.random(wallet.signers[0] as StaticSigner)).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - describe('Network ID', () => { - it('Should reject a transaction of another network id', async () => { - wallet = wallet.useChainId((await getChainId()) + 1n) - const tx = wallet.sendTransactions([{}]) - await expectToBeRejected(tx, 'InvalidSignature') - }) - - describe('Universal network signatures', async () => { - it('Should reject signature for another network id, even if encoded as universal', async () => { - wallet = wallet.useChainId((await getChainId()) + 1n) - const tx = wallet.sendTransactions([{}]) - await expectToBeRejected(tx, 'InvalidSignature') - }) - - it('Should reject signature with chainId zero if not using special encoding', async () => { - wallet = wallet.useChainId(0) - const tx = wallet.sendTransactions([{}]) - await expectToBeRejected(tx, 'InvalidSignature') - }) - - it('Should accept transaction with chainId zero if encoded with no chaind type', async () => { - wallet = wallet.useChainId(0).useEncodingOptions({ signatureType: SignatureType.NoChaindDynamic }) - await wallet.sendTransactions([{}]) - }) - }) - }) - - describe('Nonce', () => { - const spaces = [0n, 1n, 7342n, ethers.toBigInt(ethers.randomBytes(20)), 2n ** 160n - 1n] - - describe('Using non-encoded nonce', () => { - it('Should default to space zero', async () => { - await wallet.sendTransactions([{}]) - expect(await wallet.mainModule.nonce()).to.equal(1n) - }) - - it('Should work with zero as initial nonce', async () => { - await wallet.sendTransactions([{}]) - expect(await wallet.mainModule.readNonce(0)).to.equal(1n) - }) - - it('Should emit NonceChange event', async () => { - const receipt1 = await wallet.sendTransactions([{}]).then(t => t.wait()) - const receipt2 = await wallet.sendTransactions([{}]).then(t => t.wait()) - - if (!receipt1 || !receipt2) { - throw new Error('No receipt') - } - - const events1 = receipt1.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const ev1 = events1.find(ev => ev.eventName === 'NonceChange') - expect(ev1!.eventName).to.be.eql('NonceChange') - expect(ev1!.args._space).to.equal(0n) - expect(ev1!.args._newNonce).to.equal(1n) - - const events2 = receipt2.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const ev2 = events2.find(ev => ev.eventName === 'NonceChange') - expect(ev2!.eventName).to.be.eql('NonceChange') - expect(ev1!.args._space).to.equal(0n) - expect(ev2!.args._newNonce).to.equal(2n) - }) - - it('Should fail if nonce did not change', async () => { - await wallet.sendTransactions([{}], 0) - const tx = wallet.sendTransactions([{}], 0) - await expectToBeRejected(tx, `BadNonce(0, 0, 1)`) - }) - - it('Should fail if nonce increased by two', async () => { - await wallet.sendTransactions([{}]) - const tx = wallet.sendTransactions([{}], 2) - await expectToBeRejected(tx, `BadNonce(0, 2, 1)`) - }) - }) - - spaces.forEach(space => { - describe(`using ${ethers.toBeHex(space)} space`, () => { - it('Should work with zero as initial nonce', async () => { - await wallet.sendTransactions([{}], encodeNonce(space, 0)) - expect(await wallet.mainModule.readNonce(space)).to.equal(1n) - }) - - it('Should emit NonceChange event', async () => { - const receipt1 = await wallet.sendTransactions([{}], encodeNonce(space, 0)).then(t => t.wait()) - const receipt2 = await wallet.sendTransactions([{}], encodeNonce(space, 1)).then(t => t.wait()) - - if (!receipt1 || !receipt2) { - throw new Error('No receipt') - } - - const events1 = receipt1.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const ev1 = events1.find(ev => ev.eventName === 'NonceChange') - expect(ev1!.eventName).to.be.eql('NonceChange') - expect(ev1!.args!._space).to.equal(space) - expect(ev1!.args!._newNonce).to.equal(1n) - - const events2 = receipt2.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const ev2 = events2.find(ev => ev.eventName === 'NonceChange') - expect(ev2!.eventName).to.be.eql('NonceChange') - expect(ev2!.args!._space).to.equal(space) - expect(ev2!.args!._newNonce).to.equal(2n) - }) - - it('Should accept next nonce', async () => { - await wallet.sendTransactions([{}], encodeNonce(space, 0)) - await wallet.sendTransactions([{}], encodeNonce(space, 1)) - - expect(await wallet.mainModule.readNonce(space)).to.equal(2n) - }) - - it('Should fail if nonce did not change', async () => { - await wallet.sendTransactions([{}], encodeNonce(space, 0)) - const tx = wallet.sendTransactions([{}], encodeNonce(space, 0)) - - await expectToBeRejected(tx, `BadNonce(${space.toString()}, 0, 1)`) - }) - - it('Should fail if nonce increased by two', async () => { - await wallet.sendTransactions([{}], encodeNonce(space, 0)) - const tx = wallet.sendTransactions([{}], encodeNonce(space, 2)) - - await expectToBeRejected(tx, `BadNonce(${space.toString()}, 2, 1)`) - }) - - it('Should use nonces storage keys', async () => { - const subkey = ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [space]) - const storageKey = computeStorageKey('org.arcadeum.module.calls.nonce', subkey) - - await wallet.sendTransactions([{}], encodeNonce(space, 0)) - - const storageValue = await hethers.provider.getStorage(wallet.address, storageKey) - expect(BigInt(storageValue)).to.equal(1n) - }) - }) - }) - - describe('using two spaces simultaneously', () => { - it('Should keep separated nonce counts', async () => { - await wallet.sendTransactions([{}], encodeNonce(1, 0)) - - expect(await wallet.mainModule.readNonce(1)).to.equal(1n) - expect(await wallet.mainModule.readNonce(2)).to.equal(0n) - - await wallet.sendTransactions([{}], encodeNonce(2, 0)) - - expect(await wallet.mainModule.readNonce(1)).to.equal(1n) - expect(await wallet.mainModule.readNonce(2)).to.equal(1n) - await wallet.sendTransactions([{}], encodeNonce(2, 1)) - await wallet.sendTransactions([{}], encodeNonce(2, 2)) - - expect(await wallet.mainModule.readNonce(1)).to.equal(1n) - expect(await wallet.mainModule.readNonce(2)).to.equal(3n) - }) - - it('Should emit different events', async () => { - await wallet.sendTransactions([{}], encodeNonce(1, 0)) - await wallet.sendTransactions([{}], encodeNonce(1, 1)) - - const receipt1 = await wallet.sendTransactions([{}], encodeNonce(1, 2)).then(t => t.wait()) - const receipt2 = await wallet.sendTransactions([{}], encodeNonce(2, 0)).then(t => t.wait()) - - if (!receipt1 || !receipt2) { - throw new Error('No receipt') - } - - const events1 = receipt1.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const ev1 = events1.find(ev => ev.eventName === 'NonceChange') - expect(ev1!.eventName).to.be.eql('NonceChange') - expect(ev1!.args!._space).to.equal(1n) - expect(ev1!.args!._newNonce).to.equal(3n) - - const events2 = receipt2.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const ev2 = events2.find(ev => ev.eventName === 'NonceChange') - expect(ev2!.eventName).to.be.eql('NonceChange') - expect(ev2!.args!._space).to.equal(2n) - expect(ev2!.args!._newNonce).to.equal(1n) - }) - - it('Should not accept nonce of different space', async () => { - await wallet.sendTransactions([{}], encodeNonce(1, 0)) - const tx = wallet.sendTransactions([{}], encodeNonce(2, 1)) - await expectToBeRejected(tx, `BadNonce(2, 1, 0)`) - }) - }) - }) - - it('Should reject signature with invalid flag', async () => { - const tx = wallet.relayTransactions([{}], '0x000193812833ff01') - await expectToBeRejected(tx, 'InvalidSignatureFlag(255)') - }) - - it('Should reject signature with bad encoding type', async () => { - const tx = wallet.relayTransactions([{}], '0x2012') - const subdigest = await subdigestOf(wallet.address, digestOf([{}], 0)) - await expectToBeRejected(tx, `InvalidSignatureType("0x20")`) - }) - - it('Should reject direct calls to templates', async () => { - const tx1 = context.mainModule.execute([], 0, '0x') - await expectToBeRejected(tx1, 'OnlyDelegatecall') - - const tx2 = context.mainModuleUpgradable.execute([], 0, '0x') - await expectToBeRejected(tx2, 'OnlyDelegatecall') - }) - - it('Should reject empty dynamic signature', async () => { - const tx = wallet.relayTransactions([{}], '0x0001000000000201ABFf4013541fd79ee5b6847C9dF3C9B34183C283000000') - await expectToBeRejected(tx, 'EmptySignature()') - }) - }) - - describe('Upgradeability', () => { - it('Should update implementation', async () => { - const newImplementation = await ModuleMock.deploy() - - const transaction = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImplementation', [await newImplementation.getAddress()]) - } - - await wallet.sendTransactions([transaction]) - - const mock_wallet = ModuleMock.attach(wallet.address) - const tx = await mock_wallet.ping() - const receipt = await tx.wait() - - const events = receipt!.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - - expect(events![0].eventName).to.equal('Pong') - }) - it('Should fail to set implementation to address 0', async () => { - const transaction = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImplementation', [ethers.ZeroAddress]) - } - - const tx = wallet.sendTransactions([transaction]) - await expectToBeRejected(tx, `InvalidImplementation("${ethers.ZeroAddress}")`) - }) - it('Should fail to set implementation to non-contract', async () => { - const transaction = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImplementation', [accounts[1]]) - } - - const tx = wallet.sendTransactions([transaction]) - await expectToBeRejected(tx, `InvalidImplementation("${accounts[1]}")`) - }) - it('Should use implementation storage key', async () => { - await wallet.updateImageHash(ethers.randomBytes(32)) - - const storageValue = await hethers.provider.getStorage(wallet.address, wallet.address) - expect(bytes32toAddress(storageValue)).to.equal(await context.mainModuleUpgradable.getAddress()) - }) - }) - - describe('Extra image hashes', () => { - ;[ - { - name: 'using MainModule', - beforeEach: () => {} - }, - { - name: 'using MainModuleUpgradable', - beforeEach: async () => { - const newConfig = SequenceWallet.basicWallet(context) - await wallet.updateImageHash(newConfig.imageHash) - wallet = wallet.useAddress().useConfig(newConfig.config).useSigners(newConfig.signers) - } - } - ].map(c => { - describe(c.name, () => { - beforeEach(c.beforeEach) - - it('Should accept signatures from multiple imageHashes', async () => { - const altWallet = SequenceWallet.basicWallet(context, { signing: 3, idle: 9 }) - - await wallet.deploy() - await wallet.addExtraImageHash(altWallet.imageHash) - - wallet.sendTransactions([{}], encodeNonce(1, 0)) - - expect(await wallet.mainModule.extraImageHash(altWallet.imageHash)).to.not.equal(0) - - wallet = wallet - .useAddress() - .useConfig({ ...altWallet.config, address: undefined }) - .useSigners(altWallet.signers) - - await wallet.sendTransactions([{}]) - }) - - it('Should reject expired extra imgeHash', async () => { - const altWallet = SequenceWallet.basicWallet(context, { signing: 3, idle: 9 }) - await wallet.deploy() - await wallet.addExtraImageHash(altWallet.imageHash, 100) - - const badWallet1 = wallet - .useAddress() - .useConfig({ ...altWallet.config, address: undefined }) - .useSigners(altWallet.signers) - - const tx = badWallet1.sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should clear multiple extra imageHashes', async () => { - const altWallet1 = SequenceWallet.basicWallet(context, { signing: 3, idle: 9 }) - const altWallet2 = SequenceWallet.basicWallet(context) - - await wallet.deploy() - await wallet.addExtraImageHash(altWallet1.imageHash) - await wallet.addExtraImageHash(altWallet2.imageHash) - - expect(await wallet.mainModule.extraImageHash(altWallet1.imageHash)).to.not.equal(0) - expect(await wallet.mainModule.extraImageHash(altWallet2.imageHash)).to.not.equal(0) - - await wallet.clearExtraImageHashes([altWallet1.imageHash, altWallet2.imageHash]) - - const badWallet1 = wallet - .useAddress() - .useConfig({ ...altWallet1.config, address: undefined }) - .useSigners(altWallet1.signers) - - const badWallet2 = wallet - .useAddress() - .useConfig({ ...altWallet1.config, address: undefined }) - .useSigners(altWallet1.signers) - - expect(await wallet.mainModule.extraImageHash(altWallet1.imageHash)).to.equal(0n) - expect(await wallet.mainModule.extraImageHash(altWallet2.imageHash)).to.equal(0n) - - await expect(badWallet1.sendTransactions([{}])).to.be.rejected - await expect(badWallet2.sendTransactions([{}])).to.be.rejected - await expect(wallet.sendTransactions([{}])).to.be.fulfilled - }) - - it('Should fail to set extra imageHashes if not from self', async () => { - const altWallet = SequenceWallet.basicWallet(context) - const tx = wallet.mainModule.setExtraImageHash(altWallet.imageHash, Math.floor(Date.now() / 1000) + 1000) - await expectToBeRejected(tx, `OnlySelfAuth("${accounts[0]}", "${wallet.address}")`) - }) - - it('Should fail to clear extra imageHashes if not from self', async () => { - const tx = wallet.mainModule.clearExtraImageHashes([]) - await expectToBeRejected(tx, `OnlySelfAuth("${accounts[0]}", "${wallet.address}")`) - }) - }) - }) - }) - - describe('Static merkle digests', () => { - ;[ - { - name: 'using MainModule', - beforeEach: () => {} - }, - { - name: 'using MainModuleUpgradable', - beforeEach: async () => { - const newConfig = SequenceWallet.basicWallet(context) - await wallet.updateImageHash(newConfig.imageHash) - wallet = wallet.useAddress().useConfig(newConfig.config).useSigners(newConfig.signers) - } - } - ].map(c => { - describe(c.name, () => { - it('Should reject proof for another subdigest', async () => { - const digests = new Array(2).fill(0).map(() => ethers.hexlify(ethers.randomBytes(32))) - const subdigests = await Promise.all(digests.map(async d => ({ subdigest: await subdigestOf(wallet.address, d, 0) }))) - const subdigestsMerkle = merkleTopology([...subdigests]) - - const prevLeaves = leavesOf(wallet.config.topology) - const newMerkle = merkleTopology([subdigestsMerkle, ...prevLeaves]) - const newConfig = { threshold: wallet.config.threshold, topology: newMerkle, checkpoint: Math.floor(Date.now() / 1000) } - - await wallet.deploy() - await wallet.updateImageHash(newConfig) - wallet = wallet.useAddress(wallet.address).useConfig(newConfig) - - await wallet.sendTransactions([]) - - const subdigest = ethers.hexlify(subdigests[0].subdigest) - const encoded = wallet.staticSubdigestSign(subdigest) - const res = await wallet.mainModule['isValidSignature(bytes32,bytes)'](digests[1], encoded) - expect(res).to.equal('0x00000000') - }) - - it('Should accept merkle proof', async () => { - wallet = SequenceWallet.basicWallet(context, { signing: 10, idle: 11 }) - - const digests = new Array(33).fill(0).map(() => ethers.hexlify(ethers.randomBytes(32))) - const subdigests = await Promise.all(digests.map(async d => ({ subdigest: await subdigestOf(wallet.address, d, 0) }))) - const subdigestsMerkle = merkleTopology([...subdigests]) - - const prevLeaves = leavesOf(wallet.config.topology) - const newMerkle = merkleTopology([subdigestsMerkle, ...prevLeaves]) - const newConfig = { threshold: wallet.config.threshold, topology: newMerkle, checkpoint: Math.floor(Date.now() / 1000) } - - await wallet.deploy() - await wallet.updateImageHash(newConfig) - wallet = wallet.useAddress(wallet.address).useConfig(newConfig) - - await wallet.sendTransactions([]) - - for (let i = 0; i < subdigests.length; i++) { - const subdigest = ethers.hexlify(subdigests[i].subdigest) - const encoded = wallet.staticSubdigestSign(subdigest) - const res = await wallet.mainModule['isValidSignature(bytes32,bytes)'](digests[i], encoded) - expect(res).to.equal('0x1626ba7e') - } - }) - }) - }) - }) - - describe('Nested configurations', async () => { - it('Should use nested configuration as a regular branch', async () => { - const nested = SequenceWallet.basicWallet(context, { signing: 1, idle: 11 }) - const simplifiedConfig = { - threshold: 1, - checkpoint: 2, - signers: [ - { - address: ethers.Wallet.createRandom().address, - weight: 1 - }, - { - ...toSimplifiedConfig(nested.config), - weight: 1 - } - ] - } - - const config = { - ...simplifiedConfig, - topology: legacyTopology(simplifiedConfig) - } - - const wallet = new SequenceWallet({ context, config, signers: nested.signers }) - await wallet.deploy() - - await wallet.sendTransactions([]) - }) - it('Should use nested configuration with independent weight and threshold', async () => { - const nested = SequenceWallet.basicWallet(context, { signing: 2, idle: 11 }) - const simplifiedConfig = { - threshold: 5, - checkpoint: 2, - signers: [ - { - ...toSimplifiedConfig(nested.config), - weight: 5 - }, - { - address: ethers.Wallet.createRandom().address, - weight: 1 - } - ] - } - - const config = { - ...simplifiedConfig, - topology: merkleTopology(simplifiedConfig) - } - - const wallet = new SequenceWallet({ context, config, signers: nested.signers }) - await wallet.deploy() - - await wallet.sendTransactions([]) - }) - it('Should reject nested configuration if not enough internal signing power', async () => { - const nested = SequenceWallet.basicWallet(context, { signing: 2, idle: 11 }) - - const simplifiedConfig = { - threshold: 1, - checkpoint: 2, - signers: [ - { - ...toSimplifiedConfig(nested.config), - weight: 5 - }, - { - address: ethers.Wallet.createRandom().address, - weight: 1 - } - ] - } - - const config = { - ...simplifiedConfig, - topology: merkleTopology(simplifiedConfig) - } - - const wallet = new SequenceWallet({ context, config, signers: [nested.signers[0]] }) - await wallet.deploy() - - const tx = wallet.sendTransactions([]) - await expectToBeRejected(tx, 'InvalidSignature') - }) - it('Should limit nested signing power', async () => { - const nested = SequenceWallet.basicWallet(context, { signing: 10 }) - - const simplifiedConfig = { - threshold: 2, - checkpoint: 2, - signers: [ - { - ...toSimplifiedConfig(nested.config), - weight: 1 - }, - { - address: ethers.Wallet.createRandom().address, - weight: 1 - } - ] - } - - const config = { - ...simplifiedConfig, - topology: merkleTopology(simplifiedConfig) - } - - const wallet = new SequenceWallet({ context, config, signers: nested.signers }) - await wallet.deploy() - - const tx = wallet.sendTransactions([]) - await expectToBeRejected(tx, 'InvalidSignature') - }) - }) - - describe('External calls', () => { - let { valA, valB } = { valA: BigInt(Math.floor(Date.now())), valB: randomHex(120) } - - it('Should perform call to contract', async () => { - const transaction = { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - - await wallet.sendTransactions([transaction]) - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - it('Should return error message', async () => { - await callReceiver.setRevertFlag(true) - - const transaction = { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [0, new Uint8Array([])]) - } - - const tx = wallet.sendTransactions([transaction]) - await expect(tx).to.be.rejectedWith('CallReceiverMock#testCall: REVERT_FLAG') - }) - describe('Batch transactions', () => { - let callReceiver2: ContractType - let { val2A, val2B } = { val2A: 9422n, val2B: randomHex(31) } - - beforeEach(async () => { - callReceiver2 = await CallReceiverMock.deploy() - }) - - it('Should perform multiple calls to contracts in one tx', async () => { - const transactions = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - }, - { - target: await callReceiver2.getAddress(), - data: callReceiver2.interface.encodeFunctionData('testCall', [val2A, val2B]) - } - ] - - await wallet.sendTransactions(transactions) - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - expect(await callReceiver2.lastValA()).to.equal(val2A) - expect(await callReceiver2.lastValB()).to.equal(val2B) - }) - - it('Should perform call a contract and transfer eth in one tx', async () => { - const signer = await hethers.provider.getSigner() - await signer.sendTransaction({ to: wallet.address, value: 100 }) - const receiver = new ethers.Wallet(ethers.hexlify(ethers.randomBytes(32))) - - const transactions = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - }, - { - target: receiver.address, - value: 26 - } - ] - - await wallet.sendTransactions(transactions) - - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - expect(await hethers.provider.getBalance(receiver.address)).to.equal(26n) - }) - - it('Should fail if one transaction fails', async () => { - const signer = await hethers.provider.getSigner() - await signer.sendTransaction({ to: wallet.address, value: 100 }) - - await callReceiver.setRevertFlag(true) - - const transactions = [ - { - target: ethers.Wallet.createRandom().address, - value: 26 - }, - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [0, new Uint8Array([])]) - } - ] - - const tx = wallet.sendTransactions(transactions) - await expect(tx).to.be.rejectedWith('CallReceiverMock#testCall: REVERT_FLAG') - }) - }) - }) - - describe('Delegate calls', () => { - let delegateCallMock: ContractType - - beforeEach(async () => { - delegateCallMock = await DelegateCallMock.deploy() - }) - - it('Should delegate call to module', async () => { - const transaction1 = { - delegateCall: true, - target: await delegateCallMock.getAddress(), - data: delegateCallMock.interface.encodeFunctionData('write', [11, 45]) - } - - await wallet.sendTransactions([transaction1]) - - const transaction2 = { - delegateCall: true, - target: await delegateCallMock.getAddress(), - data: delegateCallMock.interface.encodeFunctionData('read', [11]) - } - - const tx = await wallet.sendTransactions([transaction2]) - const receipt = await tx.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - const val = BigInt(receipt.logs.slice(-2)[0].data) - expect(val).to.equal(45n) - }) - - describe('on delegate call revert', () => { - beforeEach(async () => { - await wallet.sendTransactions([ - { - delegateCall: true, - target: await delegateCallMock.getAddress(), - data: delegateCallMock.interface.encodeFunctionData('setRevertFlag', [true]) - } - ]) - }) - - it('Should pass if revertOnError is false', async () => { - const transaction = { - delegateCall: true, - revertOnError: false, - target: await delegateCallMock.getAddress(), - data: delegateCallMock.interface.encodeFunctionData('write', [11, 45]) - } - - await wallet.sendTransactions([transaction]) - }) - - it('Should fail if delegate call fails', async () => { - const transaction = { - delegateCall: true, - target: await delegateCallMock.getAddress(), - data: delegateCallMock.interface.encodeFunctionData('write', [11, 45]) - } - - const tx = wallet.sendTransactions([transaction]) - await expect(tx).to.be.rejectedWith('DelegateCallMock#write: REVERT_FLAG') - }) - }) - }) - - describe('Handle ETH', () => { - it('Should receive ETH', async () => { - const signer = await hethers.provider.getSigner() - signer.sendTransaction({ to: wallet.address, value: 1 }) - }) - - it('Should transfer ETH', async () => { - const signer = await hethers.provider.getSigner() - signer.sendTransaction({ to: wallet.address, value: 100 }) - - const receiver = ethers.Wallet.createRandom().address - - const transaction = { - target: receiver, - value: 25 - } - - await wallet.sendTransactions([transaction]) - expect(await hethers.provider.getBalance(receiver)).to.equal(25n) - }) - - it('Should call payable function', async () => { - const signer = await hethers.provider.getSigner() - signer.sendTransaction({ to: wallet.address, value: 100 }) - - const valA = 63129n - const valB = randomHex(120) - const value = 33n - - const transaction = { - target: await callReceiver.getAddress(), - value: value, - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - - await wallet.sendTransactions([transaction]) - expect(await hethers.provider.getBalance(await callReceiver.getAddress())).to.equal(value) - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - }) - - describe('Optional transactions', () => { - it('Should skip a skipOnError transaction', async () => { - await callReceiver.setRevertFlag(true) - - const transaction = { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [0, new Uint8Array([])]) - } - - const receipt = await wallet.sendTransactions([transaction]).then(r => r.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const event = events.pop() - - const reason = ethers.AbiCoder.defaultAbiCoder().decode(['string'], '0x' + event!.args!._reason.slice(10))[0] - expect(reason).to.equal('CallReceiverMock#testCall: REVERT_FLAG') - }) - - describe('With multiple transactions', () => { - let callReceiver2: ContractType - const { valA, valB } = { valA: 912341n, valB: randomHex(30) } - - beforeEach(async () => { - callReceiver2 = await CallReceiverMock.deploy() - }) - - it('Should skip failing transaction within batch', async () => { - await callReceiver.setRevertFlag(true) - - const transactions = [ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [0, new Uint8Array([])]) - }, - { - revertOnError: false, - target: await callReceiver2.getAddress(), - data: callReceiver2.interface.encodeFunctionData('testCall', [valA, valB]) - } - ] - - const receipt = await wallet.sendTransactions(transactions).then(r => r.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const ev = events.find(ev => ev.eventName === 'TxFailed') - - const reason = ethers.AbiCoder.defaultAbiCoder().decode(['string'], '0x' + ev!.args!._reason.slice(10))[0] - expect(reason).to.equal('CallReceiverMock#testCall: REVERT_FLAG') - - expect(await callReceiver2.lastValA()).to.equal(valA) - expect(await callReceiver2.lastValB()).to.equal(valB) - }) - - it('Should skip multiple failing transactions within batch', async () => { - await callReceiver.setRevertFlag(true) - - const transactions = [ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [0, new Uint8Array([])]) - }, - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [0, new Uint8Array([])]) - }, - { - target: await callReceiver2.getAddress(), - data: callReceiver2.interface.encodeFunctionData('testCall', [valA, valB]) - } - ] - - const txHash = await subdigestOf(wallet.address, digestOf(transactions, await wallet.getNonce())) - const receipt = await wallet.sendTransactions(transactions).then(r => r.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - - const event1 = events[1] - const event2 = events[2] - - const reason1 = ethers.AbiCoder.defaultAbiCoder().decode(['string'], '0x' + event1.args!._reason.slice(10))[0] - const reason2 = ethers.AbiCoder.defaultAbiCoder().decode(['string'], '0x' + event2.args!._reason.slice(10))[0] - - expect(reason1).to.equal('CallReceiverMock#testCall: REVERT_FLAG') - expect(reason2).to.equal('CallReceiverMock#testCall: REVERT_FLAG') - - expect(event1.args!._tx).to.equal(txHash) - expect(event2.args!._tx).to.equal(txHash) - - expect(await callReceiver2.lastValA()).to.equal(valA) - expect(await callReceiver2.lastValB()).to.equal(valB) - }) - - it('Should skip all failing transactions within a batch', async () => { - await callReceiver.setRevertFlag(true) - - const transactions = [ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [0, new Uint8Array([])]) - }, - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [0, new Uint8Array([])]) - } - ] - - const receipt = await wallet.sendTransactions(transactions).then(r => r.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - - const event1 = events.pop() - const event2 = events.pop() - - const reason1 = ethers.AbiCoder.defaultAbiCoder().decode(['string'], '0x' + event1!.args!._reason.slice(10))[0] - const reason2 = ethers.AbiCoder.defaultAbiCoder().decode(['string'], '0x' + event2!.args!._reason.slice(10))[0] - - expect(reason1).to.equal('CallReceiverMock#testCall: REVERT_FLAG') - expect(reason2).to.equal('CallReceiverMock#testCall: REVERT_FLAG') - }) - }) - }) - - describe('Hooks', () => { - let hookCallerMock: ContractType - - before(async () => { - hookCallerMock = await HookCallerMock.deploy() - }) - - describe('receive tokens', () => { - it('Should implement ERC1155 single transfer hook', async () => { - await hookCallerMock.callERC1155Received(wallet.address) - }) - it('Should implement ERC1155 batch transfer hook', async () => { - await hookCallerMock.callERC1155BatchReceived(wallet.address) - }) - it('Should implement ERC721 transfer hook', async () => { - await hookCallerMock.callERC721Received(wallet.address) - }) - it('Should implement ERC223 transfer hook', async () => { - await hookCallerMock.callERC223Received(wallet.address) - }) - }) - - describe('ERC1271 Wallet', () => { - let message = randomHex(250) - let hash = ethers.keccak256(ethers.randomBytes(32)) - - it('Should validate arbitrary signed data', async () => { - const signature = await wallet.signMessage(message) - await hookCallerMock.callERC1271isValidSignatureData(wallet.address, message, signature) - }) - - it('Should validate arbitrary signed hash', async () => { - const signature = await wallet.signDigest(hash) - await hookCallerMock.callERC1271isValidSignatureHash(wallet.address, hash, signature) - }) - - it('Should reject data signed by non-owner', async () => { - const impostor = SequenceWallet.basicWallet(context) - const signature = await impostor.signMessage(message) - const tx = hookCallerMock.callERC1271isValidSignatureData(wallet.address, message, signature) - await expect(tx).to.be.rejectedWith('HookCallerMock#callERC1271isValidSignatureData: INVALID_RETURN') - }) - - it('Should reject hash signed by non-owner', async () => { - const impostor = SequenceWallet.basicWallet(context) - const signature = await impostor.signDigest(hash) - const tx = hookCallerMock.callERC1271isValidSignatureHash(wallet.address, hash, signature) - await expect(tx).to.be.rejectedWith('HookCallerMock#callERC1271isValidSignatureHash: INVALID_RETURN') - }) - }) - - describe('External hooks', () => { - let hookMock: ContractType - let hookSelector: string - - before(async () => { - hookMock = await HookMock.deploy() - const fragment = hookMock.interface.getFunction('onHookMockCall') - hookSelector = getSigHash(fragment) - }) - - it('Should return zero if hook is not registered', async () => { - expect(await wallet.mainModule.readHook(hookSelector)).to.be.equal(ethers.ZeroAddress) - }) - - describe('With registered hook', () => { - beforeEach(async () => { - const transaction = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('addHook', [hookSelector, await hookMock.getAddress()]) - } - - await wallet.sendTransactions([transaction]) - }) - - it('Should read added hook', async () => { - expect(await wallet.mainModule.readHook(hookSelector)).to.be.equal(await hookMock.getAddress()) - }) - - it('Should forward call to external hook', async () => { - const walletHook = HookMock.attach(wallet.address) - expect(await walletHook.onHookMockCall(21)).to.equal(42n) - }) - - it('Should not forward call to deregistered hook', async () => { - const transaction = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('removeHook', [hookSelector]) - } - - await wallet.sendTransactions([transaction]) - - const tx2 = HookMock.attach(wallet.address).onHookMockCall(21) - await expect(tx2).to.be.rejected - }) - - it('Should use hooks storage key', async () => { - const subkey = ethers.AbiCoder.defaultAbiCoder().encode(['bytes4'], [hookSelector]) - const storageKey = computeStorageKey('org.arcadeum.module.hooks.hooks', subkey) - - const storageValue = await hethers.provider.getStorage(wallet.address, storageKey) - - const addr = (() => { - try { - return ethers.getAddress(ethers.AbiCoder.defaultAbiCoder().decode(['address'], storageValue)[0]) - } catch { - return ethers.getAddress(storageValue) - } - })() - - expect(addr).to.equal(await hookMock.getAddress()) - }) - }) - - it('Should pass calling a non registered hook', async () => { - const data = ethers.AbiCoder.defaultAbiCoder().encode(['bytes4'], [hookSelector]) - const signer = await hethers.provider.getSigner() - await signer.sendTransaction({ to: wallet.address, data: data }) - }) - }) - - it('Should not forward msg.data with less than 4 bytes', async () => { - const alwaysRevertMock = await AlwaysRevertMock.deploy() - const paddedSelector = '0x11223300' - - const transaction = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('addHook', [paddedSelector, await alwaysRevertMock.getAddress()]) - } - - await wallet.sendTransactions([transaction]) - - const signer = await hethers.provider.getSigner() - - // Calling the wallet with '0x112233' should not forward the call to the hook - const tx = signer.sendTransaction({ to: wallet.address, data: '0x112233' }).then(t => t.wait()) - await expect(tx).to.be.fulfilled - - // Calling the wallet with '0x11223300' should forward the call to the hook (and thus revert) - const tx2 = signer.sendTransaction({ to: wallet.address, data: '0x11223300' }).then(t => t.wait()) - await expect(tx2).to.be.rejected - }) - - it('Should emit an event when adding a hook', async () => { - const selector = '0x2385ac0a' - const implementation = ethers.Wallet.createRandom().address - - const transaction = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('addHook', [selector, implementation]) - } - - const receipt = await wallet.sendTransactions([transaction]).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const event = events.find(ev => ev.eventName === 'DefinedHook') - expect(event).to.not.be.undefined - expect(event!.args._signature).to.equal(selector) - expect(event!.args._implementation).to.equal(implementation) - }) - - it('Should emit an event when removing a hook', async () => { - const selector = '0x2385ac0a' - const implementation = ethers.Wallet.createRandom().address - - const transaction1 = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('addHook', [selector, implementation]) - } - - await wallet.sendTransactions([transaction1]).then(t => t.wait()) - - const transaction2 = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('removeHook', [selector]) - } - - const receipt = await wallet.sendTransactions([transaction2]).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - const event = events.find(ev => ev.eventName === 'DefinedHook') - expect(event).to.not.be.undefined - expect(event?.args._signature).to.equal(selector) - expect(event?.args._implementation).to.equal(ethers.ZeroAddress) - }) - }) - - describe('Update owners', async () => { - let walletb: SequenceWallet - - beforeEach(async () => { - walletb = SequenceWallet.basicWallet(context, { address: wallet.address }) - }) - - it('Should fail to update to invalid image hash', async () => { - const tx = wallet.updateImageHash(ethers.ZeroHash) - await expectToBeRejected(tx, 'ImageHashIsZero()') - }) - - it('Should fail to change image hash from non-self address', async () => { - const tx = wallet.mainModule.updateImageHash(ethers.randomBytes(32)) - await expectToBeRejected(tx, `OnlySelfAuth("${accounts[0]}", "${wallet.address}")`) - }) - - describe('After a migration', async () => { - beforeEach(async () => { - await wallet.updateImageHash(walletb.imageHash) - }) - - it('Should implement new upgradable module', async () => { - expect(await walletb.mainModuleUpgradable.imageHash()).to.equal(walletb.imageHash) - }) - - it('Should accept new owner signature', async () => { - await walletb.sendTransactions([{}]) - }) - - it('Should reject old owner signature', async () => { - const tx = wallet.sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should fail to update to invalid image hash', async () => { - const tx = walletb.updateImageHash(ethers.ZeroHash) - await expectToBeRejected(tx, 'ImageHashIsZero()') - }) - - it('Should fail to change image hash from non-self address', async () => { - const tx = wallet.mainModuleUpgradable.updateImageHash(ethers.randomBytes(32)) - await expectToBeRejected(tx, `OnlySelfAuth("${accounts[0]}", "${wallet.address}")`) - }) - - it('Should use image hash storage key', async () => { - const storageKey = computeStorageKey('org.arcadeum.module.auth.upgradable.image.hash') - const storageValue = await hethers.provider.getStorage(wallet.address, storageKey) - expect(ethers.AbiCoder.defaultAbiCoder().encode(['bytes32'], [storageValue])).to.equal(walletb.imageHash) - }) - - it('Should fail to execute transactions on moduleUpgradable implementation', async () => { - const tx = context.mainModuleUpgradable.execute([], 0, '0x0000') - await expect(tx).to.be.rejected - }) - - describe('After updating the image hash', () => { - let walletc: SequenceWallet - - beforeEach(async () => { - walletc = SequenceWallet.basicWallet(context, { signing: 2, address: walletb.address }) - await walletb.updateImageHash(walletc.imageHash) - }) - - it('Should have updated the image hash', async () => { - expect(await walletb.mainModuleUpgradable.imageHash()).to.equal(walletc.imageHash) - }) - - it('Should accept new owners signatures', async () => { - await walletc.sendTransactions([{}]) - }) - - it('Should reject old owner signatures', async () => { - const tx = walletb.sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should use image hash storage key', async () => { - const storageKey = computeStorageKey('org.arcadeum.module.auth.upgradable.image.hash') - const storageValue = await hethers.provider.getStorage(walletb.address, storageKey) - expect(ethers.AbiCoder.defaultAbiCoder().encode(['bytes32'], [storageValue])).to.equal(walletc.imageHash) - }) - }) - }) - }) - - describe('Multisignature', async () => { - const modes = [ - { - name: 'Forced dynamic part encoding, legacy signature type', - encodingOptions: { forceDynamicEncoding: true, signatureType: SignatureType.Legacy } - }, - { - name: 'Default part encoding, legacy signature encoding', - encodingOptions: { signatureType: SignatureType.Legacy } - }, - { - name: 'Forced dynamic part encoding, dynamic signature type', - encodingOptions: { forceDynamicEncoding: true, signatureType: SignatureType.Dynamic } - }, - { - name: 'Default part encoding, dynamic signature type', - encodingOptions: { signatureType: SignatureType.Legacy } - } - ] - - modes.map(mode => { - describe(mode.name, () => { - let encodingOptions = mode.encodingOptions - - describe('With 1/2 wallet', () => { - let signer1 = ethers.Wallet.createRandom() - let signer2 = ethers.Wallet.createRandom() - - beforeEach(async () => { - wallet = SequenceWallet.detailedWallet(context, { threshold: 1, signers: [signer1, signer2], encodingOptions }) - await wallet.deploy() - }) - - it('Should accept signed message by first owner', async () => { - await wallet.useSigners(signer1).sendTransactions([{}]) - }) - - it('Should accept signed message by second owner', async () => { - await wallet.useSigners(signer2).sendTransactions([{}]) - }) - - it('Should accept signed message by both owners', async () => { - await wallet.useSigners([signer1, signer2]).sendTransactions([{}]) - }) - - it('Should reject message without signatures', async () => { - const tx = wallet.useSigners([]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed by non-owner', async () => { - const tx = wallet.useSigners(Imposter.random(signer1)).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed by non-owner and signer2', async () => { - const tx = wallet.useSigners([signer2, Imposter.random(signer1)]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject signature of invalid length', async () => { - const signature = await wallet.signTransactions([{}]) - const badSignature = signature.slice(0, -2) - const tx = wallet.relayTransactions([{}], badSignature) - await expect(tx).to.be.rejected - }) - }) - - describe('With 2/2 wallet', () => { - let signer1 = ethers.Wallet.createRandom() - let signer2 = ethers.Wallet.createRandom() - - beforeEach(async () => { - wallet = SequenceWallet.detailedWallet(context, { threshold: 2, signers: [signer1, signer2], encodingOptions }) - await wallet.deploy() - }) - - it('Should accept signed message by both owners', async () => { - await wallet.sendTransactions([{}]) - }) - - it('Should reject message without signatures', async () => { - const tx = wallet.useSigners([]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed only by first owner', async () => { - const tx = wallet.useSigners(signer1).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed only by second owner', async () => { - const tx = wallet.useSigners(signer2).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed by non-owner', async () => { - const tx = wallet.useSigners(Imposter.random(signer1)).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - }) - - describe('With 2/3 wallet', () => { - let signer1 = ethers.Wallet.createRandom() - let signer2 = ethers.Wallet.createRandom() - let signer3 = ethers.Wallet.createRandom() - - beforeEach(async () => { - wallet = SequenceWallet.detailedWallet(context, { - threshold: 2, - signers: [signer1, signer2, signer3], - encodingOptions - }) - await wallet.deploy() - }) - - it('Should accept signed message by first and second owner', async () => { - await wallet.useSigners([signer1, signer2]).sendTransactions([{}]) - }) - - it('Should accept signed message by first and last owner', async () => { - await wallet.useSigners([signer1, signer3]).sendTransactions([{}]) - }) - - it('Should accept signed message by second and last owner', async () => { - await wallet.useSigners([signer2, signer3]).sendTransactions([{}]) - }) - - it('Should accept signed message by all owners', async () => { - await wallet.useSigners([signer1, signer2, signer3]).sendTransactions([{}]) - }) - - it('Should reject message signed only by first owner', async () => { - const tx = wallet.useSigners(signer1).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed only by second owner', async () => { - const tx = wallet.useSigners(signer2).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed only by last owner', async () => { - const tx = wallet.useSigners(signer3).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message not signed', async () => { - const tx = wallet.useSigners([]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed by non-owner', async () => { - const tx = wallet.useSigners(Imposter.random(signer1)).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed by non-owner and signer1', async () => { - const tx = wallet.useSigners([signer1, Imposter.random(signer2)]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed by two non-owners', async () => { - const tx = wallet.useSigners([Imposter.random(signer1), Imposter.random(signer2)]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message if signed with a wrong configuration', async () => { - const tx = wallet - .useConfig(SequenceWallet.detailedWallet(context, { threshold: 3, signers: [signer1, signer2] })) - .sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - }) - - describe('With 3/10 wallet', () => { - beforeEach(async () => { - wallet = SequenceWallet.basicWallet(context, { signing: 3, idle: 7 }) - await wallet.deploy() - }) - - it('Should accept message signed by 3/10 owners', async () => { - await wallet.sendTransactions([{}]) - }) - }) - - describe('With 255/255 wallet', () => { - beforeEach(async () => { - wallet = SequenceWallet.basicWallet(context, { signing: 215, encodingOptions }) - await wallet.deploy() - }) - - it('Should accept message signed by all owners', async () => { - await wallet.sendTransactions([{}], undefined, { gasLimit: 60000000 }) - }) - - it('Should reject message signed by non-owner', async () => { - const tx = wallet - .useSigners([Imposter.random(wallet.signers[0] as ethers.Wallet), ...wallet.signers.slice(1)]) - .sendTransactions([{}], undefined, { gasLimit: 60000000 }) - - await expect(tx).to.be.rejected - }) - - it('Should reject message signed by all non-owners', async () => { - const tx = wallet - .useSigners(wallet.signers.map(s => Imposter.random(s as ethers.Wallet))) - .sendTransactions([{}], undefined, { gasLimit: 60000000 }) - - await expect(tx).to.be.rejected - }) - - it('Should reject message missing a signature', async () => { - const tx = wallet.useSigners(wallet.signers.slice(1)).sendTransactions([{}], undefined, { gasLimit: 60000000 }) - await expect(tx).to.be.rejected - }) - }) - - describe('With weighted owners', () => { - let signers: ethers.BaseWallet[] - - beforeEach(async () => { - signers = new Array(5).fill(null).map(() => ethers.Wallet.createRandom()) - wallet = SequenceWallet.detailedWallet(context, { - threshold: 4, - signers: [3, 3, 1, 1, 1].map((weight, i) => ({ weight, value: signers[i] })) - }) - await wallet.deploy() - }) - - it('Should accept signed message with (3+1)/4 weight', async () => { - await wallet.useSigners([signers[0], signers[3]]).sendTransactions([{}]) - }) - - it('Should accept signed message with (3+3)/4 weight', async () => { - await wallet.useSigners([signers[0], signers[1]]).sendTransactions([{}]) - }) - - it('Should accept signed message with (3+3+1+1)/4 weight', async () => { - await wallet.useSigners(signers.slice(0, 4)).sendTransactions([{}]) - }) - - it('Should accept signed message with (3+3+1+1+1)/4 weight (all signers)', async () => { - await wallet.useSigners(signers).sendTransactions([{}]) - }) - - it('Should reject signed message with (1)/4 weight', async () => { - const tx = wallet.useSigners([signers[3]]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject signed message with (1+1)/4 weight', async () => { - const tx = wallet.useSigners([signers[2], signers[3]]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject signed message with (1+1+1)/4 weight', async () => { - const tx = wallet.useSigners([signers[2], signers[3], signers[4]]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject signed message with (3)/4 weight', async () => { - const tx = wallet.useSigners(signers[0]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject signed message with (0)/4 weight', async () => { - const tx = wallet.useSigners([]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - it('Should reject message signed by non-owner', async () => { - const tx = wallet.useSigners([signers[0], Imposter.random(signers[3])]).sendTransactions([{}]) - await expect(tx).to.be.rejected - }) - - describe('Reject invalid signatures', () => { - beforeEach(async () => { - wallet = SequenceWallet.basicWallet(context, { encodingOptions }) - await wallet.deploy() - }) - - it('Should reject invalid signature type', async () => { - const signature = await wallet.signTransactions([{}]) - const badSignature = signature.slice(0, -2) + 'ff' - const tx = wallet.relayTransactions([{}], badSignature) - await expect(tx).to.be.rejected - }) - - it('Should reject invalid s value', async () => { - const signature = await wallet.signTransactions([{}]) - const prefix = mode.encodingOptions.forceDynamicEncoding ? 118 : 74 - const invalidSignature = - signature.slice(0, prefix) + - '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1' + - signature.slice(prefix + 64) - const tx = wallet.relayTransactions([{}], invalidSignature) - await expect(tx).to.be.reverted - }) - - it('Should reject invalid v value', async () => { - const signature = await wallet.signTransactions([{}]) - const prefix = mode.encodingOptions.forceDynamicEncoding ? 182 : 138 - const invalidSignature = signature.slice(0, prefix) + '1a' + signature.slice(prefix + 2) - const tx = wallet.relayTransactions([{}], invalidSignature) - await expect(tx).to.be.reverted - }) - }) - }) - }) - }) - }) - - describe('Gas limit', () => { - let gasBurner: ContractType - - before(async () => { - gasBurner = await GasBurnerMock.deploy() - }) - - it('Should forward the defined amount of gas', async () => { - const gas = 10000 - - const transaction = { - gasLimit: gas, - target: await gasBurner.getAddress(), - data: gasBurner.interface.encodeFunctionData('burnGas', [0]) - } - - const receipt = await wallet.sendTransactions([transaction]).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const reported = Number(BigInt(receipt.logs.slice(-2)[0].data)) - expect(reported).to.be.below(gas) - }) - - it('Should forward different amounts of gas', async () => { - const gasA = 10000 - const gasB = 350000 - - const transactions = [ - { - gasLimit: gasA, - target: await gasBurner.getAddress(), - data: gasBurner.interface.encodeFunctionData('burnGas', [8000]) - }, - { - gasLimit: gasB, - target: await gasBurner.getAddress(), - data: gasBurner.interface.encodeFunctionData('burnGas', [340000]) - } - ] - - const receipt = await wallet.sendTransactions(transactions).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const reportedB = Number(BigInt(receipt.logs.slice(-2)[0].data)) - const reportedA = Number(BigInt(receipt.logs.slice(-4)[0].data)) - - expect(reportedA).to.be.below(gasA) - expect(reportedB).to.be.below(gasB) - expect(reportedB).to.be.above(gasA) - }) - - it('Should fail if forwarded call runs out of gas', async () => { - const gas = 10000 - - const transaction = { - gasLimit: gas, - target: await gasBurner.getAddress(), - data: gasBurner.interface.encodeFunctionData('burnGas', [11000]) - } - - const tx = wallet.sendTransactions([transaction]) - expect(tx).to.be.rejected - }) - - it('Should fail without reverting if optional call runs out of gas', async () => { - const gas = 10000 - - const transaction = { - revertOnError: false, - gasLimit: gas, - target: await gasBurner.getAddress(), - data: gasBurner.interface.encodeFunctionData('burnGas', [200000]) - } - - const receipt = await wallet.sendTransactions([transaction]).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - - const log = events.pop() - expect(log!.eventName).to.be.equal('TxFailed') - }) - - it('Should continue execution if optional call runs out of gas', async () => { - const gas = 10000 - - const valA = 9512358833n - const valB = randomHex(1600) - - const transactions = [ - { - revertOnError: false, - gasLimit: gas, - target: await gasBurner.getAddress(), - data: gasBurner.interface.encodeFunctionData('burnGas', [200000]) - }, - { - revertOnError: true, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [valA, valB]) - } - ] - - const receipt = await wallet.sendTransactions(transactions).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - - const log = events.slice(-2)[0] - - expect(log.eventName).to.be.equal('TxFailed') - expect(await callReceiver.lastValA()).to.equal(valA) - expect(await callReceiver.lastValB()).to.equal(valB) - }) - - it('Should fail if transaction is executed with not enough gas', async () => { - const transaction = { - gasLimit: 1000000 - } - - const tx = wallet.sendTransactions([transaction], undefined, { gasLimit: 250000 }) - await expect(tx).to.be.rejected - }) - }) - - describe('Create contracts', () => { - it('Should create a contract', async () => { - const deployCode = CallReceiverMock.factory().bytecode - - const transaction = { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('createContract', [deployCode]) - } - - const receipt = await wallet.sendTransactions([transaction]).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - - const log = events!.find(l => l.eventName === 'CreatedContract') - - expect(log!.eventName).to.equal('CreatedContract') - - const deployed = CallReceiverMock.attach(log!.args!._contract) - await deployed.testCall(12345, '0x552299') - - expect(await deployed.lastValA()).to.equal(12345n) - expect(await deployed.lastValB()).to.equal('0x552299') - }) - - it('Should create a contract with value', async () => { - const deployCode = CallReceiverMock.factory().bytecode - - const signer = await hethers.provider.getSigner() - await signer.sendTransaction({ to: wallet.address, value: 100 }) - - const transaction = { - target: wallet.address, - value: 99, - data: wallet.mainModule.interface.encodeFunctionData('createContract', [deployCode]) - } - - const receipt = await wallet.sendTransactions([transaction]).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - - const log = events!.find(l => l.eventName === 'CreatedContract') - - expect(await hethers.provider.getBalance(log!.args!._contract)).to.equal(99n) - }) - - it('Should fail to create a contract from non-self', async () => { - const tx = wallet.mainModule.createContract(CallReceiverMock.factory().bytecode) - await expectToBeRejected(tx, `OnlySelfAuth("${accounts[0]}", "${wallet.address}")`) - }) - }) - - describe('Transaction events', () => { - it('Should emit TxExecuted event', async () => { - const txHash = await subdigestOf(wallet.address, digestOf([{}], await wallet.getNonce())) - const res = await wallet.sendTransactions([{}]) - const receipt = await res.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - const events = receipt.logs.filter(log => log instanceof ethers.EventLog) as ethers.EventLog[] - - const log = events!.find(l => l.eventName === 'TxExecuted')! - - expect(log.topics.length).to.equal(2) - expect(log.topics[1]).to.be.equal(txHash) - expect(log.data).to.be.equal(ethers.solidityPacked(['uint256'], [0])) - }) - - it('Should emit multiple TxExecuted events', async () => { - const txHash = await subdigestOf(wallet.address, digestOf([{}, {}], await wallet.getNonce())) - const receipt = await wallet.sendTransactions([{}, {}]).then(t => t.wait()) - - if (!receipt) { - throw new Error('No receipt') - } - - const log1 = receipt.logs[1] - const log2 = receipt.logs[2] - - expect(log1.topics.length).to.equal(2) - expect(log1.topics[1]).to.be.equal(txHash) - expect(log1.data).to.be.equal(ethers.solidityPacked(['uint256'], [0])) - - expect(log2.topics.length).to.equal(2) - expect(log1.topics[1]).to.be.equal(txHash) - expect(log2.data).to.be.equal(ethers.solidityPacked(['uint256'], [1])) - }) - }) - - describe('Internal bundles', () => { - it('Should execute internal bundle', async () => { - const callReceiver2 = await CallReceiverMock.deploy() - - const expected1 = randomHex(552) - const expected2 = randomHex(24) - - const bundle = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [11, expected1]) - }, - { - target: await callReceiver2.getAddress(), - data: callReceiver2.interface.encodeFunctionData('testCall', [12, expected2]) - } - ] - - const transaction = [ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('selfExecute', [applyTxDefaults(bundle)]) - } - ] - - await wallet.sendTransactions(transaction) - - expect(await callReceiver.lastValA()).to.equal(11n) - expect(await callReceiver2.lastValA()).to.equal(12n) - - expect(await callReceiver.lastValB()).to.equal(expected1) - expect(await callReceiver2.lastValB()).to.equal(expected2) - }) - - it('Should execute multiple internal bundles', async () => { - const data = [ - [ - { i: 0, a: 142n, b: 412 }, - { i: 1, a: 123n, b: 2 } - ], - [ - { i: 2, a: 142n, b: 2 }, - { i: 3, a: 642n, b: 33 }, - { i: 4, a: 122n, b: 12 }, - { i: 5, a: 611n, b: 53 } - ], - [{ i: 6, a: 2n, b: 1 }], - [] - ] - - const contracts = await Promise.all(data.flat().map(() => CallReceiverMock.deploy())) - const expectedb = await Promise.all(data.flat().map(d => randomHex(d.b))) - - const bundles = await Promise.all( - data.map(async bundle => { - return applyTxDefaults( - await Promise.all( - bundle.map(async obj => ({ - target: await contracts[obj.i].getAddress(), - data: contracts[obj.i].interface.encodeFunctionData('testCall', [obj.a, expectedb[obj.i]]) - })) - ) - ) - }) - ) - - const transactions = bundles.map(bundle => ({ - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('selfExecute', [bundle]) - })) - - await wallet.sendTransactions(transactions) - - const lastValsA = await Promise.all(contracts.map(c => c.lastValA())) - const lastValsB = await Promise.all(contracts.map(c => c.lastValB())) - - lastValsA.forEach((val, i) => expect(val).to.equal(data.flat()[i].a)) - lastValsB.forEach((val, i) => expect(val).to.equal(expectedb[i])) - }) - - it('Should execute nested internal bundles', async () => { - const callReceiver2 = await CallReceiverMock.deploy() - - const expected1 = randomHex(552) - const expected2 = randomHex(24) - - const bundle = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [11, expected1]) - }, - { - target: await callReceiver2.getAddress(), - data: callReceiver2.interface.encodeFunctionData('testCall', [12, expected2]) - } - ] - - const nestedBundle = [ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('selfExecute', [applyTxDefaults(bundle)]) - } - ] - - const transactions = [ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('selfExecute', [applyTxDefaults(nestedBundle)]) - } - ] - - await wallet.sendTransactions(transactions) - - expect(await callReceiver.lastValA()).to.equal(11n) - expect(await callReceiver2.lastValA()).to.equal(12n) - - expect(await callReceiver.lastValB()).to.equal(expected1) - expect(await callReceiver2.lastValB()).to.equal(expected2) - }) - - it('Should revert bundle without reverting transaction', async () => { - const callReceiver2 = await CallReceiverMock.deploy() - const callReceiver3 = await CallReceiverMock.deploy() - - const expected1 = randomHex(552) - const expected2 = randomHex(24) - const expected3 = randomHex(11) - - const bundle = [ - { - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [11, expected1]) - }, - { - target: await callReceiver2.getAddress(), - data: callReceiver2.interface.encodeFunctionData('testCall', [12, expected2]) - }, - { - // This transaction will revert - // because Factory has no fallback - revertOnError: true, - target: await context.factory.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [12, expected2]) - } - ] - - const transaction = [ - { - revertOnError: false, - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('selfExecute', [applyTxDefaults(bundle)]) - }, - { - revertOnError: false, - target: await callReceiver3.getAddress(), - data: callReceiver3.interface.encodeFunctionData('testCall', [51, expected3]) - } - ] - - await wallet.sendTransactions(transaction) - - expect(await callReceiver.lastValA()).to.equal(0n) - expect(await callReceiver2.lastValA()).to.equal(0n) - expect(await callReceiver3.lastValA()).to.equal(51n) - - expect(await callReceiver.lastValB()).to.equal('0x') - expect(await callReceiver2.lastValB()).to.equal('0x') - expect(await callReceiver3.lastValB()).to.equal(expected3) - }) - }) - - describe('Update imageHash and IPFS at once', () => { - ;[ - { - name: 'using MainModule', - beforeEach: () => {} - }, - { - name: 'using MainModuleUpgradable', - beforeEach: async () => { - const newConfig = SequenceWallet.basicWallet(context) - await wallet.updateImageHash(newConfig.imageHash) - wallet = wallet.useAddress().useConfig(newConfig.config).useSigners(newConfig.signers) - } - } - ].map(c => { - describe(c.name, () => { - it('Should update imageHash and IPFS at the same time', async () => { - const ipfs = randomHex(32) - const imageHash = randomHex(32) - - await wallet.sendTransactions([ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImageHashAndIPFS', [imageHash, ipfs]) - } - ]) - - expect(await wallet.mainModuleUpgradable.imageHash()).to.equal(imageHash) - expect(await wallet.mainModule.ipfsRootBytes32()).to.equal(ipfs) - }) - - it('Should fail to update imageHash and IPFS if caller is not self', async () => { - const tx = wallet.mainModule.updateImageHashAndIPFS(randomHex(32), randomHex(32)) - await expectToBeRejected(tx, 'OnlySelf') - }) - - it('Updated imageHash should be usable', async () => { - const nextWallet = SequenceWallet.basicWallet(context) - const ipfs = randomHex(32) - - await wallet.sendTransactions([ - { - target: wallet.address, - data: wallet.mainModule.interface.encodeFunctionData('updateImageHashAndIPFS', [nextWallet.imageHash, ipfs]) - } - ]) - - wallet = wallet.useAddress(wallet.address).useConfig(nextWallet.config).useSigners(nextWallet.signers) - await wallet.sendTransactions([{}]) - }) - }) - }) - }) -}) diff --git a/packages/wallet-contracts/test/MerkleSignatures.spec.ts b/packages/wallet-contracts/test/MerkleSignatures.spec.ts deleted file mode 100644 index bbcc2f8768..0000000000 --- a/packages/wallet-contracts/test/MerkleSignatures.spec.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ethers } from 'ethers' -import { deploySequenceContext, SequenceContext } from './utils/contracts' -import { legacyTopology, merkleTopology, printTopology, toSimplifiedConfig } from './utils/sequence' -import { SequenceWallet } from './utils/wallet' - -contract('MerkleSignatures', () => { - let context: SequenceContext - - before(async () => { - context = await deploySequenceContext() - }) - - it('Should display config topology', async () => { - const wallet = SequenceWallet.basicWallet(context, { signing: 10 }) - const simplifiedConfig = toSimplifiedConfig(wallet.config) - const topology1 = legacyTopology(simplifiedConfig) - const topology2 = merkleTopology(simplifiedConfig) - - console.log(`Legacy topology:`) - const t = printTopology(topology1, undefined, true) - for (const line of t) { - console.log(line) - } - - const t2 = printTopology(topology2) - for (const line of t2) { - console.log(line) - } - }) -}) diff --git a/packages/wallet-contracts/test/MultiCallUtils.spec.ts b/packages/wallet-contracts/test/MultiCallUtils.spec.ts deleted file mode 100644 index 085e7b789f..0000000000 --- a/packages/wallet-contracts/test/MultiCallUtils.spec.ts +++ /dev/null @@ -1,282 +0,0 @@ -import { ethers } from 'ethers' - -import { ethers as hethers } from 'hardhat' -import { getChainId, encodeError, expect, expectStaticToBeRejected } from './utils' -import { CallReceiverMock, ContractType, MultiCallUtils } from './utils/contracts' -import { applyTxDefault, applyTxDefaults } from './utils/sequence' - -contract('Multi call utils', (accounts: string[]) => { - let multiCall: ContractType - let callReceiver: ContractType - - before(async () => { - multiCall = await MultiCallUtils.deploy() - callReceiver = await CallReceiverMock.deploy() - }) - - beforeEach(async () => { - await callReceiver.setRevertFlag(false) - }) - - describe('Call multiple contracts', () => { - it('Should execute empty call', async () => { - const res = await multiCall.multiCall.staticCall([]) - - expect(res[0].length).to.equal(0) - expect(res[1].length).to.equal(0) - }) - it('Should execute single call', async () => { - await callReceiver.testCall(5123, new Uint8Array([])) - const res = await multiCall.multiCall.staticCall( - applyTxDefaults([ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValA') - } - ]) - ) - - expect(res[0].length).to.equal(1) - expect(res[1].length).to.equal(1) - expect(res[0][0]).to.be.true - expect(res[1][0]).to.be.equal(ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [5123])) - }) - it('Should execute two calls', async () => { - const bytes = ethers.randomBytes(422) - - await callReceiver.testCall(55522, bytes) - const res = await multiCall.multiCall.staticCall( - applyTxDefaults([ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValA') - }, - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValB') - } - ]) - ) - - expect(res[0].length).to.equal(2) - expect(res[1].length).to.equal(2) - expect(res[0][0]).to.be.true - expect(res[1][0]).to.be.equal(ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [55522])) - expect(res[0][1]).to.be.true - expect(ethers.AbiCoder.defaultAbiCoder().decode(['bytes'], res[1][1])[0]).to.be.equal(ethers.hexlify(bytes)) - }) - it('Should execute calls to multiple contracts', async () => { - const callReceiver2 = await CallReceiverMock.deploy() - const bytes = ethers.hexlify(ethers.randomBytes(21)) - - await callReceiver.testCall(55522, bytes) - await callReceiver2.testCall(66623, new Uint8Array([])) - - const res = await multiCall.multiCall.staticCall( - applyTxDefaults([ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValA') - }, - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValB') - }, - { - revertOnError: false, - target: await callReceiver2.getAddress(), - data: callReceiver2.interface.encodeFunctionData('lastValA') - } - ]) - ) - - expect(res[0].length).to.equal(3) - expect(res[1].length).to.equal(3) - expect(res[0][0]).to.be.true - expect(res[1][0]).to.be.equal(ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [55522])) - expect(res[0][1]).to.be.true - expect(ethers.AbiCoder.defaultAbiCoder().decode(['bytes'], res[1][1])[0]).to.be.equal(bytes) - expect(res[0][2]).to.be.true - expect(res[1][2]).to.be.equal(ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [66623])) - }) - it('Return other calls even if single call fails', async () => { - const bytes = ethers.randomBytes(422) - - await callReceiver.testCall(55522, bytes) - await callReceiver.setRevertFlag(true) - - const res = await multiCall.multiCall.staticCall( - applyTxDefaults([ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValA') - }, - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [111, bytes]) - } - ]) - ) - - expect(res[0].length).to.equal(2) - expect(res[1].length).to.equal(2) - expect(res[0][0]).to.be.true - expect(res[1][0]).to.be.equal(ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [55522])) - expect(res[0][1]).to.be.false - }) - it('Fail if call with revert on error fails', async () => { - const bytes = ethers.randomBytes(422) - - await callReceiver.testCall(55522, bytes) - await callReceiver.setRevertFlag(true) - - const tx = multiCall.multiCall.staticCall( - applyTxDefaults([ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValA') - }, - { - revertOnError: true, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [111, bytes]) - } - ]) - ) - - await expectStaticToBeRejected(tx, `CallReverted(uint256,bytes)`, 1, encodeError('CallReceiverMock#testCall: REVERT_FLAG')) - }) - it('Fail if batch includes delegate call', async () => { - const bytes = ethers.randomBytes(422) - - await callReceiver.testCall(55522, bytes) - - const tx = multiCall.multiCall.staticCall( - applyTxDefaults([ - { - delegateCall: true, - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValA') - }, - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [111, bytes]) - } - ]) - ) - - await expectStaticToBeRejected(tx, `DelegateCallNotAllowed(uint256)`, 0) - }) - it('Fail if not enough gas for call', async () => { - const bytes = ethers.randomBytes(422) - - await callReceiver.testCall(55522, bytes) - - const tx = multiCall.multiCall.staticCall( - applyTxDefaults([ - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('lastValA') - }, - { - revertOnError: false, - target: await callReceiver.getAddress(), - data: callReceiver.interface.encodeFunctionData('testCall', [111, bytes]), - gasLimit: 2n ** 256n - 1n - } - ]) - ) - - await expectStaticToBeRejected(tx, `NotEnoughGas(uint256,uint256,uint256)`, 1, 2n ** 256n - 1n, '*') - }) - it('Should call globals', async () => { - const i = multiCall.interface - const emptyAccount = ethers.Wallet.createRandom().address - - await multiCall.multiCall.staticCall([]) - - const lastBlock = await hethers.provider.getBlock('latest') - - const txs = await Promise.all( - [ - i.encodeFunctionData('callBlockhash', [lastBlock!.number - 1]), - i.encodeFunctionData('callCoinbase'), - i.encodeFunctionData('callDifficulty'), - i.encodeFunctionData('callGasLimit'), - i.encodeFunctionData('callBlockNumber'), - i.encodeFunctionData('callTimestamp'), - i.encodeFunctionData('callGasLeft'), - i.encodeFunctionData('callGasPrice'), - i.encodeFunctionData('callOrigin'), - i.encodeFunctionData('callBalanceOf', [accounts[0]]), - i.encodeFunctionData('callBalanceOf', [emptyAccount]), - i.encodeFunctionData('callCodeSize', [accounts[0]]), - i.encodeFunctionData('callCodeSize', [await callReceiver.getAddress()]), - i.encodeFunctionData('callCode', [accounts[0]]), - i.encodeFunctionData('callCode', [await callReceiver.getAddress()]), - i.encodeFunctionData('callCodeHash', [accounts[0]]), - i.encodeFunctionData('callCodeHash', [await callReceiver.getAddress()]), - i.encodeFunctionData('callChainId') - ].map(async data => - applyTxDefault({ - revertOnError: false, - target: await multiCall.getAddress(), - data - }) - ) - ) - - const res = await multiCall.multiCall.staticCall(txs, { gasPrice: 1 }) - - const emptyBytes32 = ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], ['0']) - - expect(res[0].length).to.equal(txs.length) - expect(res[1].length).to.equal(txs.length) - - // All calls must success - expect(res[0].reduce((a: boolean, c: boolean) => a && c)).to.be.true - - expect(res[1][0]).to.not.equal(emptyBytes32, 'return block hash') - - if (!process.env.COVERAGE) { - expect(res[1][1]).to.not.equal(emptyBytes32, 'return coinbase') - expect(res[1][2]).to.not.equal(emptyBytes32, 'return difficulty') - } - - expect(res[1][3]).to.not.equal(emptyBytes32) - expect(res[1][4]).to.not.equal(emptyBytes32, 'return block number') - expect(res[1][5]).to.not.equal(emptyBytes32, 'return timestamp') - expect(res[1][6]).to.not.equal(emptyBytes32, 'return gas left') - expect(BigInt(res[1][7])).to.equal(1n, 'return gas price') - expect(res[1][8]).to.not.equal(emptyBytes32, 'return origin') - expect(res[1][9]).to.not.equal(emptyBytes32, 'return balance of 0x') - expect(res[1][10]).to.equal(emptyBytes32, 'return balance of empty account') - expect(res[1][11]).to.equal(emptyBytes32, 'return code size of empty account') - expect(res[1][12]).to.not.equal(emptyBytes32, 'return code size of contract') - - expect(ethers.AbiCoder.defaultAbiCoder().decode(['bytes'], res[1][13])[0]).to.equal('0x') - - const codeSize = ethers.AbiCoder.defaultAbiCoder().decode(['uint256'], res[1][12])[0] - expect(ethers.AbiCoder.defaultAbiCoder().decode(['bytes'], res[1][14])[0].length).to.equal( - 2 + Number(codeSize) * 2, - 'return code of correct size' - ) - - expect(res[1][15]).to.not.equal(emptyBytes32) - expect(res[1][16]).to.not.equal(emptyBytes32) - - expect(ethers.AbiCoder.defaultAbiCoder().decode(['uint256'], res[1][17])[0]).to.equal(await getChainId(), 'return chain id') - }) - }) -}) diff --git a/packages/wallet-contracts/test/utils/contracts.ts b/packages/wallet-contracts/test/utils/contracts.ts deleted file mode 100644 index c2d6561b6e..0000000000 --- a/packages/wallet-contracts/test/utils/contracts.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { ethers } from 'ethers' -import { ethers as hethers } from 'hardhat' -import * as t from '../../gen/typechain' - -const cachedFactories: { [name: string]: ethers.ContractFactory } = {} - -async function deploy(name: string, ...args: any[]) { - const factory = await hethers.getContractFactory(name) - cachedFactories[name] = factory - return (await factory.deploy(...args)) as unknown as Y -} - -function attach(name: string, address: string) { - return cachedFactories[name].attach(address) as Y -} - -type Adapter = { - cache: () => Promise - deploy: (...args: any[]) => Promise - attach: (address: string) => T - factory: () => ethers.ContractFactory -} - -function adapt(name: string): Adapter { - return { - cache: async () => (cachedFactories[name] = await hethers.getContractFactory(name)), - deploy: (...args: any[]) => deploy(name, ...args), - attach: (address: string) => attach(name, address), - factory: () => cachedFactories[name] - } -} - -export type ContractType> = T extends Adapter ? U : never - -export const LibBytesImpl = adapt('LibBytesImpl') -export const LibBytesPointerImpl = adapt('LibBytesPointerImpl') -export const Factory = adapt('Factory') -export const MainModule = adapt('MainModule') -export const MainModuleUpgradable = adapt('MainModuleUpgradable') -export const ERC165CheckerMock = adapt('ERC165CheckerMock') -export const ModuleMock = adapt('ModuleMock') -export const CallReceiverMock = adapt('CallReceiverMock') -export const MultiCallUtils = adapt('MultiCallUtils') -export const GuestModule = adapt('GuestModule') -export const HookMock = adapt('HookMock') -export const HookCallerMock = adapt('HookCallerMock') -export const RequireUtils = adapt('RequireUtils') -export const DelegateCallMock = adapt('DelegateCallMock') -export const GasBurnerMock = adapt('GasBurnerMock') -export const GasEstimator = adapt('GasEstimator') -export const MainModuleGasEstimation = adapt('MainModuleGasEstimation') -export const LibStringImp = adapt('LibStringImp') -export const AlwaysRevertMock = adapt('AlwaysRevertMock') -;[ - LibBytesImpl, - Factory, - MainModule, - MainModuleUpgradable, - ERC165CheckerMock, - ModuleMock, - CallReceiverMock, - MultiCallUtils, - GuestModule, - HookMock, - HookCallerMock, - RequireUtils, - DelegateCallMock, - GasEstimator -].map(c => c.cache()) - -export const deploySequenceContext = async (owner?: string) => { - const factory = await Factory.deploy() - const mainModuleUpgradable = await MainModuleUpgradable.deploy() - const mainModule = await MainModule.deploy(await factory.getAddress(), await mainModuleUpgradable.getAddress()) - - return { - factory: await factory.waitForDeployment(), - mainModule: await mainModule.waitForDeployment(), - mainModuleUpgradable: await mainModuleUpgradable.waitForDeployment() - } -} - -export type SequenceContext = { - factory: ContractType - mainModule: ContractType - mainModuleUpgradable: ContractType -} diff --git a/packages/wallet-contracts/test/utils/imposter.ts b/packages/wallet-contracts/test/utils/imposter.ts deleted file mode 100644 index f8da84b431..0000000000 --- a/packages/wallet-contracts/test/utils/imposter.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ethers } from 'ethers' -import { AnyStaticSigner, StaticSigner } from './wallet' - -export class Imposter extends ethers.AbstractSigner implements StaticSigner { - static random(identity: string | AnyStaticSigner) { - return new Imposter(identity, ethers.Wallet.createRandom()) - } - - constructor( - public identity: string | AnyStaticSigner, - public signer: ethers.Signer - ) { - super() - } - - get address() { - return typeof this.identity === 'string' ? this.identity : this.identity.address - } - - async getAddress(): Promise { - return this.address - } - - signMessage(message: string | Uint8Array): Promise { - return this.signer.signMessage(message) - } - - signTypedData( - domain: ethers.TypedDataDomain, - types: Record, - value: Record - ): Promise { - return this.signer.signTypedData(domain, types, value) - } - - signTransaction(transaction: ethers.TransactionRequest): Promise { - return this.signer.signTransaction(transaction) - } - - connect(provider: ethers.Provider): ethers.Signer { - return this.signer.connect(provider) - } -} diff --git a/packages/wallet-contracts/test/utils/index.ts b/packages/wallet-contracts/test/utils/index.ts deleted file mode 100644 index 86eab632e0..0000000000 --- a/packages/wallet-contracts/test/utils/index.ts +++ /dev/null @@ -1,118 +0,0 @@ -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import chaiString from 'chai-string' -import { ethers } from 'ethers' -import { solidity } from 'ethereum-waffle' -import { ethers as hethers } from 'hardhat' - -export const getChainId = async (): Promise => - process.env.NET_ID ? BigInt(process.env.NET_ID) : (await hethers.provider.getNetwork()).chainId - -export const { assert, expect } = chai.use(chaiString).use(chaiAsPromised).use(solidity) - -export function bytes32toAddress(bytes32: ethers.BytesLike): string { - const paddedValue = ethers.zeroPadValue(bytes32, 32) - return ethers.getAddress(ethers.AbiCoder.defaultAbiCoder().decode(['address'], paddedValue)[0]) -} - -export function shuffle(a: T[]): T[] { - for (let i = a.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)) - ;[a[i], a[j]] = [a[j], a[i]] - } - - return a -} - -export function randomHex(length: number): string { - return ethers.hexlify(ethers.randomBytes(length)) -} - -export async function expectToBeRejected(promise: Promise, error: string) { - if (!process.env.COVERAGE) { - await expect(promise).to.be.rejectedWith(error) - } else { - await expect(promise).to.be.rejected - } -} - -export async function expectStaticToBeRejected(promise: Promise, signature: string, ...args: any[]) { - // await expectToBeRejected(promise, `errorName="${signature.split('(')[0]}"`) - // await expectToBeRejected(promise, `errorSignature="${signature}"`) - - await expectToBeRejected(promise, `${signature.split('(')[0]}`) - - const sigTypes = signature.split('(')[1].split(')')[0].split(',') - - expect(sigTypes.length).to.equal(args.length) - - const formattedArgs = args - .map((arg, i) => { - const type = sigTypes[i] - - if (arg === '*') return '*' - - switch (type) { - case 'bytes': - if (typeof arg === 'string' && arg.length === 0) { - return ethers.hexlify(new Uint8Array([])) - } - return `"${ethers.hexlify(arg).toLowerCase()}"` - case 'string': - return `"${arg.toString()}"` - } - - if (type.startsWith('uint') || type.startsWith('int')) { - //return `{"type":"BigNumber","hex":"${ethers.toBeHex(BigInt(arg))}"}` - return BigInt(arg).toString() - } - - throw new Error(`Unknown type: ${type}`) - }) - .join(', ') - - const groups = formattedArgs.split('*') - - for (let i = 0; i < groups.length; i++) { - await expectToBeRejected(promise, `${groups[i]}`) - } - - // if (groups.length === 1) { - // // await expectToBeRejected(promise, `errorArgs=[${formattedArgs}]`) - // await expectToBeRejected(promise, `${formattedArgs}`) - // } else { - // for (let i = 0; i < groups.length; i++) { - // const group = groups[i] - // if (i === 0) { - // // await expectToBeRejected(promise, `errorArgs=[${group}`) - // await expectToBeRejected(promise, `${group}`) - // } else if (i === groups.length - 1) { - // await expectToBeRejected(promise, `${group}]`) - // } else { - // await expectToBeRejected(promise, `${group}`) - // } - // } - // } -} - -export function encodeError(error: string): string { - return '0x08c379a0' + ethers.AbiCoder.defaultAbiCoder().encode(['string'], [error]).slice(2) -} - -function xor(a: any, b: any) { - if (!Buffer.isBuffer(a)) a = Buffer.from(ethers.getBytes(a)) - if (!Buffer.isBuffer(b)) b = Buffer.from(ethers.getBytes(b)) - return ethers.hexlify(a.map((v: number, i: number) => v ^ b[i])) -} - -export function interfaceIdOf(int: ethers.Interface): string { - const signatures: string[] = [] - int.forEachFunction(fragment => { - signatures.push(getSigHash(fragment)) - }) - return signatures.reduce((p, c) => xor(p, c)) -} - -export function getSigHash(fragment: ethers.FunctionFragment): string { - return ethers.dataSlice(ethers.id(fragment.format('sighash')), 0, 4) -} diff --git a/packages/wallet-contracts/test/utils/sequence.ts b/packages/wallet-contracts/test/utils/sequence.ts deleted file mode 100644 index 065192ae9b..0000000000 --- a/packages/wallet-contracts/test/utils/sequence.ts +++ /dev/null @@ -1,613 +0,0 @@ -import { BigNumberish, BytesLike, ethers, Wallet } from 'ethers' -import { getChainId } from '.' - -export const WALLET_CODE = '0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3' - -export enum SignatureType { - Legacy = 0, - Dynamic = 1, - NoChaindDynamic = 2 -} - -export type SignerLeaf = { - address: string - weight: BigNumberish -} - -export type SubdigestLeaf = { - subdigest: string -} - -export type NestedLeaf = { - tree: ConfigTopology - internalThreshold: BigNumberish - externalWeight: BigNumberish -} - -export type ConfigLeaf = SubdigestLeaf | SignerLeaf | NestedLeaf - -export type ImageHashNode = { - left: ConfigTopology - right: ConfigTopology -} - -export type ConfigTopology = ImageHashNode | ConfigLeaf - -export type WalletConfig = { - threshold: ethers.BigNumberish - checkpoint: ethers.BigNumberish - topology: ConfigTopology -} - -export type SimplifiedNestedWalletConfig = { - threshold: ethers.BigNumberish - weight: ethers.BigNumberish - signers: SimplifiedConfigMember[] -} - -export type SimplifiedWalletConfig = { - threshold: BigNumberish - checkpoint: BigNumberish - signers: SimplifiedConfigMember[] -} - -export type SimplifiedConfigMember = SignerLeaf | SimplifiedNestedWalletConfig - -export type Transaction = { - delegateCall: boolean - revertOnError: boolean - gasLimit: BigNumberish - target: string - value: BigNumberish - data: BytesLike -} - -export enum SignaturePartType { - Signature = 0, - Address = 1, - Dynamic = 2, - Node = 3, - Branch = 4, - Subdigest = 5, - Nested = 6 -} - -export type SignaturePart = { - address: string - type: SignaturePartType - signature?: string -} - -export function applyTxDefault( - tx: Partial, - def: Transaction = { - delegateCall: false, - revertOnError: true, - gasLimit: 0, - target: '0xFb8356E7deB64034aBE2b2a8A732634f77A2DAE4', // Random address - value: 0, - data: new Uint8Array([]) - } -): Transaction { - return { - ...def, - ...tx - } -} - -export function applyTxDefaults(tx: Partial[], def?: Transaction): Transaction[] { - return tx.map(t => applyTxDefault(t, def)) -} - -export const MetaTransactionsSolidityType = `tuple( - bool delegateCall, - bool revertOnError, - uint256 gasLimit, - address target, - uint256 value, - bytes data -)[]` - -export function isConfigLeaf(node: ConfigTopology): node is ConfigLeaf { - return !('left' in node || 'right' in node) -} - -export function isSignerLeaf(node: any): node is SignerLeaf { - return isConfigLeaf(node) && 'weight' in node && 'address' in node -} - -export function isSubdigestLeaf(node: ConfigTopology): node is SubdigestLeaf { - return isConfigLeaf(node) && 'subdigest' in node -} - -export function isNestedLeaf(node: ConfigTopology): node is NestedLeaf { - return isConfigLeaf(node) && 'tree' in node -} - -export function legacyTopology(leavesOrConfig: SimplifiedWalletConfig | ConfigTopology[]): ConfigTopology { - if (!Array.isArray(leavesOrConfig)) { - return legacyTopology(toTopology(leavesOrConfig)) - } - - return leavesOrConfig.reduce((acc, leaf) => { - return { - left: acc, - right: leaf - } - }) -} - -export function toTopology(config: SimplifiedWalletConfig | SimplifiedNestedWalletConfig): ConfigTopology[] { - return config.signers.map(s => { - if (isSignerLeaf(s)) { - return { - address: s.address, - weight: s.weight - } - } - - return { - tree: merkleTopology(toTopology(s)), - internalThreshold: s.threshold, - externalWeight: s.weight - } - }) -} - -export function merkleTopology(leavesOrConfig: SimplifiedWalletConfig | ConfigTopology[]): ConfigTopology { - if (!Array.isArray(leavesOrConfig)) { - return merkleTopology(toTopology(leavesOrConfig)) - } - - const leaves = leavesOrConfig - for (let s = leaves.length; s > 1; s = s / 2) { - for (let i = 0; i < s / 2; i++) { - const j1 = i * 2 - const j2 = j1 + 1 - - if (j2 >= s) { - leaves[i] = leaves[j1] - } else { - leaves[i] = { - left: leaves[j1], - right: leaves[j2] - } - } - } - } - - return leaves[0] -} - -export function optimize2SignersTopology(config: SimplifiedWalletConfig): ConfigTopology { - if (config.signers.length > 8) { - return merkleTopology(config) - } - - return legacyTopology(config) -} - -export function leavesOf(topology: ConfigTopology): ConfigLeaf[] { - if (isConfigLeaf(topology)) { - return [topology] - } - - return [...leavesOf(topology.left), ...leavesOf(topology.right)] -} - -export function subdigestLeaves(topology: ConfigTopology): string[] { - return leavesOf(topology) - .filter(l => isSubdigestLeaf(l)) - .map((l: SubdigestLeaf) => l.subdigest) -} - -export function toSimplifiedConfig(config: WalletConfig): SimplifiedWalletConfig { - let leaves = leavesOf(config.topology).filter(isSignerLeaf) - - return { - threshold: config.threshold, - checkpoint: config.checkpoint, - signers: leaves.map(l => ({ - weight: l.weight, - address: l.address - })) - } -} - -export function hashNode(node: ConfigTopology): string { - if (isSignerLeaf(node)) { - return leafForAddressAndWeight(node.address, node.weight) - } - - if (isSubdigestLeaf(node)) { - return ethers.solidityPackedKeccak256(['string', 'bytes32'], ['Sequence static digest:\n', node.subdigest]) - } - - if (isNestedLeaf(node)) { - return ethers.solidityPackedKeccak256( - ['string', 'bytes32', 'uint256', 'uint256'], - ['Sequence nested config:\n', hashNode(node.tree), node.internalThreshold, node.externalWeight] - ) - } - - return ethers.solidityPackedKeccak256(['bytes32', 'bytes32'], [hashNode(node.left), hashNode(node.right)]) -} - -export function imageHash2(threshold: ethers.BigNumberish, topology: ConfigTopology): string { - const root = hashNode(topology) - return ethers.keccak256(ethers.solidityPacked(['bytes32', 'uint256'], [root, threshold])) -} - -export function printTopology(topology: ConfigTopology, threshold?: ethers.BigNumberish, inverse = false): string[] { - if (threshold) { - const imageHash = imageHash2(threshold, topology) - - const result: string[] = [`imageHash: ${imageHash}`] - const signers = printTopology(topology, undefined, inverse) - result.push(` ├─ threshold: ${threshold}`) - for (let i = 0; i < signers.length; i++) { - const prefix = i === 0 ? ' └─ ' : ' ' - result.push(`${prefix}${signers[i]}`) - } - - return result - } - - if (isSignerLeaf(topology)) { - return [`weight: ${topology.weight} - address: ${topology.address}`] - } - - if (isSubdigestLeaf(topology)) { - return [`subdigest: ${topology.subdigest}`] - } - - if (isNestedLeaf(topology)) { - const result: string[] = [`internalThreshold: ${topology.internalThreshold} - externalWeight: ${topology.externalWeight}`] - const signers = printTopology(topology.tree, undefined, inverse) - for (let i = 0; i < signers.length; i++) { - const prefix = i === 0 ? '└─ ' : ' ' - result.push(`${prefix}${signers[i]}`) - } - - return result - } - - const root = hashNode(topology) - let printLeft = printTopology(topology.left, undefined, inverse) - let printRight = printTopology(topology.right, undefined, inverse) - - if (inverse) { - ;[printLeft, printRight] = [printRight, printLeft] - } - - const result = [`${root}`] - for (let i = 0; i < printLeft.length; i++) { - const prefix = i === 0 ? ' ├─ ' : ' │' - result.push(`${prefix}${printLeft[i]}`) - } - - for (let i = 0; i < printRight.length; i++) { - const prefix = i === 0 ? ' └─ ' : ' ' - result.push(`${prefix}${printRight[i]}`) - } - - return result -} - -export function addressOf(factory: string, firstModule: string, imageHash: string): string { - const codeHash = ethers.keccak256( - ethers.solidityPacked(['bytes', 'bytes32'], [WALLET_CODE, ethers.zeroPadValue(firstModule, 32)]) - ) - - const hash = ethers.keccak256( - ethers.solidityPacked(['bytes1', 'address', 'bytes32', 'bytes32'], ['0xff', factory, imageHash, codeHash]) - ) - - return ethers.getAddress(ethers.dataSlice(hash, 12)) -} - -export function encodeNonce(space: BigNumberish, nonce: BigNumberish) { - return BigInt(ethers.solidityPacked(['uint160', 'uint96'], [space, nonce])) -} - -export function leafForAddressAndWeight(address: string, weight: ethers.BigNumberish) { - return ethers.solidityPacked(['uint96', 'address'], [weight, address]) -} - -export function imageHash(config: WalletConfig): string { - const signersRoot = hashNode(config.topology) - - const preImageHash = ethers.keccak256( - ethers.AbiCoder.defaultAbiCoder().encode(['bytes32', 'uint256'], [signersRoot, config.threshold]) - ) - - return ethers.keccak256(ethers.AbiCoder.defaultAbiCoder().encode(['bytes32', 'uint256'], [preImageHash, config.checkpoint])) -} - -export function digestOf(txs: Partial[], nonce: ethers.BigNumberish) { - return ethers.keccak256( - ethers.AbiCoder.defaultAbiCoder().encode(['uint256', MetaTransactionsSolidityType], [nonce, applyTxDefaults(txs)]) - ) -} - -export async function subdigestOf(wallet: string, digest: ethers.BytesLike, chainId?: ethers.BigNumberish) { - chainId = chainId ?? (await getChainId()) - return ethers.keccak256( - ethers.solidityPacked(['string', 'uint256', 'address', 'bytes32'], ['\x19\x01', chainId, wallet, digest]) - ) -} - -export function computeStorageKey(key: string, subkey?: string): string { - if (!subkey) { - return ethers.id(key) - } - - return ethers.keccak256(ethers.AbiCoder.defaultAbiCoder().encode(['bytes32', 'bytes32'], [computeStorageKey(key), subkey])) -} - -export type EncodingOptions = { - forceDynamicEncoding?: boolean - signatureType?: SignatureType - disableTrim?: boolean -} - -function leftSlice(topology: ConfigTopology): ConfigTopology[] { - // Returns left side of the tree - let stack: ConfigTopology[] = [] - - let prev = topology - while (!isConfigLeaf(prev)) { - stack.unshift(prev.right) - prev = prev.left - } - - stack.unshift(prev) - - return stack -} - -type DecodedSignatureMember = { - weight?: ethers.BigNumberish - address?: string - type: SignaturePartType - value?: string - innerThreshold?: ethers.BigNumberish -} - -export class SignatureConstructor { - private members: DecodedSignatureMember[] = [] - - constructor(public disableTrim = false) {} - - tryTrim(): void { - if (this.disableTrim) return - - // Can only trim when we have two members - if (this.members.length !== 2) return - - // There are 4 valid trim options: - // 1. Trim the first addr, second is node - // 2. Trim the first node, second is addr - // 3. Trim the first addr, second is addr - // 4. Trim the first node, second is node - - const first = this.members[0] - const second = this.members[1] - - if (first.type !== SignaturePartType.Address && first.type !== SignaturePartType.Node) return - if (second.type !== SignaturePartType.Address && second.type !== SignaturePartType.Node) return - - const firstNode = - first.type === SignaturePartType.Address ? leafForAddressAndWeight(first.address!, first.weight!) : first.value - const secondNode = - second.type === SignaturePartType.Address ? leafForAddressAndWeight(second.address!, second.weight!) : second.value - - const nextNode = ethers.keccak256(ethers.solidityPacked(['bytes32', 'bytes32'], [firstNode, secondNode])) - - this.members = [ - { - type: SignaturePartType.Node, - value: nextNode - } - ] - } - - appendPart(weight: ethers.BigNumberish, part: SignaturePart) { - switch (part.type) { - case SignaturePartType.Address: - this.members.push({ weight, address: part.address, type: SignaturePartType.Address }) - break - - case SignaturePartType.Signature: - this.members.push({ weight, address: part.address, type: SignaturePartType.Signature, value: part.signature }) - break - - case SignaturePartType.Dynamic: - this.members.push({ weight, address: part.address, type: SignaturePartType.Dynamic, value: part.signature }) - break - - default: - throw new Error(`Unknown signature part type: ${part.type}`) - } - - this.tryTrim() - } - - appendNode(node: string) { - this.members.push({ type: SignaturePartType.Node, value: node }) - this.tryTrim() - } - - appendBranch(branch: string) { - this.members.push({ type: SignaturePartType.Branch, value: branch }) - } - - appendSubdigest(subdigest: string) { - this.members.push({ type: SignaturePartType.Subdigest, value: subdigest }) - } - - appendNested(branch: string, weight: ethers.BigNumberish, innerThreshold: ethers.BigNumberish) { - this.members.push({ type: SignaturePartType.Nested, value: branch, innerThreshold, weight }) - } - - encode(): string { - let result = '0x' - - for (const member of this.members) { - switch (member.type) { - case SignaturePartType.Address: - result = ethers.solidityPacked( - ['bytes', 'uint8', 'uint8', 'address'], - [result, SignaturePartType.Address, member.weight, member.address] - ) - break - - case SignaturePartType.Signature: - result = ethers.solidityPacked( - ['bytes', 'uint8', 'uint8', 'bytes'], - [result, SignaturePartType.Signature, member.weight, member.value] - ) - break - - case SignaturePartType.Dynamic: - const signature = ethers.getBytes(member.value ?? new Uint8Array([])) - result = ethers.solidityPacked( - ['bytes', 'uint8', 'uint8', 'address', 'uint24', 'bytes'], - [result, SignaturePartType.Dynamic, member.weight, member.address, signature.length, signature] - ) - break - - case SignaturePartType.Node: - result = ethers.solidityPacked(['bytes', 'uint8', 'bytes32'], [result, SignaturePartType.Node, member.value]) - break - - case SignaturePartType.Branch: - const branch = ethers.getBytes(member.value ?? new Uint8Array([])) - result = ethers.solidityPacked( - ['bytes', 'uint8', 'uint24', 'bytes'], - [result, SignaturePartType.Branch, branch.length, branch] - ) - break - - case SignaturePartType.Subdigest: - result = ethers.solidityPacked(['bytes', 'uint8', 'bytes32'], [result, SignaturePartType.Subdigest, member.value]) - break - - case SignaturePartType.Nested: - const nestedBranch = ethers.getBytes(member.value ?? new Uint8Array([])) - result = ethers.solidityPacked( - ['bytes', 'uint8', 'uint8', 'uint16', 'uint24', 'bytes'], - [result, SignaturePartType.Nested, member.weight, member.innerThreshold, nestedBranch.length, nestedBranch] - ) - break - - default: - throw new Error(`Unknown signature part type: ${member.type}`) - } - } - - return result - } -} - -export function encodeSigners( - topology: ConfigTopology, - parts: SignaturePart[] | Map, - subdigests: string[], - options?: EncodingOptions -): { encoded: string; weight: bigint } { - // Map part to signers - if (Array.isArray(parts)) { - const partOfSigner = new Map() - for (const part of parts) { - partOfSigner.set(part.address, part) - } - return encodeSigners(topology, partOfSigner, subdigests, options) - } - - const slice = leftSlice(topology) - let weight = 0n - - const constructor = new SignatureConstructor(options?.disableTrim) - for (const node of slice) { - if (!isConfigLeaf(node)) { - // If the node opens up to another branch - // we recurse the encoding, and if the result has any weight - // we have to embed the whole branch, otherwise we just add the node - const nested = encodeSigners(node, parts, subdigests, options) - if (nested.weight === 0n && !options?.disableTrim) { - constructor.appendNode(hashNode(node)) - } else { - constructor.appendBranch(nested.encoded) - weight = weight + nested.weight - } - } else { - if (isSignerLeaf(node)) { - // If the node is a signer leaf, we can just add the member - const part = parts.get(node.address) ?? { type: SignaturePartType.Address, address: node.address } - if (part.type !== SignaturePartType.Address) { - weight = weight + BigInt(node.weight) - } - - constructor.appendPart(node.weight, part) - } else if (isNestedLeaf(node)) { - // If the node opens up to another branch - // we recurse the encoding, and if the result has any weight - // we have to embed the whole branch, otherwise we just add the node - const nested = encodeSigners(node.tree, parts, subdigests, options) - if (nested.weight === 0n && !options?.disableTrim) { - constructor.appendNode(hashNode(node)) - } else { - // Nested configs only have weight if the inner threshold is met - // and the weight is always the external weight - if (nested.weight >= BigInt(node.internalThreshold)) { - weight = weight + BigInt(node.externalWeight) - } - - constructor.appendNested(nested.encoded, node.externalWeight, node.internalThreshold) - } - } else { - // If the node is a subdigest add the node (unless it's an static subdigest signature) - if (subdigests.includes(node.subdigest)) { - weight += 2n ** 256n - 1n - constructor.appendSubdigest(node.subdigest) - } else { - constructor.appendNode(hashNode(node)) - } - } - } - } - - return { - encoded: constructor.encode(), - weight - } -} - -export function encodeSignature( - config: WalletConfig, - parts: SignaturePart[] | Map, - subdigests: string[], - options?: EncodingOptions -) { - const encodedSigners = encodeSigners(config.topology, parts, subdigests, options) - - switch (options?.signatureType || SignatureType.Legacy) { - case SignatureType.Dynamic: - return ethers.solidityPacked( - ['uint8', 'uint16', 'uint32', 'bytes'], - [SignatureType.Dynamic, config.threshold, config.checkpoint, encodedSigners.encoded] - ) - case SignatureType.NoChaindDynamic: - return ethers.solidityPacked( - ['uint8', 'uint16', 'uint32', 'bytes'], - [SignatureType.NoChaindDynamic, config.threshold, config.checkpoint, encodedSigners.encoded] - ) - default: - case SignatureType.Legacy: - return ethers.solidityPacked( - ['uint8', 'uint8', 'uint32', 'bytes'], - [SignatureType.Legacy, config.threshold, config.checkpoint, encodedSigners.encoded] - ) - } -} diff --git a/packages/wallet-contracts/test/utils/wallet.ts b/packages/wallet-contracts/test/utils/wallet.ts deleted file mode 100644 index 110da55082..0000000000 --- a/packages/wallet-contracts/test/utils/wallet.ts +++ /dev/null @@ -1,329 +0,0 @@ -import { ethers, Overrides } from 'ethers' -import { ethers as hethers } from 'hardhat' -import { shuffle } from '.' -import { MainModule, MainModuleUpgradable, SequenceContext } from './contracts' -import { - addressOf, - applyTxDefaults, - ConfigTopology, - digestOf, - encodeSignature, - EncodingOptions, - imageHash, - merkleTopology, - optimize2SignersTopology, - SignaturePartType, - SignatureType, - SimplifiedWalletConfig, - subdigestOf, - Transaction, - WalletConfig -} from './sequence' - -export type StaticSigner = ethers.Signer & { address: string } -export type AnyStaticSigner = StaticSigner | SequenceWallet - -export function isAnyStaticSigner(s: any): s is AnyStaticSigner { - return s.address !== undefined -} - -let LAST_CHECKPOINT = 0 - -export function getCheckpoint() { - let cand = Math.floor(Date.now() / 1000) - - if (cand === LAST_CHECKPOINT) { - cand++ - } - - LAST_CHECKPOINT = cand - return cand -} - -export type WalletOptions = { - context: SequenceContext - config: WalletConfig - address?: string - signers: (ethers.Signer | SequenceWallet)[] - encodingOptions?: EncodingOptions - chainId?: ethers.BigNumberish -} - -export type BasicWalletOptions = { - address?: string - threshold?: number - signing: number | number[] - idle: number | number[] - encodingOptions?: EncodingOptions - topologyConverter: (simple: SimplifiedWalletConfig) => ConfigTopology -} - -export type DetailedWalletOptions = { - address?: string - threshold: ethers.BigNumberish - signers: (string | AnyStaticSigner | Weighted | Weighted)[] - encodingOptions?: EncodingOptions -} - -export type Weighted = { weight: number; value: T } - -export function isWeighted(w: any): w is Weighted { - return w.weight !== undefined && w.value !== undefined -} - -export function weightedVal(w: Weighted | T): T { - return isWeighted(w) ? w.value : w -} - -export function isSequenceSigner(signer: ethers.Signer | SequenceWallet): signer is SequenceWallet { - return 'isSequence' in signer && signer.isSequence -} - -const defaultTopology = optimize2SignersTopology - -export class SequenceWallet { - public isSequence = true - _isSigner: boolean = true - - constructor(public options: WalletOptions) {} - - static basicWallet(context: SequenceContext, opts?: Partial): SequenceWallet { - const options = { ...{ signing: 1, idle: 0, topologyConverter: defaultTopology }, ...opts } - - const signersWeight = Array.isArray(options.signing) ? options.signing : new Array(options.signing).fill(0).map(() => 1) - const idleWeight = Array.isArray(options.idle) ? options.idle : new Array(options.idle).fill(0).map(() => 1) - - const signers = signersWeight.map(s => (isAnyStaticSigner(s) ? s : ethers.Wallet.createRandom())) - const idle = idleWeight.map(() => ethers.getAddress(ethers.hexlify(ethers.randomBytes(20)))) - const checkpoint = getCheckpoint() - - const simplifiedConfig = { - checkpoint, - threshold: options.threshold ? options.threshold : signers.length, - signers: shuffle( - signers - .map((s, i) => ({ - address: s.address, - weight: signersWeight[i] - })) - .concat( - idle.map((s, i) => ({ - address: s, - weight: idleWeight[i] - })) - ) - ) - } - - return new SequenceWallet({ - address: options.address, - context, - encodingOptions: options.encodingOptions, - config: { - ...simplifiedConfig, - topology: options.topologyConverter(simplifiedConfig) - }, - signers: signers - }) - } - - static detailedWallet(context: SequenceContext, opts: DetailedWalletOptions): SequenceWallet { - const simplifiedConfig = { - threshold: opts.threshold, - checkpoint: getCheckpoint(), - signers: opts.signers.map(s => ({ - weight: isWeighted(s) ? s.weight : 1, - address: (() => { - const v = weightedVal(s) - return isAnyStaticSigner(v) ? v.address : v - })() - })) - } - - return new SequenceWallet({ - context, - encodingOptions: opts.encodingOptions, - address: opts.address, - config: { - ...simplifiedConfig, - topology: defaultTopology(simplifiedConfig) - }, - signers: opts.signers.map(s => weightedVal(s)).filter(isAnyStaticSigner) - }) - } - - useAddress(address?: string) { - return new SequenceWallet({ ...this.options, address: address ? address : this.address }) - } - - useConfig(of: SequenceWallet | WalletConfig) { - const config = 'config' in of ? of.config : of - return new SequenceWallet({ ...this.options, config }) - } - - useSigners(signers: (ethers.Signer | SequenceWallet)[] | ethers.Signer | SequenceWallet) { - return new SequenceWallet({ ...this.options, signers: Array.isArray(signers) ? signers : [signers] }) - } - - useEncodingOptions(encodingOptions?: EncodingOptions) { - return new SequenceWallet({ ...this.options, encodingOptions }) - } - - useChainId(chainId?: ethers.BigNumberish) { - return new SequenceWallet({ ...this.options, chainId }) - } - - get config() { - return this.options.config - } - - get signers() { - return this.options.signers - } - - get address() { - if (this.options.address) return this.options.address - return addressOf( - this.options.context.factory.target as string, - this.options.context.mainModule.target as string, - this.imageHash - ) - } - - getAddress() { - return this.address - } - - get imageHash() { - return imageHash(this.config) - } - - get mainModule() { - return MainModule.attach(this.address) - } - - get mainModuleUpgradable() { - return MainModuleUpgradable.attach(this.address) - } - - async deploy() { - if ((await hethers.provider.getCode(this.address)) !== '0x') { - return - } - - return await this.options.context.factory.deploy(await this.options.context.mainModule.getAddress(), this.imageHash) - } - - async getNonce(space: ethers.BigNumberish = 0) { - return this.mainModule.readNonce(space) - } - - async updateImageHash(input: ethers.BytesLike | WalletConfig): Promise { - if (!ethers.isBytesLike(input)) return this.updateImageHash(imageHash(input)) - - return this.sendTransactions([ - { - target: this.address, - data: this.options.context.mainModule.interface.encodeFunctionData('updateImageHash', [input]) - } - ]) - } - - async addExtraImageHash( - input: ethers.BytesLike | WalletConfig, - expiration: ethers.BigNumberish = 2n ** 248n - ): Promise { - if (!ethers.isBytesLike(input)) return this.addExtraImageHash(imageHash(input)) - - return this.sendTransactions([ - { - target: this.address, - data: this.options.context.mainModule.interface.encodeFunctionData('setExtraImageHash', [input, expiration]) - } - ]) - } - - async clearExtraImageHashes(imageHashes: (ethers.BytesLike | WalletConfig)[]) { - return this.sendTransactions([ - { - target: this.address, - data: this.options.context.mainModule.interface.encodeFunctionData('clearExtraImageHashes', [ - imageHashes.map(h => (ethers.isBytesLike(h) ? h : imageHash(h))) - ]) - } - ]) - } - - async signMessage(message: ethers.BytesLike): Promise { - return this.signDigest(ethers.keccak256(ethers.getBytes(message))) - } - - async signDigest(digest: ethers.BytesLike): Promise { - const subdigest = ethers.getBytes(await subdigestOf(this.address, digest, this.options.chainId)) - return this.signSubdigest(subdigest) - } - - staticSubdigestSign(subdigest: ethers.BytesLike, useNoChainId = true): string { - const signatureType = useNoChainId ? SignatureType.NoChaindDynamic : this.options.encodingOptions?.signatureType - return encodeSignature(this.config, [], [ethers.hexlify(subdigest)], { ...this.options.encodingOptions, signatureType }) - } - - async signSubdigest(subdigest: ethers.BytesLike): Promise { - const sigParts = await Promise.all( - this.signers.map(async s => { - if (isSequenceSigner(s)) { - return { - address: s.address, - signature: await s.signDigest(subdigest).then(s => s + '03'), - type: SignaturePartType.Dynamic - } - } - - return { - address: await s.getAddress(), - signature: await s.signMessage(subdigest).then(s => s + '02'), - type: SignaturePartType.Signature - } - }) - ) - - return encodeSignature(this.config, sigParts, [], this.options.encodingOptions) - } - - async signTransactions(ptxs: Partial[], nonce?: ethers.BigNumberish): Promise { - if (nonce === undefined) return this.signTransactions(ptxs, await this.getNonce()) - - const txs = applyTxDefaults(ptxs) - const digest = digestOf(txs, nonce) - - return this.signDigest(digest) - } - - async relayTransactions( - ptxs: Partial[], - signature: string, - nonce?: ethers.BigNumberish, - overrides: Overrides & { from?: string | Promise } = {} - ): Promise { - if (nonce === undefined) { - return this.relayTransactions(ptxs, signature, await this.getNonce(), overrides) - } - - const txs = applyTxDefaults(ptxs) - - return this.mainModule.execute(txs, nonce, signature, overrides) - } - - async sendTransactions( - ptxs: Partial[], - nonce?: ethers.BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - if (nonce === undefined) return this.sendTransactions(ptxs, await this.getNonce(), overrides) - - const txs = applyTxDefaults(ptxs) - const signature = await this.signTransactions(txs, nonce) - - return this.relayTransactions(txs, signature, nonce, overrides) - } -} diff --git a/packages/wallet-contracts/tsconfig.json b/packages/wallet-contracts/tsconfig.json deleted file mode 100644 index c6725543c9..0000000000 --- a/packages/wallet-contracts/tsconfig.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "module": "commonjs", - "moduleResolution": "node", - "sourceMap": true, - "allowSyntheticDefaultImports": true, - "resolveJsonModule": true, - "downlevelIteration": true, - "removeComments": false, - "skipLibCheck": true, - - "strictNullChecks": true, - "noImplicitUseStrict": true, - "noImplicitAny": false, - "noImplicitReturns": true, - "noImplicitThis": true, - "noUnusedParameters": false, - "noErrorTruncation": true, - "esModuleInterop": true, - - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "allowJs": false, - "checkJs": false, - - "baseUrl": ".", - "outDir": "build", - "lib": ["es2020", "dom"], - - "typeRoots": ["./node_modules/@types"] - }, - - "include": ["./hardhat.config.ts", "typings", "tests", "utils", "test"], - - "exclude": ["node_modules", "dist"] -} diff --git a/packages/wallet-contracts/typings/chai-bignumber.d.ts b/packages/wallet-contracts/typings/chai-bignumber.d.ts deleted file mode 100644 index 8a0080c8c7..0000000000 --- a/packages/wallet-contracts/typings/chai-bignumber.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/// - -declare module 'chai-bignumber' { - function chaiBignumber(bignumber: any): (chai: any, utils: any) => void - - namespace chaiBignumber {} - - export = chaiBignumber -} - -declare namespace Chai { - // For BDD API - interface Assertion extends LanguageChains, NumericComparison, TypeComparison { - bignumber: Assertion - } -} diff --git a/packages/wallet-contracts/typings/chai-bn.ts b/packages/wallet-contracts/typings/chai-bn.ts deleted file mode 100644 index fdf499cd18..0000000000 --- a/packages/wallet-contracts/typings/chai-bn.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* eslint-disable */ -/// - -declare module 'chai-bn' { - function chaiBN(bignumber: any): (chai: any, utils: any) => void - - namespace chaiBN {} - - export = chaiBN -} - -declare namespace Chai { - interface Equal { - BN: any - } - interface NumberComparer { - BN: any - } -} diff --git a/packages/wallet-contracts/typings/truffle.d.ts b/packages/wallet-contracts/typings/truffle.d.ts deleted file mode 100644 index 360a1a7c6e..0000000000 --- a/packages/wallet-contracts/typings/truffle.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -declare module 'truffle' { - import * as truffle from 'truffle-contract' - - interface ArtifactsGlobal { - require(name: string): truffle.TruffleContract - } - - global { - function contract(name: string, callback: (accounts: Array) => void): void - const artifacts: ArtifactsGlobal - } -} diff --git a/packages/wallet-contracts/utils/JsonBindings.sol b/packages/wallet-contracts/utils/JsonBindings.sol deleted file mode 100644 index 790682614a..0000000000 --- a/packages/wallet-contracts/utils/JsonBindings.sol +++ /dev/null @@ -1,193 +0,0 @@ -// Automatically generated by forge bind-json. - -pragma solidity >=0.6.2 <0.9.0; -pragma experimental ABIEncoderV2; - -import {MainModuleGasEstimation} from "contracts/modules/MainModuleGasEstimation.sol"; -import {IModuleCalls} from "contracts/modules/commons/interfaces/IModuleCalls.sol"; -import {ModuleCallsTest} from "foundry_test/modules/commons/ModuleCalls.t.sol"; -import {ModuleExtraAuthTest} from "foundry_test/modules/commons/ModuleExtraAuth.t.sol"; -import {SequenceChainedSigImp, SequenceChainedSigTest} from "foundry_test/modules/commons/submodules/auth/SequenceChainedSig.t.sol"; -import {L2CompressorHuffTest} from "foundry_test/modules/utils/L2CompressorHuff.t.sol"; -import {TrustTest} from "foundry_test/trust/Trust.t.sol"; - -interface Vm { - function parseJsonTypeArray(string calldata json, string calldata key, string calldata typeDescription) external pure returns (bytes memory); - function parseJsonType(string calldata json, string calldata typeDescription) external pure returns (bytes memory); - function parseJsonType(string calldata json, string calldata key, string calldata typeDescription) external pure returns (bytes memory); - function serializeJsonType(string calldata typeDescription, bytes memory value) external pure returns (string memory json); - function serializeJsonType(string calldata objectKey, string calldata valueKey, string calldata typeDescription, bytes memory value) external returns (string memory json); -} - -library JsonBindings { - Vm constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); - - string constant schema_Transaction = "Transaction(bool delegateCall,bool revertOnError,uint256 gasLimit,address target,uint256 value,bytes data)"; - string constant schema_SimulateResult = "SimulateResult(bool executed,bool succeeded,bytes result,uint256 gasUsed)"; - string constant schema_ToValAndData = "ToValAndData(address target,uint256 value,bytes data)"; - string constant schema_SetIh = "SetIh(bytes32 imageHash,uint256 expiration)"; - string constant schema_MockedSignature = "MockedSignature(bool exists,uint256 threshold,uint256 weight,bytes32 imageHash,bytes32 subdigest,uint256 checkpoint)"; - string constant schema_HashAndSignature = "HashAndSignature(bytes32 imageHash,uint256 threshold,uint256 weight,uint56 checkpointDelta,bytes signature)"; - string constant schema_BatchMember = "BatchMember(Transaction[] txs,uint160 space,uint96 nonce,bytes signature)Transaction(bool delegateCall,bool revertOnError,uint256 gasLimit,address target,uint256 value,bytes data)"; - string constant schema_MemoryStruct1 = "MemoryStruct1(bytes32 rawHash,bytes32 finalHash,uint8 v,bytes32 r,bytes32 s)"; - - function serialize(IModuleCalls.Transaction memory value) internal pure returns (string memory) { - return vm.serializeJsonType(schema_Transaction, abi.encode(value)); - } - - function serialize(IModuleCalls.Transaction memory value, string memory objectKey, string memory valueKey) internal returns (string memory) { - return vm.serializeJsonType(objectKey, valueKey, schema_Transaction, abi.encode(value)); - } - - function deserializeTransaction(string memory json) public pure returns (IModuleCalls.Transaction memory) { - return abi.decode(vm.parseJsonType(json, schema_Transaction), (IModuleCalls.Transaction)); - } - - function deserializeTransaction(string memory json, string memory path) public pure returns (IModuleCalls.Transaction memory) { - return abi.decode(vm.parseJsonType(json, path, schema_Transaction), (IModuleCalls.Transaction)); - } - - function deserializeTransactionArray(string memory json, string memory path) public pure returns (IModuleCalls.Transaction[] memory) { - return abi.decode(vm.parseJsonTypeArray(json, path, schema_Transaction), (IModuleCalls.Transaction[])); - } - - function serialize(MainModuleGasEstimation.SimulateResult memory value) internal pure returns (string memory) { - return vm.serializeJsonType(schema_SimulateResult, abi.encode(value)); - } - - function serialize(MainModuleGasEstimation.SimulateResult memory value, string memory objectKey, string memory valueKey) internal returns (string memory) { - return vm.serializeJsonType(objectKey, valueKey, schema_SimulateResult, abi.encode(value)); - } - - function deserializeSimulateResult(string memory json) public pure returns (MainModuleGasEstimation.SimulateResult memory) { - return abi.decode(vm.parseJsonType(json, schema_SimulateResult), (MainModuleGasEstimation.SimulateResult)); - } - - function deserializeSimulateResult(string memory json, string memory path) public pure returns (MainModuleGasEstimation.SimulateResult memory) { - return abi.decode(vm.parseJsonType(json, path, schema_SimulateResult), (MainModuleGasEstimation.SimulateResult)); - } - - function deserializeSimulateResultArray(string memory json, string memory path) public pure returns (MainModuleGasEstimation.SimulateResult[] memory) { - return abi.decode(vm.parseJsonTypeArray(json, path, schema_SimulateResult), (MainModuleGasEstimation.SimulateResult[])); - } - - function serialize(ModuleCallsTest.ToValAndData memory value) internal pure returns (string memory) { - return vm.serializeJsonType(schema_ToValAndData, abi.encode(value)); - } - - function serialize(ModuleCallsTest.ToValAndData memory value, string memory objectKey, string memory valueKey) internal returns (string memory) { - return vm.serializeJsonType(objectKey, valueKey, schema_ToValAndData, abi.encode(value)); - } - - function deserializeToValAndData(string memory json) public pure returns (ModuleCallsTest.ToValAndData memory) { - return abi.decode(vm.parseJsonType(json, schema_ToValAndData), (ModuleCallsTest.ToValAndData)); - } - - function deserializeToValAndData(string memory json, string memory path) public pure returns (ModuleCallsTest.ToValAndData memory) { - return abi.decode(vm.parseJsonType(json, path, schema_ToValAndData), (ModuleCallsTest.ToValAndData)); - } - - function deserializeToValAndDataArray(string memory json, string memory path) public pure returns (ModuleCallsTest.ToValAndData[] memory) { - return abi.decode(vm.parseJsonTypeArray(json, path, schema_ToValAndData), (ModuleCallsTest.ToValAndData[])); - } - - function serialize(ModuleExtraAuthTest.SetIh memory value) internal pure returns (string memory) { - return vm.serializeJsonType(schema_SetIh, abi.encode(value)); - } - - function serialize(ModuleExtraAuthTest.SetIh memory value, string memory objectKey, string memory valueKey) internal returns (string memory) { - return vm.serializeJsonType(objectKey, valueKey, schema_SetIh, abi.encode(value)); - } - - function deserializeSetIh(string memory json) public pure returns (ModuleExtraAuthTest.SetIh memory) { - return abi.decode(vm.parseJsonType(json, schema_SetIh), (ModuleExtraAuthTest.SetIh)); - } - - function deserializeSetIh(string memory json, string memory path) public pure returns (ModuleExtraAuthTest.SetIh memory) { - return abi.decode(vm.parseJsonType(json, path, schema_SetIh), (ModuleExtraAuthTest.SetIh)); - } - - function deserializeSetIhArray(string memory json, string memory path) public pure returns (ModuleExtraAuthTest.SetIh[] memory) { - return abi.decode(vm.parseJsonTypeArray(json, path, schema_SetIh), (ModuleExtraAuthTest.SetIh[])); - } - - function serialize(SequenceChainedSigImp.MockedSignature memory value) internal pure returns (string memory) { - return vm.serializeJsonType(schema_MockedSignature, abi.encode(value)); - } - - function serialize(SequenceChainedSigImp.MockedSignature memory value, string memory objectKey, string memory valueKey) internal returns (string memory) { - return vm.serializeJsonType(objectKey, valueKey, schema_MockedSignature, abi.encode(value)); - } - - function deserializeMockedSignature(string memory json) public pure returns (SequenceChainedSigImp.MockedSignature memory) { - return abi.decode(vm.parseJsonType(json, schema_MockedSignature), (SequenceChainedSigImp.MockedSignature)); - } - - function deserializeMockedSignature(string memory json, string memory path) public pure returns (SequenceChainedSigImp.MockedSignature memory) { - return abi.decode(vm.parseJsonType(json, path, schema_MockedSignature), (SequenceChainedSigImp.MockedSignature)); - } - - function deserializeMockedSignatureArray(string memory json, string memory path) public pure returns (SequenceChainedSigImp.MockedSignature[] memory) { - return abi.decode(vm.parseJsonTypeArray(json, path, schema_MockedSignature), (SequenceChainedSigImp.MockedSignature[])); - } - - function serialize(SequenceChainedSigTest.HashAndSignature memory value) internal pure returns (string memory) { - return vm.serializeJsonType(schema_HashAndSignature, abi.encode(value)); - } - - function serialize(SequenceChainedSigTest.HashAndSignature memory value, string memory objectKey, string memory valueKey) internal returns (string memory) { - return vm.serializeJsonType(objectKey, valueKey, schema_HashAndSignature, abi.encode(value)); - } - - function deserializeHashAndSignature(string memory json) public pure returns (SequenceChainedSigTest.HashAndSignature memory) { - return abi.decode(vm.parseJsonType(json, schema_HashAndSignature), (SequenceChainedSigTest.HashAndSignature)); - } - - function deserializeHashAndSignature(string memory json, string memory path) public pure returns (SequenceChainedSigTest.HashAndSignature memory) { - return abi.decode(vm.parseJsonType(json, path, schema_HashAndSignature), (SequenceChainedSigTest.HashAndSignature)); - } - - function deserializeHashAndSignatureArray(string memory json, string memory path) public pure returns (SequenceChainedSigTest.HashAndSignature[] memory) { - return abi.decode(vm.parseJsonTypeArray(json, path, schema_HashAndSignature), (SequenceChainedSigTest.HashAndSignature[])); - } - - function serialize(L2CompressorHuffTest.BatchMember memory value) internal pure returns (string memory) { - return vm.serializeJsonType(schema_BatchMember, abi.encode(value)); - } - - function serialize(L2CompressorHuffTest.BatchMember memory value, string memory objectKey, string memory valueKey) internal returns (string memory) { - return vm.serializeJsonType(objectKey, valueKey, schema_BatchMember, abi.encode(value)); - } - - function deserializeBatchMember(string memory json) public pure returns (L2CompressorHuffTest.BatchMember memory) { - return abi.decode(vm.parseJsonType(json, schema_BatchMember), (L2CompressorHuffTest.BatchMember)); - } - - function deserializeBatchMember(string memory json, string memory path) public pure returns (L2CompressorHuffTest.BatchMember memory) { - return abi.decode(vm.parseJsonType(json, path, schema_BatchMember), (L2CompressorHuffTest.BatchMember)); - } - - function deserializeBatchMemberArray(string memory json, string memory path) public pure returns (L2CompressorHuffTest.BatchMember[] memory) { - return abi.decode(vm.parseJsonTypeArray(json, path, schema_BatchMember), (L2CompressorHuffTest.BatchMember[])); - } - - function serialize(TrustTest.MemoryStruct1 memory value) internal pure returns (string memory) { - return vm.serializeJsonType(schema_MemoryStruct1, abi.encode(value)); - } - - function serialize(TrustTest.MemoryStruct1 memory value, string memory objectKey, string memory valueKey) internal returns (string memory) { - return vm.serializeJsonType(objectKey, valueKey, schema_MemoryStruct1, abi.encode(value)); - } - - function deserializeMemoryStruct1(string memory json) public pure returns (TrustTest.MemoryStruct1 memory) { - return abi.decode(vm.parseJsonType(json, schema_MemoryStruct1), (TrustTest.MemoryStruct1)); - } - - function deserializeMemoryStruct1(string memory json, string memory path) public pure returns (TrustTest.MemoryStruct1 memory) { - return abi.decode(vm.parseJsonType(json, path, schema_MemoryStruct1), (TrustTest.MemoryStruct1)); - } - - function deserializeMemoryStruct1Array(string memory json, string memory path) public pure returns (TrustTest.MemoryStruct1[] memory) { - return abi.decode(vm.parseJsonTypeArray(json, path, schema_MemoryStruct1), (TrustTest.MemoryStruct1[])); - } -} diff --git a/packages/wallet-contracts/utils/benchmarker.ts b/packages/wallet-contracts/utils/benchmarker.ts deleted file mode 100644 index 5c8b586159..0000000000 --- a/packages/wallet-contracts/utils/benchmarker.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { spawn, Worker, Pool } from 'threads' -import { BenchWorker } from './workers/bench-worker' - -import { task } from 'hardhat/config' -import { boolean, int } from 'hardhat/internal/core/params/argumentTypes' -import fs from 'fs' - -class BufferSort { - buffer: { i: number; val: string }[] = [] - next: number = 0 - - constructor(private onValue: (val: string) => void) {} - - feed = (i: number, val: string) => { - this.buffer.push({ i, val }) - this.buffer = this.buffer.sort((a, b) => a.i - b.i) - - while (this.buffer.length > 0 && this.buffer[0].i === this.next) { - this.onValue(this.buffer[0].val) - this.buffer.shift() - this.next++ - } - } -} - -async function main(args: { - csv: string - topology: string - notrim: boolean - runs: number - minsign: number - maxsign: number - minidle: number - maxidle: number - cpus: number -}) { - let { csv, topology, notrim, runs, minsign, maxsign, minidle, maxidle, cpus } = args - - const disableTrim = notrim == true - console.log(`Doing benchmark with params:`) - console.log(` csv: ${csv}`) - console.log(` topology: ${topology}`) - console.log(` disableTrim: ${disableTrim}`) - console.log(` runs: ${runs}`) - console.log(` minSign: ${minsign}`) - console.log(` maxSign: ${maxsign}`) - console.log(` minIdle: ${minidle}`) - console.log(` maxIdle: ${maxidle}`) - console.log(` cpus: ${cpus}`) - - if (minidle > maxidle) throw new Error('minIdle must be <= maxIdle') - if (minsign > maxsign) throw new Error('minSign must be <= maxSign') - - const pool = Pool(() => spawn(new Worker('./workers/bench-worker')), { size: cpus }) - - const file = fs.createWriteStream(csv, { flags: 'a' }) - const fileSorter = new BufferSort((val: string) => file.write(val)) - const consoleSorter = new BufferSort((val: string) => console.log(val)) - - // Create CSV writter - let batched = 0 - file.write('topology,disableTrim,signing,idle,runs,min,max,avg,cmin,cmax,cavg\n') - for (let i = minsign; i < maxsign; i++) { - for (let j = minidle; j < maxidle - 1; j++) { - const absi = (i - minsign) * maxidle + j - - if (batched > cpus * 250) { - await pool.settled() - batched = 0 - } - batched++ - - pool.queue(async worker => { - await worker.setup(i, j, runs, topology as any, disableTrim) - const r = await worker.run() - - fileSorter.feed( - absi, - `${topology},${disableTrim},${r.signing},${r.idle},${runs},${r.min},${r.max},${r.avg},${r.data.min},${r.data.max},${r.data.avg}\n` - ) - consoleSorter.feed( - absi, - `${absi}: ${topology} (notrim ${disableTrim}): ${r.signing}/${r.signing + r.idle} (${runs}): min: ${r.min} max: ${r.max} avg: ${r.avg} cmin: ${r.data.min} cmax: ${r.data.max} cavg: ${r.data.avg}` - ) - }) - } - } - - await pool.completed() - await pool.terminate() - file.close() -} - -task('benchmark', 'Runs sequence benchmarks') - .addParam('csv', 'The CSV file to write to', `benchmark-${Math.floor(Date.now())}.csv`) - .addParam('topology', 'The wallet topology to use', 'legacy') - .addParam('runs', 'The number of runs to perform', 10, int) - .addParam('minsign', 'The start of the range of signature members who are going to sign', 1, int) - .addParam('maxsign', 'The end of the range of signature members who are going to sign', 255, int) - .addParam('minidle', 'The start of the range of idle members on the config', 0, int) - .addParam('maxidle', 'The end of the range of idle members on the config', 255, int) - .addParam('cpus', 'The number of CPUs to use', 1, int) - .addParam('notrim', 'Disable trimming of redudant signature parts', false, boolean) - .setAction(async args => { - return main(args) - }) diff --git a/packages/wallet-contracts/utils/config-loader.ts b/packages/wallet-contracts/utils/config-loader.ts deleted file mode 100644 index 2714b430db..0000000000 --- a/packages/wallet-contracts/utils/config-loader.ts +++ /dev/null @@ -1,159 +0,0 @@ -import * as dotenv from 'dotenv' -import * as path from 'path' -import { HttpNetworkConfig } from 'hardhat/types' -import { ethers } from 'ethers' - -type EthereumNetworksTypes = - | 'mainnet' - | 'ropsten' - | 'kovan' - | 'goerli' - | 'polygon' - | 'polygon-zkevm' - | 'mumbai' - | 'arbitrum' - | 'arbitrum-goerli' - | 'arbitrum-nova' - | 'optimism' - | 'bnb' - | 'bnb-testnet' - | 'gnosis' - | 'avalanche' - | 'avalanche-fuji' - -export const getEnvConfig = (env: string) => { - const envFile = path.resolve(__dirname, `../config/${env}.env`) - const envLoad = dotenv.config({ path: envFile }) - - if (envLoad.error) { - return { ETH_MNEMONIC: 'client vendor advice erosion deny cute tree fatal fuel bless simple speed' } - } - - return envLoad.parsed || {} -} - -export const networkGasMultiplier = (network: EthereumNetworksTypes): number => { - switch (network) { - default: - return 1 - } -} - -export const networkRpcUrl = (network: EthereumNetworksTypes): string => { - const config = getEnvConfig('PROD') - - switch (network) { - case 'mumbai': - return 'https://endpoints.omniatech.io/v1/matic/mumbai/public' - - case 'polygon': - return 'https://nodes.sequence.app/polygon' - - case 'polygon-zkevm': - return 'https://zkevm-rpc.com' - - case 'arbitrum': - return 'https://endpoints.omniatech.io/v1/arbitrum/one/public' - - case 'arbitrum-goerli': - return 'https://goerli-rollup.arbitrum.io/rpc' - - case 'arbitrum-nova': - return 'https://nova.arbitrum.io/rpc' - - case 'optimism': - return 'https://endpoints.omniatech.io/v1/op/mainnet/public' - - case 'bnb': - return 'https://bsc-dataseed3.binance.org' - - case 'bnb-testnet': - return 'https://endpoints.omniatech.io/v1/bsc/testnet/public' - - case 'gnosis': - return 'https://gnosis-mainnet.public.blastapi.io' - - case 'avalanche': - return 'https://endpoints.omniatech.io/v1/avax/mainnet/public' - - case 'avalanche-fuji': - return 'https://endpoints.omniatech.io/v1/avax/fuji/public' - - default: - return `https://${network}.infura.io/v3/${config['INFURA_API_KEY']}` - } -} - -export const networkChainId = (network: EthereumNetworksTypes): number => { - switch (network) { - case 'mainnet': - return 1 - - case 'ropsten': - return 3 - - case 'goerli': - return 5 - - case 'kovan': - return 42 - - case 'mumbai': - return 80001 - - case 'polygon': - return 137 - - case 'polygon-zkevm': - return 1101 - - case 'arbitrum': - return 42161 - - case 'arbitrum-goerli': - return 421613 - - case 'arbitrum-nova': - return 42170 - - case 'optimism': - return 10 - - case 'bnb': - return 56 - - case 'bnb-testnet': - return 97 - - case 'gnosis': - return 100 - - case 'avalanche': - return 43114 - - case 'avalanche-fuji': - return 43113 - } -} - -export const networkConfig = (network: EthereumNetworksTypes): HttpNetworkConfig & { etherscan?: string } => { - const prodConfig = getEnvConfig('PROD') - const networkConfig = getEnvConfig(network) - return { - url: networkRpcUrl(network), - chainId: networkChainId(network), - accounts: { - mnemonic: networkConfig['ETH_MNEMONIC'] ?? prodConfig['ETH_MNEMONIC'], - initialIndex: 0, - count: 10, - path: `m/44'/60'/0'/0`, - passphrase: '' - }, - gas: 'auto', - gasPrice: 'auto', - gasMultiplier: networkGasMultiplier(network), - timeout: 20000, - httpHeaders: {}, - etherscan: networkConfig['ETHERSCAN'] ?? prodConfig['ETHERSCAN'] - } -} diff --git a/packages/wallet-contracts/utils/deploy-contracts.ts b/packages/wallet-contracts/utils/deploy-contracts.ts deleted file mode 100644 index 8249398cd7..0000000000 --- a/packages/wallet-contracts/utils/deploy-contracts.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { network, run, tenderly, ethers as hethers } from 'hardhat' -import ora from 'ora' - -import { - MainModule__factory, - SequenceUtils__factory, - MainModuleUpgradable__factory, - GuestModule__factory, - Factory__factory, - TrustFactory__factory -} from '../gen/typechain' - -import { ContractDeployTransaction, ContractFactory, Signer, ethers } from 'ethers' -import fs from 'fs' - -const provider = hethers.provider - -const singletonFactoryFactory = { - address: '0xce0042B868300000d44A59004Da54A005ffdcf9f', - abi: [ - { - constant: false, - inputs: [ - { - internalType: 'bytes', - type: 'bytes' - }, - { - internalType: 'bytes32', - type: 'bytes32' - } - ], - name: 'deploy', - outputs: [ - { - internalType: 'address payable', - type: 'address' - } - ], - payable: false, - stateMutability: 'nonpayable', - type: 'function' - } - ] -} -const singletonFactoryDeployTx = - '0xf9016c8085174876e8008303c4d88080b90154608060405234801561001057600080fd5b50610134806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80634af63f0214602d575b600080fd5b60cf60048036036040811015604157600080fd5b810190602081018135640100000000811115605b57600080fd5b820183602082011115606c57600080fd5b80359060200191846001830284011164010000000083111715608d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925060eb915050565b604080516001600160a01b039092168252519081900360200190f35b6000818351602085016000f5939250505056fea26469706673582212206b44f8a82cb6b156bfcc3dc6aadd6df4eefd204bc928a4397fd15dacf6d5320564736f6c634300060200331b83247000822470' -const singletonFactoryDeployer = '0xBb6e024b9cFFACB947A71991E386681B1Cd1477D' - -const prompt = ora() -const attempVerify = async ( - name: string, - _: new () => T, - address: string, - ...args: Parameters -) => { - try { - await run('verify:verify', { - address: address, - constructorArguments: args - }) - } catch {} - - try { - await tenderly.verify({ - name: name, - address: address - }) - } catch {} -} - -const buildNetworkJson = (...contracts: { name: string; address: string }[]) => { - return contracts.map(c => ({ - contractName: c.name, - address: c.address - })) -} - -const deploy = async ( - name: string, - contract: new (...args: [signer?: Signer]) => ContractFactory, - ...args: any[] -): Promise => { - const signer = await provider.getSigner(0) - const singletonFactory = new ethers.Contract(singletonFactoryFactory.address, singletonFactoryFactory.abi, signer) - - if (ethers.getBytes(await provider.getCode(await singletonFactory.getAddress())).length <= 2) { - // Deploy singleton deployer - const o = ora().start(`Deploying singleton factory`) - const deployerBal = 24700000000000000n - if ((await provider.getBalance(singletonFactoryDeployer)) < deployerBal) { - o.info('Funding singleton factory deployer') - const tx = await signer.sendTransaction({ - to: singletonFactoryDeployer, - value: deployerBal - }) - await tx.wait() - o.info('Funded. Deploying singleton factory') - } - const tx = await provider.broadcastTransaction(singletonFactoryDeployTx) - await tx.wait() - o.succeed(`Deployed singleton factory`) - } - - const o = ora().start(`Deploying ${name}`) - const c = new contract(signer) - const { data } = await c.getDeployTransaction(...args) - - if (!data) { - throw new Error(`no data for ${name}`) - } - - const maxGasLimit = await provider.getBlock('latest').then(b => (b!.gasLimit * 4n) / 10n) - - const address = ethers.getAddress( - ethers.dataSlice( - ethers.keccak256( - ethers.solidityPacked( - ['bytes1', 'address', 'bytes32', 'bytes32'], - ['0xff', await singletonFactory.getAddress(), ethers.ZeroHash, ethers.keccak256(data)] - ) - ), - 12 - ) - ) - - if (ethers.getBytes(await provider.getCode(address)).length > 0) { - o.succeed(`Skipping ${name} because it has been deployed at ${address}`) - return c.attach(address) - } - - await singletonFactory.deploy(data, ethers.ZeroHash, { gasLimit: maxGasLimit }).then(tx => tx.wait()) - - if (ethers.getBytes(await provider.getCode(address)).length === 0) { - throw new Error(`failed to deploy ${name}`) - } - - o.succeed(`Deployed ${name} at ${address}`) - - return c.attach(address) -} - -const main = async () => { - const signer = await provider.getSigner(0) - const address = await signer.getAddress() - prompt.info(`Network Name: ${network.name}`) - prompt.info(`Local Deployer Address: ${address}`) - prompt.info(`Local Deployer Balance: ${await provider.getBalance(address)}`) - - const walletFactory = await deploy('Factory', Factory__factory) - const mainModuleUpgradeable = await deploy('MainModuleUpgradable', MainModuleUpgradable__factory) - const mainModule = await deploy( - 'MainModule', - MainModule__factory, - await walletFactory.getAddress(), - await mainModuleUpgradeable.getAddress() - ) - const guestModule = await deploy('GuestModule', GuestModule__factory) - const sequenceUtils = await deploy('SequenceUtils', SequenceUtils__factory) - const trustFactory = await deploy('TrustFactory', TrustFactory__factory) - - prompt.start(`writing deployment information to ${network.name}.json`) - fs.writeFileSync( - `./networks/${network.name}.json`, - JSON.stringify( - buildNetworkJson( - { name: 'WalletFactory', address: await walletFactory.getAddress() }, - { name: 'MainModule', address: await mainModule.getAddress() }, - { name: 'MainModuleUpgradable', address: await mainModuleUpgradeable.getAddress() }, - { name: 'GuestModule', address: await guestModule.getAddress() }, - { name: 'SequenceUtils', address: await sequenceUtils.getAddress() }, - { name: 'TrustFactory', address: await trustFactory.getAddress() } - ), - null, - 2 - ) - ) - prompt.succeed() - - prompt.start(`verifying contracts`) - - await attempVerify('Factory', Factory__factory, await walletFactory.getAddress()) - await attempVerify('MainModuleUpgradable', MainModuleUpgradable__factory, await mainModuleUpgradeable.getAddress()) - await attempVerify( - 'MainModule', - MainModule__factory, - await mainModule.getAddress(), - await walletFactory.getAddress(), - await mainModuleUpgradeable.getAddress() - ) - await attempVerify('GuestModule', GuestModule__factory, await guestModule.getAddress()) - await attempVerify('SequenceUtils', SequenceUtils__factory, await sequenceUtils.getAddress()) - await attempVerify('TrustFactory', TrustFactory__factory, await trustFactory.getAddress()) - - prompt.succeed() -} - -// We recommend this pattern to be able to use async/await everywhere -// and properly handle errors. -main() - .then(() => { - process.exit(0) - }) - .catch(error => { - console.error(error) - process.exit(1) - }) diff --git a/packages/wallet-contracts/utils/workers/bench-worker.ts b/packages/wallet-contracts/utils/workers/bench-worker.ts deleted file mode 100644 index fc8bd1446c..0000000000 --- a/packages/wallet-contracts/utils/workers/bench-worker.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { deploySequenceContext, SequenceContext } from '../../test/utils/contracts' -import { expose } from 'threads/worker' -import { SequenceWallet } from '../../test/utils/wallet' -import { ethers } from 'ethers' -import { legacyTopology, merkleTopology } from '../../test/utils/sequence' - -let context: SequenceContext -let wallet: SequenceWallet - -let d_runs: number -let d_idle: number -let d_signing: number -let d_disableTrim: boolean - -let topologyConverter: any - -let prevsnapshot: any - -function report2(values: ethers.BigNumberish[]) { - const bns = values.map(v => BigInt(v)) - - const min = bns.reduce((a, b) => (a < b ? a : b)) - const max = bns.reduce((a, b) => (a > b ? a : b)) - const avg = bns.reduce((p, n) => (p + n) / BigInt(values.length)) - - return { min, max, avg } -} - -const worker = { - async setup(signing: number, idle: number, runs: number, topology: 'legacy' | 'merkle', disableTrim: boolean) { - if (!context) { - context = await deploySequenceContext() - } - - d_runs = runs - d_idle = idle - d_signing = signing - d_disableTrim = disableTrim - - if (topology !== 'legacy' && topology !== 'merkle') throw new Error('Invalid topology') - topologyConverter = topology === 'legacy' ? legacyTopology : merkleTopology - }, - async run() { - const results: ethers.BigNumberish[] = [] - const calldatas: ethers.BigNumberish[] = [] - - for (let i = 0; i < d_runs; i++) { - wallet = SequenceWallet.basicWallet(context, { - signing: d_signing, - idle: d_idle, - topologyConverter, - encodingOptions: { disableTrim: d_disableTrim } - }) - await wallet.deploy() - - const signature = await wallet.signTransactions([{}]) - const tx = await wallet.relayTransactions([{}], signature) - const receipt = await tx.wait() - - if (!receipt) { - throw new Error('No receipt') - } - - results.push(receipt.gasUsed) - calldatas.push(ethers.getBytes(signature).length) - } - - const report = report2(results) - const reportCalldata = report2(calldatas) - - return { - min: Number(report.min), - max: Number(report.max), - avg: Number(report.avg), - data: { - min: Number(reportCalldata.min), - max: Number(reportCalldata.max), - avg: Number(reportCalldata.avg) - }, - idle: d_idle, - signing: d_signing, - runs: d_runs - } - } -} - -export type BenchWorker = typeof worker - -expose(worker)