From 24b8500489f828a10b3d1e6fb4fea7b67b91ae2d Mon Sep 17 00:00:00 2001 From: sudo rm -rf --no-preserve-root / Date: Thu, 14 Dec 2023 23:46:12 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20Add=20Production-Ready,=20Pre-si?= =?UTF-8?q?gned=20Transactions=20(#51)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Pascal Marco Caversaccio --- .github/ISSUE_TEMPLATE/deployment_request.yml | 4 +- .github/workflows/checks.yml | 4 +- .github/workflows/test-createx.yml | 2 +- .gitignore | 5 - README.md | 89 +- .../c6d951136e35b73916c5666d481ae5c8.json | 1 + artifacts/src/CreateX.sol/CreateX.dbg.json | 4 + artifacts/src/CreateX.sol/CreateX.json | 903 ++++++++++++++++++ artifacts/src/ICreateX.sol/ICreateX.dbg.json | 4 + artifacts/src/ICreateX.sol/ICreateX.json | 903 ++++++++++++++++++ deployments/deployments.json | 7 + foundry.toml | 3 +- hardhat.config.ts | 3 +- lib/forge-std | 2 +- lib/openzeppelin-contracts | 2 +- lib/solady | 2 +- package.json | 143 +-- pnpm-lock.yaml | 94 +- .../contract_creation_bytecode_createx.json | 1 + scripts/deploy.ts | 113 ++- scripts/presign.ts | 40 +- ...alised_transaction_gaslimit_25000000_.json | 1 + ...ialised_transaction_gaslimit_3000000_.json | 1 + ...alised_transaction_gaslimit_45000000_.json | 1 + verification/CreateX.json | 31 + 25 files changed, 2190 insertions(+), 173 deletions(-) create mode 100644 artifacts/build-info/c6d951136e35b73916c5666d481ae5c8.json create mode 100644 artifacts/src/CreateX.sol/CreateX.dbg.json create mode 100644 artifacts/src/CreateX.sol/CreateX.json create mode 100644 artifacts/src/ICreateX.sol/ICreateX.dbg.json create mode 100644 artifacts/src/ICreateX.sol/ICreateX.json create mode 100644 deployments/deployments.json create mode 100644 scripts/contract_creation_bytecode_createx.json create mode 100644 scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_25000000_.json create mode 100644 scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_3000000_.json create mode 100644 scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_45000000_.json create mode 100644 verification/CreateX.json diff --git a/.github/ISSUE_TEMPLATE/deployment_request.yml b/.github/ISSUE_TEMPLATE/deployment_request.yml index eeccf024..f277bc1e 100644 --- a/.github/ISSUE_TEMPLATE/deployment_request.yml +++ b/.github/ISSUE_TEMPLATE/deployment_request.yml @@ -51,8 +51,8 @@ body: - attributes: label: Deployment Funds description: | - Have you sent the deployment funds to the deployer account (TBD) on the target chain? - Doing so is greatly appreciated and will reduce time to deployment! + Have you sent the deployment funds to the deployer account (`0xeD456e05CaAb11d66C4c797dD6c1D6f9A7F352b5`) on the target chain? + Doing so is greatly appreciated and will reduce the time to deployment! options: - "Yes" - "No" diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index cdc3439f..e5b16e1a 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -14,7 +14,7 @@ jobs: os: - ubuntu-latest node_version: - - 18 + - 20 steps: - name: Checkout @@ -92,4 +92,4 @@ jobs: - name: Validate URLs run: | awesome_bot ./*.md src/*.sol test/**/*.sol test/public/**/*.sol --allow-dupe --request-delay 0.4 \ - --white-list "https://github.com/pcaversaccio/createx/issues/new?assignees=pcaversaccio&labels=new+deployment+%E2%9E%95&projects=&template=deployment_request.yml&title=%5BNew-Deployment-Request%5D%3A+",https://twitter.com/PaulRBerg/status/1682346315806539776 + --white-list "https://github.com/pcaversaccio/createx/issues/new?assignees=pcaversaccio&labels=new+deployment+%E2%9E%95&projects=&template=deployment_request.yml&title=%5BNew-Deployment-Request%5D%3A+",https://twitter.com/PaulRBerg/status/1682346315806539776,https://www.createx.rocks,https://foundry.paradigm.xyz,https://github.com/pcaversaccio/createx.git diff --git a/.github/workflows/test-createx.yml b/.github/workflows/test-createx.yml index 00103396..5976deb4 100644 --- a/.github/workflows/test-createx.yml +++ b/.github/workflows/test-createx.yml @@ -17,7 +17,7 @@ jobs: os: - ubuntu-latest node_version: - - 18 + - 20 go_version: - 1.21.3 diff --git a/.gitignore b/.gitignore index 0a8ab51d..59bb3c2e 100644 --- a/.gitignore +++ b/.gitignore @@ -51,7 +51,6 @@ yarn-error.log* # Hardhat files cache -artifacts .deps # TypeScript bindings output directory @@ -67,7 +66,3 @@ forge-artifacts # Compiler files cache out - -# Presigning and deployment directories -presigned-createx-deployment-transaction -broadcasted-createx-deployment-transaction diff --git a/README.md b/README.md index 1a28602e..3449d091 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ Factory smart contract to make easier and safer usage of the [`CREATE`](https:// - [Test Coverage](#test-coverage) - [ABI (Application Binary Interface)](#abi-application-binary-interface) - [New Deployment(s)](#new-deployments) + - [`ethers.js`](#ethersjs) + - [`cast`](#cast) - [Contract Verification](#contract-verification) - [`CreateX` Deployments](#createx-deployments) - [🙏🏼 Acknowledgement](#-acknowledgement) @@ -2072,33 +2074,98 @@ interface ICreateX { ## New Deployment(s) -> [!CAUTION] -> The address `0x0000000000000000000000000000000000000000` is a simple placeholder for now. Do not send any funds there! - We offer two options for deploying [`CreateX`](./src/CreateX.sol) to your desired chain: 1. Deploy it yourself by using one of the pre-signed transactions. Details can be found in the subsequent paragraph. -2. Request a deployment by opening an [issue](https://github.com/pcaversaccio/createx/issues/new?assignees=pcaversaccio&labels=new+deployment+%E2%9E%95&projects=&template=deployment_request.yml&title=%5BNew-Deployment-Request%5D%3A+). You can significantly reduce the time to deployment by sending funds to cover the deployment cost to the deployer account: [`0x0000000000000000000000000000000000000000`](https://etherscan.io/address/0x0000000000000000000000000000000000000000). +2. Request a deployment by opening an [issue](https://github.com/pcaversaccio/createx/issues/new?assignees=pcaversaccio&labels=new+deployment+%E2%9E%95&projects=&template=deployment_request.yml&title=%5BNew-Deployment-Request%5D%3A+). You can significantly reduce the time to deployment by sending funds to cover the deployment cost (a reliable amount with a small tip 😏 would be ~0.3 ETH) to the deployer account: `0xeD456e05CaAb11d66C4c797dD6c1D6f9A7F352b5`. + +> [!CAUTION] +> Prior to using a pre-signed transaction, you **MUST** ensure that the gas metering of the target chain is **EQUIVALENT** to that of Ethereum's EVM version! +> +> The _default_ pre-signed transaction has a gas limit of 3,000,000 gas, so if the target chain requires more than 3 million gas to deploy, the contract creation transaction will revert and we will not be able to deploy [`CreateX`](./src/CreateX.sol) to the address `0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed`. In this case, the only way to get [`CreateX`](./src/CreateX.sol) deployed at the expected address is for the chain to store the contract there as a predeploy. +> +> If you are not sure how to validate this, you can either use the [`eth_estimateGas`](https://ethereum.github.io/execution-apis/api-documentation/) JSON-RPC method or simply deploy the [`CreateX`](./src/CreateX.sol) contract from another account and see how much gas is needed for the deployment. Standard EVM chains should require exactly 2,580,902 gas to deploy [`CreateX`](./src/CreateX.sol). + +We repeat: PLEASE DO NOT BROADCAST ANY PRE-SIGNED TRANSACTION WITHOUT LOCAL TESTING! Also, before deploying, you MUST send at least 0.3 ETH to the deployer address `0xeD456e05CaAb11d66C4c797dD6c1D6f9A7F352b5`. We offer three pre-signed, pre-[`EIP-155`](https://eips.ethereum.org/EIPS/eip-155) transactions with the same gas price of 100 gwei, but different `gasLimit` levels: -TBD (section on pre-signed transactions; we will offer multiple pre-signed transactions with different `gasLimit` levels; will be added after the feedback phase) +- _Default Case:_ `gasLimit = 3_000_000`; [`signed_serialised_transaction_gaslimit_3000000_.json`](./scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_3000000_.json), +- _Medium Case:_ `gasLimit = 25_000_000`; [`signed_serialised_transaction_gaslimit_25000000_.json`](./scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_25000000_.json), +- _Heavy Case:_ `gasLimit = 45_000_000`; [`signed_serialised_transaction_gaslimit_45000000_.json`](./scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_45000000_.json). + +You can broadcast the transaction using either [`ethers.js`](https://docs.ethers.org/v6/) or [`cast`](https://book.getfoundry.sh/reference/cli/cast): + +#### [`ethers.js`](https://docs.ethers.org/v6/) + +It is recommended to install [`pnpm`](https://pnpm.io) through the `npm` package manager, which comes bundled with [Node.js](https://nodejs.org/en) when you install it on your system. It is recommended to use a Node.js version `>= 20.0.0`. + +Once you have `npm` installed, you can run the following both to install and upgrade `pnpm`: + +```console +npm install -g pnpm +``` + +After having installed `pnpm`, simply run: + +```console +git clone https://github.com/pcaversaccio/createx.git +cd createx +pnpm install +``` + +Now configure your target chain in the [`hardhat.config.ts`](./hardhat.config.ts) file with the `networks` and `etherscan` properties, or use one of the preconfigured network configurations. After you have locally ensured that the `gasLimit` of 3 million works on your target chain, you can invoke: + +```console +npx hardhat run --no-compile --network scripts/deploy.ts +``` + +The [`deploy.ts`](./scripts/deploy.ts) script ensures that [`CreateX`](./src/CreateX.sol) is automatically verified if you have configured the `etherscan` property accordingly. The current script broadcasts the _default_ pre-signed transaction, which has a gas limit of 3,000,000 gas. If you want to use a different pre-signed transaction, you must change the import of the pre-signed transaction in the [`deploy.ts`](./scripts/deploy.ts) script. + +#### [`cast`](https://book.getfoundry.sh/reference/cli/cast) + +It is recommended to install [Foundry](https://github.com/foundry-rs/foundry) via: + +```console +curl -L https://foundry.paradigm.xyz | bash +foundryup +``` + +To broadcast a pre-signed transaction, you can invoke: + +```console +# $TX is the pre-signed transaction. +# $RPC_URL is the RPC URL of the target chain to which you want to deploy. +cast publish $TX --rpc-url $RPC_URL +``` + +You must verify the [`CreateX`](./src/CreateX.sol) contract separately, as specified in the next section. + +> [!IMPORTANT] +> After deployment, please open a pull request that updates the [`deployments.json`](./deployments/deployments.json) file and the [`CreateX` Deployments](#createx-deployments) section with the new deployment so that other users can easily know that it has been deployed. ### Contract Verification To verify a deployed [`CreateX`](./src/CreateX.sol) contract on a block explorer, use the following parameters: -- TBD (will be added after the feedback phase) +- _Verification Method / Compiler Type:_ `Solidity (Standard JSON Input)`, +- _Compiler Version:_ `v0.8.23+commit.f704f362`, +- _Open Source License Type:_ `GNU Affero General Public License (GNU AGPLv3)`, +- _Standard Input JSON File:_ Upload the file [here](./verification/CreateX.json), +- _Constructor Arguments ABI-Encoded:_ Leave empty. + +> [!IMPORTANT] +> We removed the metadata hash `bytecodeHash` from the bytecode in order to guarantee a deterministic compilation across all operating systems. This implies that all [sourcify.eth](https://sourcify.dev) verifications have partial verification, as opposed to [perfect verification](https://docs.sourcify.dev/blog/verify-contracts-perfectly/), which requires a matching metadata hash. ## [`CreateX`](./src/CreateX.sol) Deployments -> [!CAUTION] -> The address `0x0000000000000000000000000000000000000000` is a simple placeholder for now. Do not send any funds there! +> [!TIP] +> The complete list with additional chain information per deployment can be retrieved via [createx.rocks](https://www.createx.rocks). - EVM-Based Production Networks: - - Ethereum: [`0x0000000000000000000000000000000000000000`](https://etherscan.io/address/0x0000000000000000000000000000000000000000) + - Ethereum: [`0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed`](https://etherscan.io/address/0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed) - Ethereum Test Networks: - - Goerli: [`0x0000000000000000000000000000000000000000`](https://goerli.etherscan.io/address/0x0000000000000000000000000000000000000000) + - Sepolia: [`0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed`](https://sepolia.etherscan.io/address/0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed) - Additional EVM-Based Test Networks: - - Optimism Testnet (Goerli): [`0x0000000000000000000000000000000000000000`](https://goerli-optimism.etherscan.io/address/0x0000000000000000000000000000000000000000) + - Binance Smart Chain Testnet: [`0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed`](https://testnet.bscscan.com/address/0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed) ## 🙏🏼 Acknowledgement diff --git a/artifacts/build-info/c6d951136e35b73916c5666d481ae5c8.json b/artifacts/build-info/c6d951136e35b73916c5666d481ae5c8.json new file mode 100644 index 00000000..49429259 --- /dev/null +++ b/artifacts/build-info/c6d951136e35b73916c5666d481ae5c8.json @@ -0,0 +1 @@ +{"id":"c6d951136e35b73916c5666d481ae5c8","_format":"hh-sol-build-info-1","solcVersion":"0.8.23","solcLongVersion":"0.8.23+commit.f704f362","input":{"language":"Solidity","sources":{"src/CreateX.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity 0.8.23;\n\n/**\n * @title CreateX Factory Smart Contract\n * @author pcaversaccio (https://web.archive.org/web/20230921103111/https://pcaversaccio.com/)\n * @custom:coauthor Matt Solomon (https://web.archive.org/web/20230921103335/https://mattsolomon.dev/)\n * @notice Factory smart contract to make easier and safer usage of the\n * `CREATE` (https://web.archive.org/web/20230921103540/https://www.evm.codes/#f0?fork=shanghai) and `CREATE2`\n * (https://web.archive.org/web/20230921103540/https://www.evm.codes/#f5?fork=shanghai) EVM opcodes as well as of\n * `CREATE3`-based (https://web.archive.org/web/20230921103920/https://github.com/ethereum/EIPs/pull/3171) contract creations.\n * @dev To simplify testing of non-public variables and functions, we use the `internal`\n * function visibility specifier `internal` for all variables and functions, even though\n * they could technically be `private` since we do not expect anyone to inherit from\n * the `CreateX` contract.\n * @custom:security-contact See https://web.archive.org/web/20230921105029/https://raw.githubusercontent.com/pcaversaccio/createx/main/SECURITY.md.\n */\ncontract CreateX {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* IMMUTABLES */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Caches the contract address at construction, to be used for the custom errors.\n */\n address internal immutable _SELF = address(this);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* TYPES */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Struct for the `payable` amounts in a deploy-and-initialise call.\n */\n struct Values {\n uint256 constructorAmount;\n uint256 initCallAmount;\n }\n\n /**\n * @dev Enum for the selection of a permissioned deploy protection.\n */\n enum SenderBytes {\n MsgSender,\n ZeroAddress,\n Random\n }\n\n /**\n * @dev Enum for the selection of a cross-chain redeploy protection.\n */\n enum RedeployProtectionFlag {\n True,\n False,\n Unspecified\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* EVENTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Event that is emitted when a contract is successfully created.\n * @param newContract The address of the new contract.\n * @param salt The 32-byte random value used to create the contract address.\n */\n event ContractCreation(address indexed newContract, bytes32 indexed salt);\n\n /**\n * @dev Event that is emitted when a contract is successfully created.\n * @param newContract The address of the new contract.\n */\n event ContractCreation(address indexed newContract);\n\n /**\n * @dev Event that is emitted when a `CREATE3` proxy contract is successfully created.\n * @param newContract The address of the new proxy contract.\n * @param salt The 32-byte random value used to create the proxy address.\n */\n event Create3ProxyContractCreation(address indexed newContract, bytes32 indexed salt);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Error that occurs when the contract creation failed.\n * @param emitter The contract that emits the error.\n */\n error FailedContractCreation(address emitter);\n\n /**\n * @dev Error that occurs when the contract initialisation call failed.\n * @param emitter The contract that emits the error.\n * @param revertData The data returned by the failed initialisation call.\n */\n error FailedContractInitialisation(address emitter, bytes revertData);\n\n /**\n * @dev Error that occurs when the salt value is invalid.\n * @param emitter The contract that emits the error.\n */\n error InvalidSalt(address emitter);\n\n /**\n * @dev Error that occurs when the nonce value is invalid.\n * @param emitter The contract that emits the error.\n */\n error InvalidNonceValue(address emitter);\n\n /**\n * @dev Error that occurs when transferring ether has failed.\n * @param emitter The contract that emits the error.\n * @param revertData The data returned by the failed ether transfer.\n */\n error FailedEtherTransfer(address emitter, bytes revertData);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Deploys a new contract via calling the `CREATE` opcode and using the creation\n * bytecode `initCode` and `msg.value` as inputs. In order to save deployment costs,\n * we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero,\n * `initCode` must have a `payable` constructor.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n */\n function deployCreate(bytes memory initCode) public payable returns (address newContract) {\n assembly (\"memory-safe\") {\n newContract := create(callvalue(), add(initCode, 0x20), mload(initCode))\n }\n _requireSuccessfulContractCreation({newContract: newContract});\n emit ContractCreation({newContract: newContract});\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE` opcode and using the\n * creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n * amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. In order to\n * save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount`\n * is non-zero, `initCode` must have a `payable` constructor.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreateAndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n assembly (\"memory-safe\") {\n newContract := create(mload(values), add(initCode, 0x20), mload(initCode))\n }\n _requireSuccessfulContractCreation({newContract: newContract});\n emit ContractCreation({newContract: newContract});\n\n (bool success, bytes memory returnData) = newContract.call{value: values.initCallAmount}(data);\n if (!success) {\n revert FailedContractInitialisation({emitter: _SELF, revertData: returnData});\n }\n\n if (_SELF.balance != 0) {\n // Any wei amount previously forced into this contract (e.g. by using the `SELFDESTRUCT`\n // opcode) will be part of the refund transaction.\n (success, returnData) = refundAddress.call{value: _SELF.balance}(\"\");\n if (!success) {\n revert FailedEtherTransfer({emitter: _SELF, revertData: returnData});\n }\n }\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE` opcode and using the\n * creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n * amounts `values`, and `msg.value` as inputs. In order to save deployment costs, we do not\n * sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n * `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreateAndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n newContract = deployCreateAndInit({initCode: initCode, data: data, values: values, refundAddress: msg.sender});\n }\n\n /**\n * @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE` opcode, and initialises\n * the implementation contract using the implementation address `implementation`, the initialisation\n * code `data`, and `msg.value` as inputs. Note that if `msg.value` is non-zero, the initialiser\n * function called via `data` must be `payable`.\n * @param implementation The 20-byte implementation contract address.\n * @param data The initialisation code that is passed to the deployed proxy contract.\n * @return proxy The 20-byte address where the clone was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreateClone(address implementation, bytes memory data) public payable returns (address proxy) {\n bytes20 implementationInBytes = bytes20(implementation);\n assembly (\"memory-safe\") {\n let clone := mload(0x40)\n mstore(\n clone,\n hex\"3d_60_2d_80_60_0a_3d_39_81_f3_36_3d_3d_37_3d_3d_3d_36_3d_73_00_00_00_00_00_00_00_00_00_00_00_00\"\n )\n mstore(add(clone, 0x14), implementationInBytes)\n mstore(\n add(clone, 0x28),\n hex\"5a_f4_3d_82_80_3e_90_3d_91_60_2b_57_fd_5b_f3_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00\"\n )\n proxy := create(0, clone, 0x37)\n }\n if (proxy == address(0)) {\n revert FailedContractCreation({emitter: _SELF});\n }\n emit ContractCreation({newContract: proxy});\n\n (bool success, bytes memory returnData) = proxy.call{value: msg.value}(data);\n _requireSuccessfulContractInitialisation({\n success: success,\n returnData: returnData,\n implementation: implementation\n });\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via `deployer` using\n * the `CREATE` opcode. For the specification of the Recursive Length Prefix (RLP) encoding\n * scheme, please refer to p. 19 of the Ethereum Yellow Paper (https://web.archive.org/web/20230921110603/https://ethereum.github.io/yellowpaper/paper.pdf)\n * and the Ethereum Wiki (https://web.archive.org/web/20230921112807/https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/).\n * For further insights also, see the following issue: https://web.archive.org/web/20230921112943/https://github.com/transmissions11/solmate/issues/207.\n *\n * Based on the EIP-161 (https://web.archive.org/web/20230921113207/https://raw.githubusercontent.com/ethereum/EIPs/master/EIPS/eip-161.md) specification,\n * all contract accounts on the Ethereum mainnet are initiated with `nonce = 1`. Thus, the\n * first contract address created by another contract is calculated with a non-zero nonce.\n * @param deployer The 20-byte deployer address.\n * @param nonce The next 32-byte nonce of the deployer address.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreateAddress(address deployer, uint256 nonce) public view returns (address computedAddress) {\n bytes memory data;\n bytes1 len = bytes1(0x94);\n\n // The theoretical allowed limit, based on EIP-2681, for an account nonce is 2**64-2:\n // https://web.archive.org/web/20230921113252/https://eips.ethereum.org/EIPS/eip-2681.\n if (nonce > type(uint64).max - 1) {\n revert InvalidNonceValue({emitter: _SELF});\n }\n\n // The integer zero is treated as an empty byte string and therefore has only one length prefix,\n // 0x80, which is calculated via 0x80 + 0.\n if (nonce == 0x00) {\n data = abi.encodePacked(bytes1(0xd6), len, deployer, bytes1(0x80));\n }\n // A one-byte integer in the [0x00, 0x7f] range uses its own value as a length prefix, there is no\n // additional \"0x80 + length\" prefix that precedes it.\n else if (nonce <= 0x7f) {\n data = abi.encodePacked(bytes1(0xd6), len, deployer, uint8(nonce));\n }\n // In the case of `nonce > 0x7f` and `nonce <= type(uint8).max`, we have the following encoding scheme\n // (the same calculation can be carried over for higher nonce bytes):\n // 0xda = 0xc0 (short RLP prefix) + 0x1a (= the bytes length of: 0x94 + address + 0x84 + nonce, in hex),\n // 0x94 = 0x80 + 0x14 (= the bytes length of an address, 20 bytes, in hex),\n // 0x84 = 0x80 + 0x04 (= the bytes length of the nonce, 4 bytes, in hex).\n else if (nonce <= type(uint8).max) {\n data = abi.encodePacked(bytes1(0xd7), len, deployer, bytes1(0x81), uint8(nonce));\n } else if (nonce <= type(uint16).max) {\n data = abi.encodePacked(bytes1(0xd8), len, deployer, bytes1(0x82), uint16(nonce));\n } else if (nonce <= type(uint24).max) {\n data = abi.encodePacked(bytes1(0xd9), len, deployer, bytes1(0x83), uint24(nonce));\n } else if (nonce <= type(uint32).max) {\n data = abi.encodePacked(bytes1(0xda), len, deployer, bytes1(0x84), uint32(nonce));\n } else if (nonce <= type(uint40).max) {\n data = abi.encodePacked(bytes1(0xdb), len, deployer, bytes1(0x85), uint40(nonce));\n } else if (nonce <= type(uint48).max) {\n data = abi.encodePacked(bytes1(0xdc), len, deployer, bytes1(0x86), uint48(nonce));\n } else if (nonce <= type(uint56).max) {\n data = abi.encodePacked(bytes1(0xdd), len, deployer, bytes1(0x87), uint56(nonce));\n } else {\n data = abi.encodePacked(bytes1(0xde), len, deployer, bytes1(0x88), uint64(nonce));\n }\n\n computedAddress = address(uint160(uint256(keccak256(data))));\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via this contract\n * using the `CREATE` opcode. For the specification of the Recursive Length Prefix (RLP)\n * encoding scheme, please refer to p. 19 of the Ethereum Yellow Paper (https://web.archive.org/web/20230921110603/https://ethereum.github.io/yellowpaper/paper.pdf)\n * and the Ethereum Wiki (https://web.archive.org/web/20230921112807/https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/).\n * For further insights also, see the following issue: https://web.archive.org/web/20230921112943/https://github.com/transmissions11/solmate/issues/207.\n *\n * Based on the EIP-161 (https://web.archive.org/web/20230921113207/https://raw.githubusercontent.com/ethereum/EIPs/master/EIPS/eip-161.md) specification,\n * all contract accounts on the Ethereum mainnet are initiated with `nonce = 1`. Thus, the\n * first contract address created by another contract is calculated with a non-zero nonce.\n * @param nonce The next 32-byte nonce of this contract.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreateAddress(uint256 nonce) public view returns (address computedAddress) {\n computedAddress = computeCreateAddress({deployer: _SELF, nonce: nonce});\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE2 */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Deploys a new contract via calling the `CREATE2` opcode and using the salt value `salt`,\n * the creation bytecode `initCode`, and `msg.value` as inputs. In order to save deployment costs,\n * we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero, `initCode`\n * must have a `payable` constructor.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n */\n function deployCreate2(bytes32 salt, bytes memory initCode) public payable returns (address newContract) {\n bytes32 guardedSalt = _guard({salt: salt});\n assembly (\"memory-safe\") {\n newContract := create2(callvalue(), add(initCode, 0x20), mload(initCode), guardedSalt)\n }\n _requireSuccessfulContractCreation({newContract: newContract});\n emit ContractCreation({newContract: newContract, salt: guardedSalt});\n }\n\n /**\n * @dev Deploys a new contract via calling the `CREATE2` opcode and using the creation bytecode\n * `initCode` and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a\n * diverse selection of block and transaction properties. This approach does not guarantee true\n * randomness! In order to save deployment costs, we do not sanity check the `initCode` length.\n * Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n */\n function deployCreate2(bytes memory initCode) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2`.\n newContract = deployCreate2({salt: _generateSalt(), initCode: initCode});\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n * salt value `salt`, the creation bytecode `initCode`, the initialisation code `data`, the struct\n * for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs.\n * In order to save deployment costs, we do not sanity check the `initCode` length. Note that if\n * `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n bytes32 guardedSalt = _guard({salt: salt});\n assembly (\"memory-safe\") {\n newContract := create2(mload(values), add(initCode, 0x20), mload(initCode), guardedSalt)\n }\n _requireSuccessfulContractCreation({newContract: newContract});\n emit ContractCreation({newContract: newContract, salt: guardedSalt});\n\n (bool success, bytes memory returnData) = newContract.call{value: values.initCallAmount}(data);\n if (!success) {\n revert FailedContractInitialisation({emitter: _SELF, revertData: returnData});\n }\n\n if (_SELF.balance != 0) {\n // Any wei amount previously forced into this contract (e.g. by using the `SELFDESTRUCT`\n // opcode) will be part of the refund transaction.\n (success, returnData) = refundAddress.call{value: _SELF.balance}(\"\");\n if (!success) {\n revert FailedEtherTransfer({emitter: _SELF, revertData: returnData});\n }\n }\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n * salt value `salt`, creation bytecode `initCode`, the initialisation code `data`, the struct for\n * the `payable` amounts `values`, and `msg.value` as inputs. In order to save deployment costs,\n * we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n * `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2AndInit`.\n newContract = deployCreate2AndInit({\n salt: salt,\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: msg.sender\n });\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n * creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n * amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. The salt value\n * is calculated pseudo-randomly using a diverse selection of block and transaction properties.\n * This approach does not guarantee true randomness! In order to save deployment costs, we do not\n * sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode`\n * must have a `payable` constructor.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2AndInit`.\n newContract = deployCreate2AndInit({\n salt: _generateSalt(),\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: refundAddress\n });\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n * creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts\n * `values`, and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a\n * diverse selection of block and transaction properties. This approach does not guarantee true\n * randomness! In order to save deployment costs, we do not sanity check the `initCode` length.\n * Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n * and any excess ether is returned to `msg.sender`.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2AndInit`.\n newContract = deployCreate2AndInit({\n salt: _generateSalt(),\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: msg.sender\n });\n }\n\n /**\n * @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE2` opcode and the salt\n * value `salt`, and initialises the implementation contract using the implementation address\n * `implementation`, the initialisation code `data`, and `msg.value` as inputs. Note that if\n * `msg.value` is non-zero, the initialiser function called via `data` must be `payable`.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param implementation The 20-byte implementation contract address.\n * @param data The initialisation code that is passed to the deployed proxy contract.\n * @return proxy The 20-byte address where the clone was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2Clone(\n bytes32 salt,\n address implementation,\n bytes memory data\n ) public payable returns (address proxy) {\n bytes32 guardedSalt = _guard({salt: salt});\n bytes20 implementationInBytes = bytes20(implementation);\n assembly (\"memory-safe\") {\n let clone := mload(0x40)\n mstore(\n clone,\n hex\"3d_60_2d_80_60_0a_3d_39_81_f3_36_3d_3d_37_3d_3d_3d_36_3d_73_00_00_00_00_00_00_00_00_00_00_00_00\"\n )\n mstore(add(clone, 0x14), implementationInBytes)\n mstore(\n add(clone, 0x28),\n hex\"5a_f4_3d_82_80_3e_90_3d_91_60_2b_57_fd_5b_f3_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00\"\n )\n proxy := create2(0, clone, 0x37, guardedSalt)\n }\n if (proxy == address(0)) {\n revert FailedContractCreation({emitter: _SELF});\n }\n emit ContractCreation({newContract: proxy, salt: guardedSalt});\n\n (bool success, bytes memory returnData) = proxy.call{value: msg.value}(data);\n _requireSuccessfulContractInitialisation({\n success: success,\n returnData: returnData,\n implementation: implementation\n });\n }\n\n /**\n * @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE2` opcode and the salt\n * value `salt`, and initialises the implementation contract using the implementation address\n * `implementation`, the initialisation code `data`, and `msg.value` as inputs. The salt value is\n * calculated pseudo-randomly using a diverse selection of block and transaction properties. This\n * approach does not guarantee true randomness! Note that if `msg.value` is non-zero, the initialiser\n * function called via `data` must be `payable`.\n * @param implementation The 20-byte implementation contract address.\n * @param data The initialisation code that is passed to the deployed proxy contract.\n * @return proxy The 20-byte address where the clone was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2Clone(address implementation, bytes memory data) public payable returns (address proxy) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2Clone`.\n proxy = deployCreate2Clone({salt: _generateSalt(), implementation: implementation, data: data});\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via `deployer` using\n * the `CREATE2` opcode. Any change in the `initCodeHash` or `salt` values will result in a new\n * destination address. This implementation is based on OpenZeppelin:\n * https://web.archive.org/web/20230921113703/https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/181d518609a9f006fcb97af63e6952e603cf100e/contracts/utils/Create2.sol.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCodeHash The 32-byte bytecode digest of the contract creation bytecode.\n * @param deployer The 20-byte deployer address.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreate2Address(\n bytes32 salt,\n bytes32 initCodeHash,\n address deployer\n ) public pure returns (address computedAddress) {\n assembly (\"memory-safe\") {\n // | | ↓ ptr ... ↓ ptr + 0x0B (start) ... ↓ ptr + 0x20 ... ↓ ptr + 0x40 ... |\n // |----------------------|---------------------------------------------------------------------------|\n // | initCodeHash | CCCCCCCCCCCCC...CC |\n // | salt | BBBBBBBBBBBBB...BB |\n // | deployer | 000000...0000AAAAAAAAAAAAAAAAAAA...AA |\n // | 0xFF | FF |\n // |----------------------|---------------------------------------------------------------------------|\n // | memory | 000000...00FFAAAAAAAAAAAAAAAAAAA...AABBBBBBBBBBBBB...BBCCCCCCCCCCCCC...CC |\n // | keccak256(start, 85) | ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ |\n let ptr := mload(0x40)\n mstore(add(ptr, 0x40), initCodeHash)\n mstore(add(ptr, 0x20), salt)\n mstore(ptr, deployer)\n let start := add(ptr, 0x0b)\n mstore8(start, 0xff)\n computedAddress := keccak256(start, 85)\n }\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via this contract using\n * the `CREATE2` opcode. Any change in the `initCodeHash` or `salt` values will result in a new\n * destination address.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCodeHash The 32-byte bytecode digest of the contract creation bytecode.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) public view returns (address computedAddress) {\n computedAddress = computeCreate2Address({salt: salt, initCodeHash: initCodeHash, deployer: _SELF});\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE3 */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Deploys a new contract via employing the `CREATE3` pattern (i.e. without an initcode\n * factor) and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value`\n * as inputs. In order to save deployment costs, we do not sanity check the `initCode` length.\n * Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor. This\n * implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security We strongly recommend implementing a permissioned deploy protection by setting\n * the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n * proxy deployments on other chains.\n */\n function deployCreate3(bytes32 salt, bytes memory initCode) public payable returns (address newContract) {\n bytes32 guardedSalt = _guard({salt: salt});\n bytes memory proxyChildBytecode = hex\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\";\n address proxy;\n assembly (\"memory-safe\") {\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), guardedSalt)\n }\n if (proxy == address(0)) {\n revert FailedContractCreation({emitter: _SELF});\n }\n emit Create3ProxyContractCreation({newContract: proxy, salt: guardedSalt});\n\n newContract = computeCreate3Address({salt: guardedSalt});\n (bool success, ) = proxy.call{value: msg.value}(initCode);\n _requireSuccessfulContractCreation({success: success, newContract: newContract});\n emit ContractCreation({newContract: newContract});\n }\n\n /**\n * @dev Deploys a new contract via employing the `CREATE3` pattern (i.e. without an initcode\n * factor) and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value`\n * as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block\n * and transaction properties. This approach does not guarantee true randomness! In order to save\n * deployment costs, we do not sanity check the `initCode` length. Note that if `msg.value` is\n * non-zero, `initCode` must have a `payable` constructor. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n */\n function deployCreate3(bytes memory initCode) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate3`.\n newContract = deployCreate3({salt: _generateSalt(), initCode: initCode});\n }\n\n /**\n * @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n * an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, the\n * initialisation code `data`, the struct for the `payable` amounts `values`, the refund address\n * `refundAddress`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity\n * check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must\n * have a `payable` constructor. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n * Furthermore, we strongly recommend implementing a permissioned deploy protection by setting\n * the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n * proxy deployments on other chains.\n */\n function deployCreate3AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n bytes32 guardedSalt = _guard({salt: salt});\n bytes memory proxyChildBytecode = hex\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\";\n address proxy;\n assembly (\"memory-safe\") {\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), guardedSalt)\n }\n if (proxy == address(0)) {\n revert FailedContractCreation({emitter: _SELF});\n }\n emit Create3ProxyContractCreation({newContract: proxy, salt: guardedSalt});\n\n newContract = computeCreate3Address({salt: guardedSalt});\n (bool success, ) = proxy.call{value: values.constructorAmount}(initCode);\n _requireSuccessfulContractCreation({success: success, newContract: newContract});\n emit ContractCreation({newContract: newContract});\n\n bytes memory returnData;\n (success, returnData) = newContract.call{value: values.initCallAmount}(data);\n if (!success) {\n revert FailedContractInitialisation({emitter: _SELF, revertData: returnData});\n }\n\n if (_SELF.balance != 0) {\n // Any wei amount previously forced into this contract (e.g. by using the `SELFDESTRUCT`\n // opcode) will be part of the refund transaction.\n (success, returnData) = refundAddress.call{value: _SELF.balance}(\"\");\n if (!success) {\n revert FailedEtherTransfer({emitter: _SELF, revertData: returnData});\n }\n }\n }\n\n /**\n * @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n * an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, the\n * initialisation code `data`, the struct for the `payable` amounts `values`, and `msg.value` as\n * inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note\n * that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n * and any excess ether is returned to `msg.sender`. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n * Furthermore, we strongly recommend implementing a permissioned deploy protection by setting\n * the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n * proxy deployments on other chains.\n */\n function deployCreate3AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate3AndInit`.\n newContract = deployCreate3AndInit({\n salt: salt,\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: msg.sender\n });\n }\n\n /**\n * @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n * an initcode factor) and using the creation bytecode `initCode`, the initialisation code `data`,\n * the struct for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value`\n * as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and\n * transaction properties. This approach does not guarantee true randomness! In order to save deployment\n * costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n * `initCode` must have a `payable` constructor. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate3AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate3AndInit`.\n newContract = deployCreate3AndInit({\n salt: _generateSalt(),\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: refundAddress\n });\n }\n\n /**\n * @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n * an initcode factor) and using the creation bytecode `initCode`, the initialisation code `data`,\n * the struct for the `payable` amounts `values`, `msg.value` as inputs. The salt value is calculated\n * pseudo-randomly using a diverse selection of block and transaction properties. This approach does\n * not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode`\n * length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n * and any excess ether is returned to `msg.sender`. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate3AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate3AndInit`.\n newContract = deployCreate3AndInit({\n salt: _generateSalt(),\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: msg.sender\n });\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via `deployer` using\n * the `CREATE3` pattern (i.e. without an initcode factor). Any change in the `salt` value will\n * result in a new destination address. This implementation is based on Solady:\n * https://web.archive.org/web/20230921114120/https://raw.githubusercontent.com/Vectorized/solady/1c1ac4ad9c8558001e92d8d1a7722ef67bec75df/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param deployer The 20-byte deployer address.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreate3Address(bytes32 salt, address deployer) public pure returns (address computedAddress) {\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n mstore(0x00, deployer)\n mstore8(0x0b, 0xff)\n mstore(0x20, salt)\n mstore(\n 0x40,\n hex\"21_c3_5d_be_1b_34_4a_24_88_cf_33_21_d6_ce_54_2f_8e_9f_30_55_44_ff_09_e4_99_3a_62_31_9a_49_7c_1f\"\n )\n mstore(0x14, keccak256(0x0b, 0x55))\n mstore(0x40, ptr)\n mstore(0x00, 0xd694)\n mstore8(0x34, 0x01)\n computedAddress := keccak256(0x1e, 0x17)\n }\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via this contract using\n * the `CREATE3` pattern (i.e. without an initcode factor). Any change in the `salt` value will\n * result in a new destination address. This implementation is based on Solady:\n * https://web.archive.org/web/20230921114120/https://raw.githubusercontent.com/Vectorized/solady/1c1ac4ad9c8558001e92d8d1a7722ef67bec75df/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreate3Address(bytes32 salt) public view returns (address computedAddress) {\n computedAddress = computeCreate3Address({salt: salt, deployer: _SELF});\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* HELPER FUNCTIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Implements different safeguarding mechanisms depending on the encoded values in the salt\n * (`||` stands for byte-wise concatenation):\n * => salt (32 bytes) = 0xbebebebebebebebebebebebebebebebebebebebe||ff||1212121212121212121212\n * - The first 20 bytes (i.e. `bebebebebebebebebebebebebebebebebebebebe`) may be used to\n * implement a permissioned deploy protection by setting them equal to `msg.sender`,\n * - The 21st byte (i.e. `ff`) may be used to implement a cross-chain redeploy protection by\n * setting it equal to `0x01`,\n * - The last random 11 bytes (i.e. `1212121212121212121212`) allow for 2**88 bits of entropy\n * for mining a salt.\n * @param salt The 32-byte random value used to create the contract address.\n * @return guardedSalt The guarded 32-byte random value used to create the contract address.\n */\n function _guard(bytes32 salt) internal view returns (bytes32 guardedSalt) {\n (SenderBytes senderBytes, RedeployProtectionFlag redeployProtectionFlag) = _parseSalt({salt: salt});\n\n if (senderBytes == SenderBytes.MsgSender && redeployProtectionFlag == RedeployProtectionFlag.True) {\n // Configures a permissioned deploy protection as well as a cross-chain redeploy protection.\n guardedSalt = keccak256(abi.encode(msg.sender, block.chainid, salt));\n } else if (senderBytes == SenderBytes.MsgSender && redeployProtectionFlag == RedeployProtectionFlag.False) {\n // Configures solely a permissioned deploy protection.\n guardedSalt = _efficientHash({a: bytes32(uint256(uint160(msg.sender))), b: salt});\n } else if (senderBytes == SenderBytes.MsgSender) {\n // Reverts if the 21st byte is greater than `0x01` in order to enforce developer explicitness.\n revert InvalidSalt({emitter: _SELF});\n } else if (senderBytes == SenderBytes.ZeroAddress && redeployProtectionFlag == RedeployProtectionFlag.True) {\n // Configures solely a cross-chain redeploy protection. In order to prevent a pseudo-randomly\n // generated cross-chain redeploy protection, we enforce the zero address check for the first 20 bytes.\n guardedSalt = _efficientHash({a: bytes32(block.chainid), b: salt});\n } else if (\n senderBytes == SenderBytes.ZeroAddress && redeployProtectionFlag == RedeployProtectionFlag.Unspecified\n ) {\n // Reverts if the 21st byte is greater than `0x01` in order to enforce developer explicitness.\n revert InvalidSalt({emitter: _SELF});\n } else {\n // For the non-pseudo-random cases, the salt value `salt` is hashed to prevent the safeguard mechanisms\n // from being bypassed. Otherwise, the salt value `salt` is not modified.\n guardedSalt = (salt != _generateSalt()) ? keccak256(abi.encode(salt)) : salt;\n }\n }\n\n /**\n * @dev Returns the enum for the selection of a permissioned deploy protection as well as a\n * cross-chain redeploy protection.\n * @param salt The 32-byte random value used to create the contract address.\n * @return senderBytes The 8-byte enum for the selection of a permissioned deploy protection.\n * @return redeployProtectionFlag The 8-byte enum for the selection of a cross-chain redeploy\n * protection.\n */\n function _parseSalt(\n bytes32 salt\n ) internal view returns (SenderBytes senderBytes, RedeployProtectionFlag redeployProtectionFlag) {\n if (address(bytes20(salt)) == msg.sender && bytes1(salt[20]) == hex\"01\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.MsgSender, RedeployProtectionFlag.True);\n } else if (address(bytes20(salt)) == msg.sender && bytes1(salt[20]) == hex\"00\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.MsgSender, RedeployProtectionFlag.False);\n } else if (address(bytes20(salt)) == msg.sender) {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.MsgSender, RedeployProtectionFlag.Unspecified);\n } else if (address(bytes20(salt)) == address(0) && bytes1(salt[20]) == hex\"01\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.ZeroAddress, RedeployProtectionFlag.True);\n } else if (address(bytes20(salt)) == address(0) && bytes1(salt[20]) == hex\"00\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.ZeroAddress, RedeployProtectionFlag.False);\n } else if (address(bytes20(salt)) == address(0)) {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.ZeroAddress, RedeployProtectionFlag.Unspecified);\n } else if (bytes1(salt[20]) == hex\"01\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.Random, RedeployProtectionFlag.True);\n } else if (bytes1(salt[20]) == hex\"00\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.Random, RedeployProtectionFlag.False);\n } else {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.Random, RedeployProtectionFlag.Unspecified);\n }\n }\n\n /**\n * @dev Returns the `keccak256` hash of `a` and `b` after concatenation.\n * @param a The first 32-byte value to be concatenated and hashed.\n * @param b The second 32-byte value to be concatenated and hashed.\n * @return hash The 32-byte `keccak256` hash of `a` and `b`.\n */\n function _efficientHash(bytes32 a, bytes32 b) internal pure returns (bytes32 hash) {\n assembly (\"memory-safe\") {\n mstore(0x00, a)\n mstore(0x20, b)\n hash := keccak256(0x00, 0x40)\n }\n }\n\n /**\n * @dev Generates pseudo-randomly a salt value using a diverse selection of block and\n * transaction properties.\n * @return salt The 32-byte pseudo-random salt value.\n */\n function _generateSalt() internal view returns (bytes32 salt) {\n unchecked {\n salt = keccak256(\n abi.encode(\n // We don't use `block.number - 256` (the maximum value on the EVM) to accommodate\n // any chains that may try to reduce the amount of available historical block hashes.\n // We also don't subtract 1 to mitigate any risks arising from consecutive block\n // producers on a PoS chain. Therefore, we use `block.number - 32` as a reasonable\n // compromise, one we expect should work on most chains, which is 1 epoch on Ethereum\n // mainnet. Please note that if you use this function between the genesis block and block\n // number 31, the block property `blockhash` will return zero, but the returned salt value\n // `salt` will still have a non-zero value due to the hashing characteristic and the other\n // remaining properties.\n blockhash(block.number - 32),\n block.coinbase,\n block.number,\n block.timestamp,\n block.prevrandao,\n block.chainid,\n msg.sender\n )\n );\n }\n }\n\n /**\n * @dev Ensures that `newContract` is a non-zero byte contract.\n * @param success The Boolean success condition.\n * @param newContract The 20-byte address where the contract was deployed.\n */\n function _requireSuccessfulContractCreation(bool success, address newContract) internal view {\n // Note that reverting if `newContract == address(0)` isn't strictly necessary here, as if\n // the deployment fails, `success == false` should already hold. However, since the `CreateX`\n // contract should be usable and safe on a wide range of chains, this check is cheap enough\n // that there is no harm in including it (security > gas optimisations). It can potentially\n // protect against unexpected chain behaviour or a hypothetical compiler bug that doesn't surface\n // the call success status properly.\n if (!success || newContract == address(0) || newContract.code.length == 0) {\n revert FailedContractCreation({emitter: _SELF});\n }\n }\n\n /**\n * @dev Ensures that `newContract` is a non-zero byte contract.\n * @param newContract The 20-byte address where the contract was deployed.\n */\n function _requireSuccessfulContractCreation(address newContract) internal view {\n if (newContract == address(0) || newContract.code.length == 0) {\n revert FailedContractCreation({emitter: _SELF});\n }\n }\n\n /**\n * @dev Ensures that the contract initialisation call to `implementation` has been successful.\n * @param success The Boolean success condition.\n * @param returnData The return data from the contract initialisation call.\n * @param implementation The 20-byte address where the implementation was deployed.\n */\n function _requireSuccessfulContractInitialisation(\n bool success,\n bytes memory returnData,\n address implementation\n ) internal view {\n if (!success || implementation.code.length == 0) {\n revert FailedContractInitialisation({emitter: _SELF, revertData: returnData});\n }\n }\n}\n"},"src/ICreateX.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.4;\n\n/**\n * @title CreateX Factory Interface Definition\n * @author pcaversaccio (https://web.archive.org/web/20230921103111/https://pcaversaccio.com/)\n * @custom:coauthor Matt Solomon (https://web.archive.org/web/20230921103335/https://mattsolomon.dev/)\n */\ninterface ICreateX {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* TYPES */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n struct Values {\n uint256 constructorAmount;\n uint256 initCallAmount;\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* EVENTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n event ContractCreation(address indexed newContract, bytes32 indexed salt);\n event ContractCreation(address indexed newContract);\n event Create3ProxyContractCreation(address indexed newContract, bytes32 indexed salt);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n error FailedContractCreation(address emitter);\n error FailedContractInitialisation(address emitter, bytes revertData);\n error InvalidSalt(address emitter);\n error InvalidNonceValue(address emitter);\n error FailedEtherTransfer(address emitter, bytes revertData);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n function deployCreate(bytes memory initCode) external payable returns (address newContract);\n\n function deployCreateAndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) external payable returns (address newContract);\n\n function deployCreateAndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) external payable returns (address newContract);\n\n function deployCreateClone(address implementation, bytes memory data) external payable returns (address proxy);\n\n function computeCreateAddress(address deployer, uint256 nonce) external view returns (address computedAddress);\n\n function computeCreateAddress(uint256 nonce) external view returns (address computedAddress);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE2 */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n function deployCreate2(bytes32 salt, bytes memory initCode) external payable returns (address newContract);\n\n function deployCreate2(bytes memory initCode) external payable returns (address newContract);\n\n function deployCreate2AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) external payable returns (address newContract);\n\n function deployCreate2AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) external payable returns (address newContract);\n\n function deployCreate2AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) external payable returns (address newContract);\n\n function deployCreate2AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) external payable returns (address newContract);\n\n function deployCreate2Clone(\n bytes32 salt,\n address implementation,\n bytes memory data\n ) external payable returns (address proxy);\n\n function deployCreate2Clone(address implementation, bytes memory data) external payable returns (address proxy);\n\n function computeCreate2Address(\n bytes32 salt,\n bytes32 initCodeHash,\n address deployer\n ) external pure returns (address computedAddress);\n\n function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) external view returns (address computedAddress);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE3 */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n function deployCreate3(bytes32 salt, bytes memory initCode) external payable returns (address newContract);\n\n function deployCreate3(bytes memory initCode) external payable returns (address newContract);\n\n function deployCreate3AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) external payable returns (address newContract);\n\n function deployCreate3AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) external payable returns (address newContract);\n\n function deployCreate3AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) external payable returns (address newContract);\n\n function deployCreate3AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) external payable returns (address newContract);\n\n function computeCreate3Address(bytes32 salt, address deployer) external pure returns (address computedAddress);\n\n function computeCreate3Address(bytes32 salt) external view returns (address computedAddress);\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":10000000},"evmVersion":"paris","viaIR":false,"metadata":{"bytecodeHash":"none"},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"src/CreateX.sol":{"ast":{"absolutePath":"src/CreateX.sol","exportedSymbols":{"CreateX":[1713]},"id":1714,"license":"AGPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","0.8",".23"],"nodeType":"PragmaDirective","src":"42:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"CreateX","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"67:1108:0","text":" @title CreateX Factory Smart Contract\n @author pcaversaccio (https://web.archive.org/web/20230921103111/https://pcaversaccio.com/)\n @custom:coauthor Matt Solomon (https://web.archive.org/web/20230921103335/https://mattsolomon.dev/)\n @notice Factory smart contract to make easier and safer usage of the\n `CREATE` (https://web.archive.org/web/20230921103540/https://www.evm.codes/#f0?fork=shanghai) and `CREATE2`\n (https://web.archive.org/web/20230921103540/https://www.evm.codes/#f5?fork=shanghai) EVM opcodes as well as of\n `CREATE3`-based (https://web.archive.org/web/20230921103920/https://github.com/ethereum/EIPs/pull/3171) contract creations.\n @dev To simplify testing of non-public variables and functions, we use the `internal`\n function visibility specifier `internal` for all variables and functions, even though\n they could technically be `private` since we do not expect anyone to inherit from\n the `CreateX` contract.\n @custom:security-contact See https://web.archive.org/web/20230921105029/https://raw.githubusercontent.com/pcaversaccio/createx/main/SECURITY.md."},"fullyImplemented":true,"id":1713,"linearizedBaseContracts":[1713],"name":"CreateX","nameLocation":"1185:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"1482:102:0","text":" @dev Caches the contract address at construction, to be used for the custom errors."},"id":9,"mutability":"immutable","name":"_SELF","nameLocation":"1616:5:0","nodeType":"VariableDeclaration","scope":1713,"src":"1589:48:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"1589:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":7,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1632:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_CreateX_$1713","typeString":"contract CreateX"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CreateX_$1713","typeString":"contract CreateX"}],"id":6,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1624:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5,"name":"address","nodeType":"ElementaryTypeName","src":"1624:7:0","typeDescriptions":{}}},"id":8,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1624:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"canonicalName":"CreateX.Values","documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"1927:89:0","text":" @dev Struct for the `payable` amounts in a deploy-and-initialise call."},"id":15,"members":[{"constant":false,"id":12,"mutability":"mutable","name":"constructorAmount","nameLocation":"2053:17:0","nodeType":"VariableDeclaration","scope":15,"src":"2045:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11,"name":"uint256","nodeType":"ElementaryTypeName","src":"2045:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14,"mutability":"mutable","name":"initCallAmount","nameLocation":"2088:14:0","nodeType":"VariableDeclaration","scope":15,"src":"2080:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13,"name":"uint256","nodeType":"ElementaryTypeName","src":"2080:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Values","nameLocation":"2028:6:0","nodeType":"StructDefinition","scope":1713,"src":"2021:88:0","visibility":"public"},{"canonicalName":"CreateX.SenderBytes","documentation":{"id":16,"nodeType":"StructuredDocumentation","src":"2115:83:0","text":" @dev Enum for the selection of a permissioned deploy protection."},"id":20,"members":[{"id":17,"name":"MsgSender","nameLocation":"2230:9:0","nodeType":"EnumValue","src":"2230:9:0"},{"id":18,"name":"ZeroAddress","nameLocation":"2249:11:0","nodeType":"EnumValue","src":"2249:11:0"},{"id":19,"name":"Random","nameLocation":"2270:6:0","nodeType":"EnumValue","src":"2270:6:0"}],"name":"SenderBytes","nameLocation":"2208:11:0","nodeType":"EnumDefinition","src":"2203:79:0"},{"canonicalName":"CreateX.RedeployProtectionFlag","documentation":{"id":21,"nodeType":"StructuredDocumentation","src":"2288:84:0","text":" @dev Enum for the selection of a cross-chain redeploy protection."},"id":25,"members":[{"id":22,"name":"True","nameLocation":"2415:4:0","nodeType":"EnumValue","src":"2415:4:0"},{"id":23,"name":"False","nameLocation":"2429:5:0","nodeType":"EnumValue","src":"2429:5:0"},{"id":24,"name":"Unspecified","nameLocation":"2444:11:0","nodeType":"EnumValue","src":"2444:11:0"}],"name":"RedeployProtectionFlag","nameLocation":"2382:22:0","nodeType":"EnumDefinition","src":"2377:84:0"},{"anonymous":false,"documentation":{"id":26,"nodeType":"StructuredDocumentation","src":"2750:226:0","text":" @dev Event that is emitted when a contract is successfully created.\n @param newContract The address of the new contract.\n @param salt The 32-byte random value used to create the contract address."},"eventSelector":"b8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","id":32,"name":"ContractCreation","nameLocation":"2987:16:0","nodeType":"EventDefinition","parameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"indexed":true,"mutability":"mutable","name":"newContract","nameLocation":"3020:11:0","nodeType":"VariableDeclaration","scope":32,"src":"3004:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27,"name":"address","nodeType":"ElementaryTypeName","src":"3004:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":30,"indexed":true,"mutability":"mutable","name":"salt","nameLocation":"3049:4:0","nodeType":"VariableDeclaration","scope":32,"src":"3033:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":29,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3033:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3003:51:0"},"src":"2981:74:0"},{"anonymous":false,"documentation":{"id":33,"nodeType":"StructuredDocumentation","src":"3061:145:0","text":" @dev Event that is emitted when a contract is successfully created.\n @param newContract The address of the new contract."},"eventSelector":"4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511","id":37,"name":"ContractCreation","nameLocation":"3217:16:0","nodeType":"EventDefinition","parameters":{"id":36,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35,"indexed":true,"mutability":"mutable","name":"newContract","nameLocation":"3250:11:0","nodeType":"VariableDeclaration","scope":37,"src":"3234:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"3234:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3233:29:0"},"src":"3211:52:0"},{"anonymous":false,"documentation":{"id":38,"nodeType":"StructuredDocumentation","src":"3269:245:0","text":" @dev Event that is emitted when a `CREATE3` proxy contract is successfully created.\n @param newContract The address of the new proxy contract.\n @param salt The 32-byte random value used to create the proxy address."},"eventSelector":"2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c9067","id":44,"name":"Create3ProxyContractCreation","nameLocation":"3525:28:0","nodeType":"EventDefinition","parameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40,"indexed":true,"mutability":"mutable","name":"newContract","nameLocation":"3570:11:0","nodeType":"VariableDeclaration","scope":44,"src":"3554:27:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39,"name":"address","nodeType":"ElementaryTypeName","src":"3554:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42,"indexed":true,"mutability":"mutable","name":"salt","nameLocation":"3599:4:0","nodeType":"VariableDeclaration","scope":44,"src":"3583:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3583:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3553:51:0"},"src":"3519:86:0"},{"documentation":{"id":45,"nodeType":"StructuredDocumentation","src":"3894:133:0","text":" @dev Error that occurs when the contract creation failed.\n @param emitter The contract that emits the error."},"errorSelector":"c05cee7a","id":49,"name":"FailedContractCreation","nameLocation":"4038:22:0","nodeType":"ErrorDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"mutability":"mutable","name":"emitter","nameLocation":"4069:7:0","nodeType":"VariableDeclaration","scope":49,"src":"4061:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"4061:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4060:17:0"},"src":"4032:46:0"},{"documentation":{"id":50,"nodeType":"StructuredDocumentation","src":"4084:222:0","text":" @dev Error that occurs when the contract initialisation call failed.\n @param emitter The contract that emits the error.\n @param revertData The data returned by the failed initialisation call."},"errorSelector":"a57ca239","id":56,"name":"FailedContractInitialisation","nameLocation":"4317:28:0","nodeType":"ErrorDefinition","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52,"mutability":"mutable","name":"emitter","nameLocation":"4354:7:0","nodeType":"VariableDeclaration","scope":56,"src":"4346:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51,"name":"address","nodeType":"ElementaryTypeName","src":"4346:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54,"mutability":"mutable","name":"revertData","nameLocation":"4369:10:0","nodeType":"VariableDeclaration","scope":56,"src":"4363:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":53,"name":"bytes","nodeType":"ElementaryTypeName","src":"4363:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4345:35:0"},"src":"4311:70:0"},{"documentation":{"id":57,"nodeType":"StructuredDocumentation","src":"4387:130:0","text":" @dev Error that occurs when the salt value is invalid.\n @param emitter The contract that emits the error."},"errorSelector":"13b3a2a1","id":61,"name":"InvalidSalt","nameLocation":"4528:11:0","nodeType":"ErrorDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"mutability":"mutable","name":"emitter","nameLocation":"4548:7:0","nodeType":"VariableDeclaration","scope":61,"src":"4540:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"4540:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4539:17:0"},"src":"4522:35:0"},{"documentation":{"id":62,"nodeType":"StructuredDocumentation","src":"4563:131:0","text":" @dev Error that occurs when the nonce value is invalid.\n @param emitter The contract that emits the error."},"errorSelector":"3c55ab3b","id":66,"name":"InvalidNonceValue","nameLocation":"4705:17:0","nodeType":"ErrorDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"emitter","nameLocation":"4731:7:0","nodeType":"VariableDeclaration","scope":66,"src":"4723:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"4723:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4722:17:0"},"src":"4699:41:0"},{"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"4746:207:0","text":" @dev Error that occurs when transferring ether has failed.\n @param emitter The contract that emits the error.\n @param revertData The data returned by the failed ether transfer."},"errorSelector":"c2b3f445","id":73,"name":"FailedEtherTransfer","nameLocation":"4964:19:0","nodeType":"ErrorDefinition","parameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"mutability":"mutable","name":"emitter","nameLocation":"4992:7:0","nodeType":"VariableDeclaration","scope":73,"src":"4984:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"4984:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":71,"mutability":"mutable","name":"revertData","nameLocation":"5007:10:0","nodeType":"VariableDeclaration","scope":73,"src":"5001:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":70,"name":"bytes","nodeType":"ElementaryTypeName","src":"5001:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4983:35:0"},"src":"4958:61:0"},{"body":{"id":90,"nodeType":"Block","src":"5863:268:0","statements":[{"AST":{"nativeSrc":"5898:96:0","nodeType":"YulBlock","src":"5898:96:0","statements":[{"nativeSrc":"5912:72:0","nodeType":"YulAssignment","src":"5912:72:0","value":{"arguments":[{"arguments":[],"functionName":{"name":"callvalue","nativeSrc":"5934:9:0","nodeType":"YulIdentifier","src":"5934:9:0"},"nativeSrc":"5934:11:0","nodeType":"YulFunctionCall","src":"5934:11:0"},{"arguments":[{"name":"initCode","nativeSrc":"5951:8:0","nodeType":"YulIdentifier","src":"5951:8:0"},{"kind":"number","nativeSrc":"5961:4:0","nodeType":"YulLiteral","src":"5961:4:0","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5947:3:0","nodeType":"YulIdentifier","src":"5947:3:0"},"nativeSrc":"5947:19:0","nodeType":"YulFunctionCall","src":"5947:19:0"},{"arguments":[{"name":"initCode","nativeSrc":"5974:8:0","nodeType":"YulIdentifier","src":"5974:8:0"}],"functionName":{"name":"mload","nativeSrc":"5968:5:0","nodeType":"YulIdentifier","src":"5968:5:0"},"nativeSrc":"5968:15:0","nodeType":"YulFunctionCall","src":"5968:15:0"}],"functionName":{"name":"create","nativeSrc":"5927:6:0","nodeType":"YulIdentifier","src":"5927:6:0"},"nativeSrc":"5927:57:0","nodeType":"YulFunctionCall","src":"5927:57:0"},"variableNames":[{"name":"newContract","nativeSrc":"5912:11:0","nodeType":"YulIdentifier","src":"5912:11:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":76,"isOffset":false,"isSlot":false,"src":"5951:8:0","valueSize":1},{"declaration":76,"isOffset":false,"isSlot":false,"src":"5974:8:0","valueSize":1},{"declaration":79,"isOffset":false,"isSlot":false,"src":"5912:11:0","valueSize":1}],"flags":["memory-safe"],"id":81,"nodeType":"InlineAssembly","src":"5873:121:0"},{"expression":{"arguments":[{"id":83,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"6052:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82,"name":"_requireSuccessfulContractCreation","nodeType":"Identifier","overloadedDeclarations":[1661,1686],"referencedDeclaration":1686,"src":"6003:34:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["6039:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"6003:62:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85,"nodeType":"ExpressionStatement","src":"6003:62:0"},{"eventCall":{"arguments":[{"id":87,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"6111:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"ContractCreation","nodeType":"Identifier","overloadedDeclarations":[32,37],"referencedDeclaration":37,"src":"6080:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["6098:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"6080:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"EmitStatement","src":"6075:49:0"}]},"documentation":{"id":74,"nodeType":"StructuredDocumentation","src":"5308:460:0","text":" @dev Deploys a new contract via calling the `CREATE` opcode and using the creation\n bytecode `initCode` and `msg.value` as inputs. In order to save deployment costs,\n we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero,\n `initCode` must have a `payable` constructor.\n @param initCode The creation bytecode.\n @return newContract The 20-byte address where the contract was deployed."},"functionSelector":"27fe1822","id":91,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate","nameLocation":"5782:12:0","nodeType":"FunctionDefinition","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"initCode","nameLocation":"5808:8:0","nodeType":"VariableDeclaration","scope":91,"src":"5795:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75,"name":"bytes","nodeType":"ElementaryTypeName","src":"5795:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5794:23:0"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"newContract","nameLocation":"5850:11:0","nodeType":"VariableDeclaration","scope":91,"src":"5842:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"5842:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5841:21:0"},"scope":1713,"src":"5773:358:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":163,"nodeType":"Block","src":"7507:919:0","statements":[{"AST":{"nativeSrc":"7542:98:0","nodeType":"YulBlock","src":"7542:98:0","statements":[{"nativeSrc":"7556:74:0","nodeType":"YulAssignment","src":"7556:74:0","value":{"arguments":[{"arguments":[{"name":"values","nativeSrc":"7584:6:0","nodeType":"YulIdentifier","src":"7584:6:0"}],"functionName":{"name":"mload","nativeSrc":"7578:5:0","nodeType":"YulIdentifier","src":"7578:5:0"},"nativeSrc":"7578:13:0","nodeType":"YulFunctionCall","src":"7578:13:0"},{"arguments":[{"name":"initCode","nativeSrc":"7597:8:0","nodeType":"YulIdentifier","src":"7597:8:0"},{"kind":"number","nativeSrc":"7607:4:0","nodeType":"YulLiteral","src":"7607:4:0","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7593:3:0","nodeType":"YulIdentifier","src":"7593:3:0"},"nativeSrc":"7593:19:0","nodeType":"YulFunctionCall","src":"7593:19:0"},{"arguments":[{"name":"initCode","nativeSrc":"7620:8:0","nodeType":"YulIdentifier","src":"7620:8:0"}],"functionName":{"name":"mload","nativeSrc":"7614:5:0","nodeType":"YulIdentifier","src":"7614:5:0"},"nativeSrc":"7614:15:0","nodeType":"YulFunctionCall","src":"7614:15:0"}],"functionName":{"name":"create","nativeSrc":"7571:6:0","nodeType":"YulIdentifier","src":"7571:6:0"},"nativeSrc":"7571:59:0","nodeType":"YulFunctionCall","src":"7571:59:0"},"variableNames":[{"name":"newContract","nativeSrc":"7556:11:0","nodeType":"YulIdentifier","src":"7556:11:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":94,"isOffset":false,"isSlot":false,"src":"7597:8:0","valueSize":1},{"declaration":94,"isOffset":false,"isSlot":false,"src":"7620:8:0","valueSize":1},{"declaration":104,"isOffset":false,"isSlot":false,"src":"7556:11:0","valueSize":1},{"declaration":99,"isOffset":false,"isSlot":false,"src":"7584:6:0","valueSize":1}],"flags":["memory-safe"],"id":106,"nodeType":"InlineAssembly","src":"7517:123:0"},{"expression":{"arguments":[{"id":108,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104,"src":"7698:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":107,"name":"_requireSuccessfulContractCreation","nodeType":"Identifier","overloadedDeclarations":[1661,1686],"referencedDeclaration":1686,"src":"7649:34:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["7685:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"7649:62:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":110,"nodeType":"ExpressionStatement","src":"7649:62:0"},{"eventCall":{"arguments":[{"id":112,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104,"src":"7757:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":111,"name":"ContractCreation","nodeType":"Identifier","overloadedDeclarations":[32,37],"referencedDeclaration":37,"src":"7726:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["7744:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"7726:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":114,"nodeType":"EmitStatement","src":"7721:49:0"},{"assignments":[116,118],"declarations":[{"constant":false,"id":116,"mutability":"mutable","name":"success","nameLocation":"7787:7:0","nodeType":"VariableDeclaration","scope":163,"src":"7782:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":115,"name":"bool","nodeType":"ElementaryTypeName","src":"7782:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":118,"mutability":"mutable","name":"returnData","nameLocation":"7809:10:0","nodeType":"VariableDeclaration","scope":163,"src":"7796:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":117,"name":"bytes","nodeType":"ElementaryTypeName","src":"7796:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":126,"initialValue":{"arguments":[{"id":124,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"7870:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":119,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104,"src":"7823:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7835:4:0","memberName":"call","nodeType":"MemberAccess","src":"7823:16:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":121,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"7847:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},"id":122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7854:14:0","memberName":"initCallAmount","nodeType":"MemberAccess","referencedDeclaration":14,"src":"7847:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"7823:46:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7823:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7781:94:0"},{"condition":{"id":128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7889:8:0","subExpression":{"id":127,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"7890:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":135,"nodeType":"IfStatement","src":"7885:116:0","trueBody":{"id":134,"nodeType":"Block","src":"7899:102:0","statements":[{"errorCall":{"arguments":[{"id":130,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"7959:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":131,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"7978:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":129,"name":"FailedContractInitialisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"7920:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["7950:7:0","7966:10:0"],"names":["emitter","revertData"],"nodeType":"FunctionCall","src":"7920:70:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":133,"nodeType":"RevertStatement","src":"7913:77:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":136,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"8015:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8021:7:0","memberName":"balance","nodeType":"MemberAccess","src":"8015:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8032:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8015:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":162,"nodeType":"IfStatement","src":"8011:409:0","trueBody":{"id":161,"nodeType":"Block","src":"8035:385:0","statements":[{"expression":{"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":140,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"8214:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":141,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"8223:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":142,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8213:21:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"","id":148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8278:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":143,"name":"refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"8237:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8251:4:0","memberName":"call","nodeType":"MemberAccess","src":"8237:18:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":145,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"8263:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8269:7:0","memberName":"balance","nodeType":"MemberAccess","src":"8263:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"8237:40:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8237:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"8213:68:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":151,"nodeType":"ExpressionStatement","src":"8213:68:0"},{"condition":{"id":153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8299:8:0","subExpression":{"id":152,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"8300:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":160,"nodeType":"IfStatement","src":"8295:115:0","trueBody":{"id":159,"nodeType":"Block","src":"8309:101:0","statements":[{"errorCall":{"arguments":[{"id":155,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"8364:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":156,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"8383:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":154,"name":"FailedEtherTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"8334:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["8355:7:0","8371:10:0"],"names":["emitter","revertData"],"nodeType":"FunctionCall","src":"8334:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":158,"nodeType":"RevertStatement","src":"8327:68:0"}]}}]}}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"6137:1166:0","text":" @dev Deploys and initialises a new contract via calling the `CREATE` opcode and using the\n creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. In order to\n save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount`\n is non-zero, `initCode` must have a `payable` constructor.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @param refundAddress The 20-byte address where any excess ether is returned to.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"98e81077","id":164,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreateAndInit","nameLocation":"7317:19:0","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"initCode","nameLocation":"7359:8:0","nodeType":"VariableDeclaration","scope":164,"src":"7346:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":93,"name":"bytes","nodeType":"ElementaryTypeName","src":"7346:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":96,"mutability":"mutable","name":"data","nameLocation":"7390:4:0","nodeType":"VariableDeclaration","scope":164,"src":"7377:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":95,"name":"bytes","nodeType":"ElementaryTypeName","src":"7377:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"values","nameLocation":"7418:6:0","nodeType":"VariableDeclaration","scope":164,"src":"7404:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":98,"nodeType":"UserDefinedTypeName","pathNode":{"id":97,"name":"Values","nameLocations":["7404:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"7404:6:0"},"referencedDeclaration":15,"src":"7404:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"},{"constant":false,"id":101,"mutability":"mutable","name":"refundAddress","nameLocation":"7442:13:0","nodeType":"VariableDeclaration","scope":164,"src":"7434:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"7434:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7336:125:0"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"newContract","nameLocation":"7494:11:0","nodeType":"VariableDeclaration","scope":164,"src":"7486:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"7486:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7485:21:0"},"scope":1713,"src":"7308:1118:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":187,"nodeType":"Block","src":"9698:127:0","statements":[{"expression":{"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":177,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"9708:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":179,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"9753:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":180,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"9769:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":181,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"9783:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},{"expression":{"id":182,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9806:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9810:6:0","memberName":"sender","nodeType":"MemberAccess","src":"9806:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":178,"name":"deployCreateAndInit","nodeType":"Identifier","overloadedDeclarations":[164,188],"referencedDeclaration":164,"src":"9722:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Values_$15_memory_ptr_$_t_address_$returns$_t_address_$","typeString":"function (bytes memory,bytes memory,struct CreateX.Values memory,address) returns (address)"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["9743:8:0","9763:4:0","9775:6:0","9791:13:0"],"names":["initCode","data","values","refundAddress"],"nodeType":"FunctionCall","src":"9722:96:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9708:110:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":186,"nodeType":"ExpressionStatement","src":"9708:110:0"}]},"documentation":{"id":165,"nodeType":"StructuredDocumentation","src":"8432:1093:0","text":" @dev Deploys and initialises a new contract via calling the `CREATE` opcode and using the\n creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n amounts `values`, and `msg.value` as inputs. In order to save deployment costs, we do not\n sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"31a7c8c8","id":188,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreateAndInit","nameLocation":"9539:19:0","nodeType":"FunctionDefinition","parameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"initCode","nameLocation":"9581:8:0","nodeType":"VariableDeclaration","scope":188,"src":"9568:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":166,"name":"bytes","nodeType":"ElementaryTypeName","src":"9568:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":169,"mutability":"mutable","name":"data","nameLocation":"9612:4:0","nodeType":"VariableDeclaration","scope":188,"src":"9599:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":168,"name":"bytes","nodeType":"ElementaryTypeName","src":"9599:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":172,"mutability":"mutable","name":"values","nameLocation":"9640:6:0","nodeType":"VariableDeclaration","scope":188,"src":"9626:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":171,"nodeType":"UserDefinedTypeName","pathNode":{"id":170,"name":"Values","nameLocations":["9626:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"9626:6:0"},"referencedDeclaration":15,"src":"9626:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"}],"src":"9558:94:0"},"returnParameters":{"id":176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":175,"mutability":"mutable","name":"newContract","nameLocation":"9685:11:0","nodeType":"VariableDeclaration","scope":188,"src":"9677:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":174,"name":"address","nodeType":"ElementaryTypeName","src":"9677:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9676:21:0"},"scope":1713,"src":"9530:295:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":240,"nodeType":"Block","src":"10836:1035:0","statements":[{"assignments":[199],"declarations":[{"constant":false,"id":199,"mutability":"mutable","name":"implementationInBytes","nameLocation":"10854:21:0","nodeType":"VariableDeclaration","scope":240,"src":"10846:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"},"typeName":{"id":198,"name":"bytes20","nodeType":"ElementaryTypeName","src":"10846:7:0","typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}},"visibility":"internal"}],"id":204,"initialValue":{"arguments":[{"id":202,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"10886:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10878:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":200,"name":"bytes20","nodeType":"ElementaryTypeName","src":"10878:7:0","typeDescriptions":{}}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10878:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}},"nodeType":"VariableDeclarationStatement","src":"10846:55:0"},{"AST":{"nativeSrc":"10936:511:0","nodeType":"YulBlock","src":"10936:511:0","statements":[{"nativeSrc":"10950:24:0","nodeType":"YulVariableDeclaration","src":"10950:24:0","value":{"arguments":[{"kind":"number","nativeSrc":"10969:4:0","nodeType":"YulLiteral","src":"10969:4:0","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"10963:5:0","nodeType":"YulIdentifier","src":"10963:5:0"},"nativeSrc":"10963:11:0","nodeType":"YulFunctionCall","src":"10963:11:0"},"variables":[{"name":"clone","nativeSrc":"10954:5:0","nodeType":"YulTypedName","src":"10954:5:0","type":""}]},{"expression":{"arguments":[{"name":"clone","nativeSrc":"11011:5:0","nodeType":"YulIdentifier","src":"11011:5:0"},{"hexValue":"3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000","kind":"string","nativeSrc":"11034:100:0","nodeType":"YulLiteral","src":"11034:100:0","type":""}],"functionName":{"name":"mstore","nativeSrc":"10987:6:0","nodeType":"YulIdentifier","src":"10987:6:0"},"nativeSrc":"10987:161:0","nodeType":"YulFunctionCall","src":"10987:161:0"},"nativeSrc":"10987:161:0","nodeType":"YulExpressionStatement","src":"10987:161:0"},{"expression":{"arguments":[{"arguments":[{"name":"clone","nativeSrc":"11172:5:0","nodeType":"YulIdentifier","src":"11172:5:0"},{"kind":"number","nativeSrc":"11179:4:0","nodeType":"YulLiteral","src":"11179:4:0","type":"","value":"0x14"}],"functionName":{"name":"add","nativeSrc":"11168:3:0","nodeType":"YulIdentifier","src":"11168:3:0"},"nativeSrc":"11168:16:0","nodeType":"YulFunctionCall","src":"11168:16:0"},{"name":"implementationInBytes","nativeSrc":"11186:21:0","nodeType":"YulIdentifier","src":"11186:21:0"}],"functionName":{"name":"mstore","nativeSrc":"11161:6:0","nodeType":"YulIdentifier","src":"11161:6:0"},"nativeSrc":"11161:47:0","nodeType":"YulFunctionCall","src":"11161:47:0"},"nativeSrc":"11161:47:0","nodeType":"YulExpressionStatement","src":"11161:47:0"},{"expression":{"arguments":[{"arguments":[{"name":"clone","nativeSrc":"11249:5:0","nodeType":"YulIdentifier","src":"11249:5:0"},{"kind":"number","nativeSrc":"11256:4:0","nodeType":"YulLiteral","src":"11256:4:0","type":"","value":"0x28"}],"functionName":{"name":"add","nativeSrc":"11245:3:0","nodeType":"YulIdentifier","src":"11245:3:0"},"nativeSrc":"11245:16:0","nodeType":"YulFunctionCall","src":"11245:16:0"},{"hexValue":"5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000","kind":"string","nativeSrc":"11279:100:0","nodeType":"YulLiteral","src":"11279:100:0","type":""}],"functionName":{"name":"mstore","nativeSrc":"11221:6:0","nodeType":"YulIdentifier","src":"11221:6:0"},"nativeSrc":"11221:172:0","nodeType":"YulFunctionCall","src":"11221:172:0"},"nativeSrc":"11221:172:0","nodeType":"YulExpressionStatement","src":"11221:172:0"},{"nativeSrc":"11406:31:0","nodeType":"YulAssignment","src":"11406:31:0","value":{"arguments":[{"kind":"number","nativeSrc":"11422:1:0","nodeType":"YulLiteral","src":"11422:1:0","type":"","value":"0"},{"name":"clone","nativeSrc":"11425:5:0","nodeType":"YulIdentifier","src":"11425:5:0"},{"kind":"number","nativeSrc":"11432:4:0","nodeType":"YulLiteral","src":"11432:4:0","type":"","value":"0x37"}],"functionName":{"name":"create","nativeSrc":"11415:6:0","nodeType":"YulIdentifier","src":"11415:6:0"},"nativeSrc":"11415:22:0","nodeType":"YulFunctionCall","src":"11415:22:0"},"variableNames":[{"name":"proxy","nativeSrc":"11406:5:0","nodeType":"YulIdentifier","src":"11406:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":199,"isOffset":false,"isSlot":false,"src":"11186:21:0","valueSize":1},{"declaration":196,"isOffset":false,"isSlot":false,"src":"11406:5:0","valueSize":1}],"flags":["memory-safe"],"id":205,"nodeType":"InlineAssembly","src":"10911:536:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":206,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":196,"src":"11460:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11477:1:0","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":208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11469:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":207,"name":"address","nodeType":"ElementaryTypeName","src":"11469:7:0","typeDescriptions":{}}},"id":210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11469:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11460:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":217,"nodeType":"IfStatement","src":"11456:97:0","trueBody":{"id":216,"nodeType":"Block","src":"11481:72:0","statements":[{"errorCall":{"arguments":[{"id":213,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"11535:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":212,"name":"FailedContractCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"11502:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["11526:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"11502:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":215,"nodeType":"RevertStatement","src":"11495:47:0"}]}},{"eventCall":{"arguments":[{"id":219,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":196,"src":"11598:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":218,"name":"ContractCreation","nodeType":"Identifier","overloadedDeclarations":[32,37],"referencedDeclaration":37,"src":"11567:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["11585:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"11567:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":221,"nodeType":"EmitStatement","src":"11562:43:0"},{"assignments":[223,225],"declarations":[{"constant":false,"id":223,"mutability":"mutable","name":"success","nameLocation":"11622:7:0","nodeType":"VariableDeclaration","scope":240,"src":"11617:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":222,"name":"bool","nodeType":"ElementaryTypeName","src":"11617:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":225,"mutability":"mutable","name":"returnData","nameLocation":"11644:10:0","nodeType":"VariableDeclaration","scope":240,"src":"11631:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":224,"name":"bytes","nodeType":"ElementaryTypeName","src":"11631:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":233,"initialValue":{"arguments":[{"id":231,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"11687:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":226,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":196,"src":"11658:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11664:4:0","memberName":"call","nodeType":"MemberAccess","src":"11658:10:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":228,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11676:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11680:5:0","memberName":"value","nodeType":"MemberAccess","src":"11676:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"11658:28:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11658:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"11616:76:0"},{"expression":{"arguments":[{"id":235,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"11766:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":236,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"11799:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":237,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"11839:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":234,"name":"_requireSuccessfulContractInitialisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"11702:40:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_bytes_memory_ptr_$_t_address_$returns$__$","typeString":"function (bool,bytes memory,address) view"}},"id":238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["11757:7:0","11787:10:0","11823:14:0"],"names":["success","returnData","implementation"],"nodeType":"FunctionCall","src":"11702:162:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":239,"nodeType":"ExpressionStatement","src":"11702:162:0"}]},"documentation":{"id":189,"nodeType":"StructuredDocumentation","src":"9831:891:0","text":" @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE` opcode, and initialises\n the implementation contract using the implementation address `implementation`, the initialisation\n code `data`, and `msg.value` as inputs. Note that if `msg.value` is non-zero, the initialiser\n function called via `data` must be `payable`.\n @param implementation The 20-byte implementation contract address.\n @param data The initialisation code that is passed to the deployed proxy contract.\n @return proxy The 20-byte address where the clone was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"f9664498","id":241,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreateClone","nameLocation":"10736:17:0","nodeType":"FunctionDefinition","parameters":{"id":194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":191,"mutability":"mutable","name":"implementation","nameLocation":"10762:14:0","nodeType":"VariableDeclaration","scope":241,"src":"10754:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":190,"name":"address","nodeType":"ElementaryTypeName","src":"10754:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":193,"mutability":"mutable","name":"data","nameLocation":"10791:4:0","nodeType":"VariableDeclaration","scope":241,"src":"10778:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":192,"name":"bytes","nodeType":"ElementaryTypeName","src":"10778:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10753:43:0"},"returnParameters":{"id":197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"proxy","nameLocation":"10829:5:0","nodeType":"VariableDeclaration","scope":241,"src":"10821:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"10821:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10820:15:0"},"scope":1713,"src":"10727:1144:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":557,"nodeType":"Block","src":"13222:2597:0","statements":[{"assignments":[252],"declarations":[{"constant":false,"id":252,"mutability":"mutable","name":"data","nameLocation":"13245:4:0","nodeType":"VariableDeclaration","scope":557,"src":"13232:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":251,"name":"bytes","nodeType":"ElementaryTypeName","src":"13232:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":253,"nodeType":"VariableDeclarationStatement","src":"13232:17:0"},{"assignments":[255],"declarations":[{"constant":false,"id":255,"mutability":"mutable","name":"len","nameLocation":"13266:3:0","nodeType":"VariableDeclaration","scope":557,"src":"13259:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":254,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13259:6:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":260,"initialValue":{"arguments":[{"hexValue":"30783934","id":258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13279:4:0","typeDescriptions":{"typeIdentifier":"t_rational_148_by_1","typeString":"int_const 148"},"value":"0x94"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_148_by_1","typeString":"int_const 148"}],"id":257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13272:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":256,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13272:6:0","typeDescriptions":{}}},"id":259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13272:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"13259:25:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":261,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13488:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13501:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":263,"name":"uint64","nodeType":"ElementaryTypeName","src":"13501:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":262,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13496:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13496:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13509:3:0","memberName":"max","nodeType":"MemberAccess","src":"13496:16:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13515:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13496:20:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13488:28:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":275,"nodeType":"IfStatement","src":"13484:101:0","trueBody":{"id":274,"nodeType":"Block","src":"13518:67:0","statements":[{"errorCall":{"arguments":[{"id":271,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"13567:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":270,"name":"InvalidNonceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"13539:17:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["13558:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"13539:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":273,"nodeType":"RevertStatement","src":"13532:42:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":276,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13755:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783030","id":277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13764:4:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"src":"13755:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":296,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"14049:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30783766","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14058:4:0","typeDescriptions":{"typeIdentifier":"t_rational_127_by_1","typeString":"int_const 127"},"value":"0x7f"},"src":"14049:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":316,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"14641:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14655:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":318,"name":"uint8","nodeType":"ElementaryTypeName","src":"14655:5:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":317,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14650:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14650:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14662:3:0","memberName":"max","nodeType":"MemberAccess","src":"14650:15:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14641:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":344,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"14782:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14796:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":346,"name":"uint16","nodeType":"ElementaryTypeName","src":"14796:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":345,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14791:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14791:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14804:3:0","memberName":"max","nodeType":"MemberAccess","src":"14791:16:0","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"14782:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":372,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"14925:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14939:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":374,"name":"uint24","nodeType":"ElementaryTypeName","src":"14939:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":373,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14934:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14934:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14947:3:0","memberName":"max","nodeType":"MemberAccess","src":"14934:16:0","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"14925:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":400,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15068:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15082:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":402,"name":"uint32","nodeType":"ElementaryTypeName","src":"15082:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":401,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15077:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15077:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15090:3:0","memberName":"max","nodeType":"MemberAccess","src":"15077:16:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15068:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":428,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15211:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15225:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":430,"name":"uint40","nodeType":"ElementaryTypeName","src":"15225:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":429,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15220:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15220:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15233:3:0","memberName":"max","nodeType":"MemberAccess","src":"15220:16:0","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"15211:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":456,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15354:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15368:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":458,"name":"uint48","nodeType":"ElementaryTypeName","src":"15368:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":457,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15363:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15363:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15376:3:0","memberName":"max","nodeType":"MemberAccess","src":"15363:16:0","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"15354:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":484,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15497:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15511:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":486,"name":"uint56","nodeType":"ElementaryTypeName","src":"15511:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":485,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15506:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15506:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15519:3:0","memberName":"max","nodeType":"MemberAccess","src":"15506:16:0","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"15497:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":532,"nodeType":"Block","src":"15636:106:0","statements":[{"expression":{"id":530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":512,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"15650:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786465","id":517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15681:4:0","typeDescriptions":{"typeIdentifier":"t_rational_222_by_1","typeString":"int_const 222"},"value":"0xde"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_222_by_1","typeString":"int_const 222"}],"id":516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15674:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":515,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15674:6:0","typeDescriptions":{}}},"id":518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15674:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":519,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"15688:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":520,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"15693:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783838","id":523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15710:4:0","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"0x88"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"}],"id":522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15703:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":521,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15703:6:0","typeDescriptions":{}}},"id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15703:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":527,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15724:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15717:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":525,"name":"uint64","nodeType":"ElementaryTypeName","src":"15717:6:0","typeDescriptions":{}}},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15717:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":513,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15657:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15661:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"15657:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15657:74:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"15650:81:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":531,"nodeType":"ExpressionStatement","src":"15650:81:0"}]},"id":533,"nodeType":"IfStatement","src":"15493:249:0","trueBody":{"id":511,"nodeType":"Block","src":"15524:106:0","statements":[{"expression":{"id":509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":491,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"15538:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786464","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15569:4:0","typeDescriptions":{"typeIdentifier":"t_rational_221_by_1","typeString":"int_const 221"},"value":"0xdd"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_221_by_1","typeString":"int_const 221"}],"id":495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15562:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":494,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15562:6:0","typeDescriptions":{}}},"id":497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15562:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":498,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"15576:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":499,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"15581:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783837","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15598:4:0","typeDescriptions":{"typeIdentifier":"t_rational_135_by_1","typeString":"int_const 135"},"value":"0x87"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_135_by_1","typeString":"int_const 135"}],"id":501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15591:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":500,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15591:6:0","typeDescriptions":{}}},"id":503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15591:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":506,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15612:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15605:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":504,"name":"uint56","nodeType":"ElementaryTypeName","src":"15605:6:0","typeDescriptions":{}}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15605:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint56","typeString":"uint56"}],"expression":{"id":492,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15545:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15549:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"15545:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15545:74:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"15538:81:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":510,"nodeType":"ExpressionStatement","src":"15538:81:0"}]}},"id":534,"nodeType":"IfStatement","src":"15350:392:0","trueBody":{"id":483,"nodeType":"Block","src":"15381:106:0","statements":[{"expression":{"id":481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":463,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"15395:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786463","id":468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15426:4:0","typeDescriptions":{"typeIdentifier":"t_rational_220_by_1","typeString":"int_const 220"},"value":"0xdc"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_220_by_1","typeString":"int_const 220"}],"id":467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15419:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":466,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15419:6:0","typeDescriptions":{}}},"id":469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15419:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":470,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"15433:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":471,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"15438:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783836","id":474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15455:4:0","typeDescriptions":{"typeIdentifier":"t_rational_134_by_1","typeString":"int_const 134"},"value":"0x86"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_134_by_1","typeString":"int_const 134"}],"id":473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15448:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":472,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15448:6:0","typeDescriptions":{}}},"id":475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15448:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":478,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15469:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15462:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":476,"name":"uint48","nodeType":"ElementaryTypeName","src":"15462:6:0","typeDescriptions":{}}},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15462:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":464,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15402:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15406:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"15402:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15402:74:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"15395:81:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":482,"nodeType":"ExpressionStatement","src":"15395:81:0"}]}},"id":535,"nodeType":"IfStatement","src":"15207:535:0","trueBody":{"id":455,"nodeType":"Block","src":"15238:106:0","statements":[{"expression":{"id":453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":435,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"15252:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786462","id":440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15283:4:0","typeDescriptions":{"typeIdentifier":"t_rational_219_by_1","typeString":"int_const 219"},"value":"0xdb"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_219_by_1","typeString":"int_const 219"}],"id":439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15276:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":438,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15276:6:0","typeDescriptions":{}}},"id":441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15276:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":442,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"15290:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":443,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"15295:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783835","id":446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15312:4:0","typeDescriptions":{"typeIdentifier":"t_rational_133_by_1","typeString":"int_const 133"},"value":"0x85"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_133_by_1","typeString":"int_const 133"}],"id":445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15305:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":444,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15305:6:0","typeDescriptions":{}}},"id":447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15305:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":450,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15326:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15319:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":448,"name":"uint40","nodeType":"ElementaryTypeName","src":"15319:6:0","typeDescriptions":{}}},"id":451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15319:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint40","typeString":"uint40"}],"expression":{"id":436,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15259:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15263:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"15259:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15259:74:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"15252:81:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":454,"nodeType":"ExpressionStatement","src":"15252:81:0"}]}},"id":536,"nodeType":"IfStatement","src":"15064:678:0","trueBody":{"id":427,"nodeType":"Block","src":"15095:106:0","statements":[{"expression":{"id":425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":407,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"15109:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786461","id":412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15140:4:0","typeDescriptions":{"typeIdentifier":"t_rational_218_by_1","typeString":"int_const 218"},"value":"0xda"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_218_by_1","typeString":"int_const 218"}],"id":411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15133:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":410,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15133:6:0","typeDescriptions":{}}},"id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15133:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":414,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"15147:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":415,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"15152:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783834","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15169:4:0","typeDescriptions":{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"},"value":"0x84"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_132_by_1","typeString":"int_const 132"}],"id":417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15162:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":416,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15162:6:0","typeDescriptions":{}}},"id":419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15162:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":422,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15183:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15176:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":420,"name":"uint32","nodeType":"ElementaryTypeName","src":"15176:6:0","typeDescriptions":{}}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15176:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":408,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15116:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15120:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"15116:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15116:74:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"15109:81:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":426,"nodeType":"ExpressionStatement","src":"15109:81:0"}]}},"id":537,"nodeType":"IfStatement","src":"14921:821:0","trueBody":{"id":399,"nodeType":"Block","src":"14952:106:0","statements":[{"expression":{"id":397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":379,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"14966:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786439","id":384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14997:4:0","typeDescriptions":{"typeIdentifier":"t_rational_217_by_1","typeString":"int_const 217"},"value":"0xd9"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_217_by_1","typeString":"int_const 217"}],"id":383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14990:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":382,"name":"bytes1","nodeType":"ElementaryTypeName","src":"14990:6:0","typeDescriptions":{}}},"id":385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14990:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":386,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"15004:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":387,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"15009:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783833","id":390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15026:4:0","typeDescriptions":{"typeIdentifier":"t_rational_131_by_1","typeString":"int_const 131"},"value":"0x83"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_131_by_1","typeString":"int_const 131"}],"id":389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15019:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":388,"name":"bytes1","nodeType":"ElementaryTypeName","src":"15019:6:0","typeDescriptions":{}}},"id":391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15019:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":394,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"15040:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15033:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":392,"name":"uint24","nodeType":"ElementaryTypeName","src":"15033:6:0","typeDescriptions":{}}},"id":395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15033:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint24","typeString":"uint24"}],"expression":{"id":380,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14973:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14977:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"14973:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14973:74:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14966:81:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":398,"nodeType":"ExpressionStatement","src":"14966:81:0"}]}},"id":538,"nodeType":"IfStatement","src":"14778:964:0","trueBody":{"id":371,"nodeType":"Block","src":"14809:106:0","statements":[{"expression":{"id":369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":351,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"14823:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786438","id":356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14854:4:0","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"0xd8"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"}],"id":355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14847:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":354,"name":"bytes1","nodeType":"ElementaryTypeName","src":"14847:6:0","typeDescriptions":{}}},"id":357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14847:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":358,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"14861:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":359,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"14866:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783832","id":362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14883:4:0","typeDescriptions":{"typeIdentifier":"t_rational_130_by_1","typeString":"int_const 130"},"value":"0x82"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_130_by_1","typeString":"int_const 130"}],"id":361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14876:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":360,"name":"bytes1","nodeType":"ElementaryTypeName","src":"14876:6:0","typeDescriptions":{}}},"id":363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14876:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":366,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"14897:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14890:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":364,"name":"uint16","nodeType":"ElementaryTypeName","src":"14890:6:0","typeDescriptions":{}}},"id":367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14890:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":352,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14830:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14834:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"14830:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14830:74:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14823:81:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":370,"nodeType":"ExpressionStatement","src":"14823:81:0"}]}},"id":539,"nodeType":"IfStatement","src":"14637:1105:0","trueBody":{"id":343,"nodeType":"Block","src":"14667:105:0","statements":[{"expression":{"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":323,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"14681:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786437","id":328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14712:4:0","typeDescriptions":{"typeIdentifier":"t_rational_215_by_1","typeString":"int_const 215"},"value":"0xd7"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_215_by_1","typeString":"int_const 215"}],"id":327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14705:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":326,"name":"bytes1","nodeType":"ElementaryTypeName","src":"14705:6:0","typeDescriptions":{}}},"id":329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14705:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":330,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"14719:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":331,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"14724:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783831","id":334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14741:4:0","typeDescriptions":{"typeIdentifier":"t_rational_129_by_1","typeString":"int_const 129"},"value":"0x81"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_129_by_1","typeString":"int_const 129"}],"id":333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14734:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":332,"name":"bytes1","nodeType":"ElementaryTypeName","src":"14734:6:0","typeDescriptions":{}}},"id":335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14734:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":338,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"14754:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14748:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":336,"name":"uint8","nodeType":"ElementaryTypeName","src":"14748:5:0","typeDescriptions":{}}},"id":339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14748:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":324,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14688:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14692:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"14688:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14688:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14681:80:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":342,"nodeType":"ExpressionStatement","src":"14681:80:0"}]}},"id":540,"nodeType":"IfStatement","src":"14045:1697:0","trueBody":{"id":315,"nodeType":"Block","src":"14064:91:0","statements":[{"expression":{"id":313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":299,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"14078:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786436","id":304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14109:4:0","typeDescriptions":{"typeIdentifier":"t_rational_214_by_1","typeString":"int_const 214"},"value":"0xd6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_214_by_1","typeString":"int_const 214"}],"id":303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14102:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":302,"name":"bytes1","nodeType":"ElementaryTypeName","src":"14102:6:0","typeDescriptions":{}}},"id":305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14102:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":306,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"14116:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":307,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"14121:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":310,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"14137:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14131:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":308,"name":"uint8","nodeType":"ElementaryTypeName","src":"14131:5:0","typeDescriptions":{}}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14131:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":300,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14085:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14089:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"14085:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14085:59:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14078:66:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":314,"nodeType":"ExpressionStatement","src":"14078:66:0"}]}},"id":541,"nodeType":"IfStatement","src":"13751:1991:0","trueBody":{"id":295,"nodeType":"Block","src":"13770:91:0","statements":[{"expression":{"id":293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":279,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"13784:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30786436","id":284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13815:4:0","typeDescriptions":{"typeIdentifier":"t_rational_214_by_1","typeString":"int_const 214"},"value":"0xd6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_214_by_1","typeString":"int_const 214"}],"id":283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13808:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":282,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13808:6:0","typeDescriptions":{}}},"id":285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13808:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":286,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"13822:3:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"id":287,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"13827:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30783830","id":290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13844:4:0","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"}],"id":289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13837:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":288,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13837:6:0","typeDescriptions":{}}},"id":291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13837:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"expression":{"id":280,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13791:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13795:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"13791:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13791:59:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"13784:66:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":294,"nodeType":"ExpressionStatement","src":"13784:66:0"}]}},{"expression":{"id":555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":542,"name":"computedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"15752:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":550,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"15804:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":549,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15794:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15794:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15786:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":547,"name":"uint256","nodeType":"ElementaryTypeName","src":"15786:7:0","typeDescriptions":{}}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15786:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15778:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":545,"name":"uint160","nodeType":"ElementaryTypeName","src":"15778:7:0","typeDescriptions":{}}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15778:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15770:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":543,"name":"address","nodeType":"ElementaryTypeName","src":"15770:7:0","typeDescriptions":{}}},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15770:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15752:60:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":556,"nodeType":"ExpressionStatement","src":"15752:60:0"}]},"documentation":{"id":242,"nodeType":"StructuredDocumentation","src":"11877:1231:0","text":" @dev Returns the address where a contract will be stored if deployed via `deployer` using\n the `CREATE` opcode. For the specification of the Recursive Length Prefix (RLP) encoding\n scheme, please refer to p. 19 of the Ethereum Yellow Paper (https://web.archive.org/web/20230921110603/https://ethereum.github.io/yellowpaper/paper.pdf)\n and the Ethereum Wiki (https://web.archive.org/web/20230921112807/https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/).\n For further insights also, see the following issue: https://web.archive.org/web/20230921112943/https://github.com/transmissions11/solmate/issues/207.\n Based on the EIP-161 (https://web.archive.org/web/20230921113207/https://raw.githubusercontent.com/ethereum/EIPs/master/EIPS/eip-161.md) specification,\n all contract accounts on the Ethereum mainnet are initiated with `nonce = 1`. Thus, the\n first contract address created by another contract is calculated with a non-zero nonce.\n @param deployer The 20-byte deployer address.\n @param nonce The next 32-byte nonce of the deployer address.\n @return computedAddress The 20-byte address where a contract will be stored."},"functionSelector":"74637a7a","id":558,"implemented":true,"kind":"function","modifiers":[],"name":"computeCreateAddress","nameLocation":"13122:20:0","nodeType":"FunctionDefinition","parameters":{"id":247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"deployer","nameLocation":"13151:8:0","nodeType":"VariableDeclaration","scope":558,"src":"13143:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":243,"name":"address","nodeType":"ElementaryTypeName","src":"13143:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":246,"mutability":"mutable","name":"nonce","nameLocation":"13169:5:0","nodeType":"VariableDeclaration","scope":558,"src":"13161:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":245,"name":"uint256","nodeType":"ElementaryTypeName","src":"13161:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13142:33:0"},"returnParameters":{"id":250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":249,"mutability":"mutable","name":"computedAddress","nameLocation":"13205:15:0","nodeType":"VariableDeclaration","scope":558,"src":"13197:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":248,"name":"address","nodeType":"ElementaryTypeName","src":"13197:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13196:25:0"},"scope":1713,"src":"13113:2706:0","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":573,"nodeType":"Block","src":"17095:88:0","statements":[{"expression":{"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":566,"name":"computedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"17105:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":568,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"17155:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":569,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"17169:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":567,"name":"computeCreateAddress","nodeType":"Identifier","overloadedDeclarations":[558,574],"referencedDeclaration":558,"src":"17123:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_address_$","typeString":"function (address,uint256) view returns (address)"}},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["17145:8:0","17162:5:0"],"names":["deployer","nonce"],"nodeType":"FunctionCall","src":"17123:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17105:71:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":572,"nodeType":"ExpressionStatement","src":"17105:71:0"}]},"documentation":{"id":559,"nodeType":"StructuredDocumentation","src":"15825:1174:0","text":" @dev Returns the address where a contract will be stored if deployed via this contract\n using the `CREATE` opcode. For the specification of the Recursive Length Prefix (RLP)\n encoding scheme, please refer to p. 19 of the Ethereum Yellow Paper (https://web.archive.org/web/20230921110603/https://ethereum.github.io/yellowpaper/paper.pdf)\n and the Ethereum Wiki (https://web.archive.org/web/20230921112807/https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/).\n For further insights also, see the following issue: https://web.archive.org/web/20230921112943/https://github.com/transmissions11/solmate/issues/207.\n Based on the EIP-161 (https://web.archive.org/web/20230921113207/https://raw.githubusercontent.com/ethereum/EIPs/master/EIPS/eip-161.md) specification,\n all contract accounts on the Ethereum mainnet are initiated with `nonce = 1`. Thus, the\n first contract address created by another contract is calculated with a non-zero nonce.\n @param nonce The next 32-byte nonce of this contract.\n @return computedAddress The 20-byte address where a contract will be stored."},"functionSelector":"28ddd046","id":574,"implemented":true,"kind":"function","modifiers":[],"name":"computeCreateAddress","nameLocation":"17013:20:0","nodeType":"FunctionDefinition","parameters":{"id":562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":561,"mutability":"mutable","name":"nonce","nameLocation":"17042:5:0","nodeType":"VariableDeclaration","scope":574,"src":"17034:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":560,"name":"uint256","nodeType":"ElementaryTypeName","src":"17034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17033:15:0"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":564,"mutability":"mutable","name":"computedAddress","nameLocation":"17078:15:0","nodeType":"VariableDeclaration","scope":574,"src":"17070:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":563,"name":"address","nodeType":"ElementaryTypeName","src":"17070:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17069:25:0"},"scope":1713,"src":"17004:179:0","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":600,"nodeType":"Block","src":"18148:353:0","statements":[{"assignments":[585],"declarations":[{"constant":false,"id":585,"mutability":"mutable","name":"guardedSalt","nameLocation":"18166:11:0","nodeType":"VariableDeclaration","scope":600,"src":"18158:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":584,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18158:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":589,"initialValue":{"arguments":[{"id":587,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":577,"src":"18194:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":586,"name":"_guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"18180:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["18188:4:0"],"names":["salt"],"nodeType":"FunctionCall","src":"18180:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"18158:42:0"},{"AST":{"nativeSrc":"18235:110:0","nodeType":"YulBlock","src":"18235:110:0","statements":[{"nativeSrc":"18249:86:0","nodeType":"YulAssignment","src":"18249:86:0","value":{"arguments":[{"arguments":[],"functionName":{"name":"callvalue","nativeSrc":"18272:9:0","nodeType":"YulIdentifier","src":"18272:9:0"},"nativeSrc":"18272:11:0","nodeType":"YulFunctionCall","src":"18272:11:0"},{"arguments":[{"name":"initCode","nativeSrc":"18289:8:0","nodeType":"YulIdentifier","src":"18289:8:0"},{"kind":"number","nativeSrc":"18299:4:0","nodeType":"YulLiteral","src":"18299:4:0","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18285:3:0","nodeType":"YulIdentifier","src":"18285:3:0"},"nativeSrc":"18285:19:0","nodeType":"YulFunctionCall","src":"18285:19:0"},{"arguments":[{"name":"initCode","nativeSrc":"18312:8:0","nodeType":"YulIdentifier","src":"18312:8:0"}],"functionName":{"name":"mload","nativeSrc":"18306:5:0","nodeType":"YulIdentifier","src":"18306:5:0"},"nativeSrc":"18306:15:0","nodeType":"YulFunctionCall","src":"18306:15:0"},{"name":"guardedSalt","nativeSrc":"18323:11:0","nodeType":"YulIdentifier","src":"18323:11:0"}],"functionName":{"name":"create2","nativeSrc":"18264:7:0","nodeType":"YulIdentifier","src":"18264:7:0"},"nativeSrc":"18264:71:0","nodeType":"YulFunctionCall","src":"18264:71:0"},"variableNames":[{"name":"newContract","nativeSrc":"18249:11:0","nodeType":"YulIdentifier","src":"18249:11:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":585,"isOffset":false,"isSlot":false,"src":"18323:11:0","valueSize":1},{"declaration":579,"isOffset":false,"isSlot":false,"src":"18289:8:0","valueSize":1},{"declaration":579,"isOffset":false,"isSlot":false,"src":"18312:8:0","valueSize":1},{"declaration":582,"isOffset":false,"isSlot":false,"src":"18249:11:0","valueSize":1}],"flags":["memory-safe"],"id":590,"nodeType":"InlineAssembly","src":"18210:135:0"},{"expression":{"arguments":[{"id":592,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"18403:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":591,"name":"_requireSuccessfulContractCreation","nodeType":"Identifier","overloadedDeclarations":[1661,1686],"referencedDeclaration":1686,"src":"18354:34:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["18390:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"18354:62:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":594,"nodeType":"ExpressionStatement","src":"18354:62:0"},{"eventCall":{"arguments":[{"id":596,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"18462:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":597,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":585,"src":"18481:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":595,"name":"ContractCreation","nodeType":"Identifier","overloadedDeclarations":[32,37],"referencedDeclaration":32,"src":"18431:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["18449:11:0","18475:4:0"],"names":["newContract","salt"],"nodeType":"FunctionCall","src":"18431:63:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":599,"nodeType":"EmitStatement","src":"18426:68:0"}]},"documentation":{"id":575,"nodeType":"StructuredDocumentation","src":"17472:566:0","text":" @dev Deploys a new contract via calling the `CREATE2` opcode and using the salt value `salt`,\n the creation bytecode `initCode`, and `msg.value` as inputs. In order to save deployment costs,\n we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero, `initCode`\n must have a `payable` constructor.\n @param salt The 32-byte random value used to create the contract address.\n @param initCode The creation bytecode.\n @return newContract The 20-byte address where the contract was deployed."},"functionSelector":"26307668","id":601,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate2","nameLocation":"18052:13:0","nodeType":"FunctionDefinition","parameters":{"id":580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"salt","nameLocation":"18074:4:0","nodeType":"VariableDeclaration","scope":601,"src":"18066:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18066:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":579,"mutability":"mutable","name":"initCode","nameLocation":"18093:8:0","nodeType":"VariableDeclaration","scope":601,"src":"18080:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":578,"name":"bytes","nodeType":"ElementaryTypeName","src":"18080:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18065:37:0"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":582,"mutability":"mutable","name":"newContract","nameLocation":"18135:11:0","nodeType":"VariableDeclaration","scope":601,"src":"18127:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"18127:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18126:21:0"},"scope":1713,"src":"18043:458:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":617,"nodeType":"Block","src":"19229:218:0","statements":[{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":609,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"19368:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":611,"name":"_generateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"19403:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19403:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":613,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"19430:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":610,"name":"deployCreate2","nodeType":"Identifier","overloadedDeclarations":[601,618],"referencedDeclaration":601,"src":"19382:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes32,bytes memory) returns (address)"}},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["19397:4:0","19420:8:0"],"names":["salt","initCode"],"nodeType":"FunctionCall","src":"19382:58:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19368:72:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":616,"nodeType":"ExpressionStatement","src":"19368:72:0"}]},"documentation":{"id":602,"nodeType":"StructuredDocumentation","src":"18507:626:0","text":" @dev Deploys a new contract via calling the `CREATE2` opcode and using the creation bytecode\n `initCode` and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a\n diverse selection of block and transaction properties. This approach does not guarantee true\n randomness! In order to save deployment costs, we do not sanity check the `initCode` length.\n Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor.\n @param initCode The creation bytecode.\n @return newContract The 20-byte address where the contract was deployed."},"functionSelector":"26a32fc7","id":618,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate2","nameLocation":"19147:13:0","nodeType":"FunctionDefinition","parameters":{"id":605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"initCode","nameLocation":"19174:8:0","nodeType":"VariableDeclaration","scope":618,"src":"19161:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":603,"name":"bytes","nodeType":"ElementaryTypeName","src":"19161:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19160:23:0"},"returnParameters":{"id":608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":607,"mutability":"mutable","name":"newContract","nameLocation":"19216:11:0","nodeType":"VariableDeclaration","scope":618,"src":"19208:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"19208:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19207:21:0"},"scope":1713,"src":"19138:309:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":699,"nodeType":"Block","src":"20951:1004:0","statements":[{"assignments":[636],"declarations":[{"constant":false,"id":636,"mutability":"mutable","name":"guardedSalt","nameLocation":"20969:11:0","nodeType":"VariableDeclaration","scope":699,"src":"20961:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":635,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20961:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":640,"initialValue":{"arguments":[{"id":638,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":621,"src":"20997:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":637,"name":"_guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"20983:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["20991:4:0"],"names":["salt"],"nodeType":"FunctionCall","src":"20983:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"20961:42:0"},{"AST":{"nativeSrc":"21038:112:0","nodeType":"YulBlock","src":"21038:112:0","statements":[{"nativeSrc":"21052:88:0","nodeType":"YulAssignment","src":"21052:88:0","value":{"arguments":[{"arguments":[{"name":"values","nativeSrc":"21081:6:0","nodeType":"YulIdentifier","src":"21081:6:0"}],"functionName":{"name":"mload","nativeSrc":"21075:5:0","nodeType":"YulIdentifier","src":"21075:5:0"},"nativeSrc":"21075:13:0","nodeType":"YulFunctionCall","src":"21075:13:0"},{"arguments":[{"name":"initCode","nativeSrc":"21094:8:0","nodeType":"YulIdentifier","src":"21094:8:0"},{"kind":"number","nativeSrc":"21104:4:0","nodeType":"YulLiteral","src":"21104:4:0","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21090:3:0","nodeType":"YulIdentifier","src":"21090:3:0"},"nativeSrc":"21090:19:0","nodeType":"YulFunctionCall","src":"21090:19:0"},{"arguments":[{"name":"initCode","nativeSrc":"21117:8:0","nodeType":"YulIdentifier","src":"21117:8:0"}],"functionName":{"name":"mload","nativeSrc":"21111:5:0","nodeType":"YulIdentifier","src":"21111:5:0"},"nativeSrc":"21111:15:0","nodeType":"YulFunctionCall","src":"21111:15:0"},{"name":"guardedSalt","nativeSrc":"21128:11:0","nodeType":"YulIdentifier","src":"21128:11:0"}],"functionName":{"name":"create2","nativeSrc":"21067:7:0","nodeType":"YulIdentifier","src":"21067:7:0"},"nativeSrc":"21067:73:0","nodeType":"YulFunctionCall","src":"21067:73:0"},"variableNames":[{"name":"newContract","nativeSrc":"21052:11:0","nodeType":"YulIdentifier","src":"21052:11:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":636,"isOffset":false,"isSlot":false,"src":"21128:11:0","valueSize":1},{"declaration":623,"isOffset":false,"isSlot":false,"src":"21094:8:0","valueSize":1},{"declaration":623,"isOffset":false,"isSlot":false,"src":"21117:8:0","valueSize":1},{"declaration":633,"isOffset":false,"isSlot":false,"src":"21052:11:0","valueSize":1},{"declaration":628,"isOffset":false,"isSlot":false,"src":"21081:6:0","valueSize":1}],"flags":["memory-safe"],"id":641,"nodeType":"InlineAssembly","src":"21013:137:0"},{"expression":{"arguments":[{"id":643,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"21208:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":642,"name":"_requireSuccessfulContractCreation","nodeType":"Identifier","overloadedDeclarations":[1661,1686],"referencedDeclaration":1686,"src":"21159:34:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["21195:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"21159:62:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":645,"nodeType":"ExpressionStatement","src":"21159:62:0"},{"eventCall":{"arguments":[{"id":647,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"21267:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":648,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"21286:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":646,"name":"ContractCreation","nodeType":"Identifier","overloadedDeclarations":[32,37],"referencedDeclaration":32,"src":"21236:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["21254:11:0","21280:4:0"],"names":["newContract","salt"],"nodeType":"FunctionCall","src":"21236:63:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":650,"nodeType":"EmitStatement","src":"21231:68:0"},{"assignments":[652,654],"declarations":[{"constant":false,"id":652,"mutability":"mutable","name":"success","nameLocation":"21316:7:0","nodeType":"VariableDeclaration","scope":699,"src":"21311:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":651,"name":"bool","nodeType":"ElementaryTypeName","src":"21311:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":654,"mutability":"mutable","name":"returnData","nameLocation":"21338:10:0","nodeType":"VariableDeclaration","scope":699,"src":"21325:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":653,"name":"bytes","nodeType":"ElementaryTypeName","src":"21325:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":662,"initialValue":{"arguments":[{"id":660,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"21399:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":655,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"21352:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21364:4:0","memberName":"call","nodeType":"MemberAccess","src":"21352:16:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":657,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":628,"src":"21376:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},"id":658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21383:14:0","memberName":"initCallAmount","nodeType":"MemberAccess","referencedDeclaration":14,"src":"21376:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"21352:46:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21352:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"21310:94:0"},{"condition":{"id":664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21418:8:0","subExpression":{"id":663,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"21419:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":671,"nodeType":"IfStatement","src":"21414:116:0","trueBody":{"id":670,"nodeType":"Block","src":"21428:102:0","statements":[{"errorCall":{"arguments":[{"id":666,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"21488:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":667,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"21507:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":665,"name":"FailedContractInitialisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"21449:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["21479:7:0","21495:10:0"],"names":["emitter","revertData"],"nodeType":"FunctionCall","src":"21449:70:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":669,"nodeType":"RevertStatement","src":"21442:77:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":672,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"21544:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21550:7:0","memberName":"balance","nodeType":"MemberAccess","src":"21544:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21561:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21544:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":698,"nodeType":"IfStatement","src":"21540:409:0","trueBody":{"id":697,"nodeType":"Block","src":"21564:385:0","statements":[{"expression":{"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":676,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"21743:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":677,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"21752:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":678,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"21742:21:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"","id":684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"21807:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":679,"name":"refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"21766:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21780:4:0","memberName":"call","nodeType":"MemberAccess","src":"21766:18:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":681,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"21792:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21798:7:0","memberName":"balance","nodeType":"MemberAccess","src":"21792:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"21766:40:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21766:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"21742:68:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":687,"nodeType":"ExpressionStatement","src":"21742:68:0"},{"condition":{"id":689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21828:8:0","subExpression":{"id":688,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"21829:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":696,"nodeType":"IfStatement","src":"21824:115:0","trueBody":{"id":695,"nodeType":"Block","src":"21838:101:0","statements":[{"errorCall":{"arguments":[{"id":691,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"21893:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":692,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"21912:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":690,"name":"FailedEtherTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"21863:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["21884:7:0","21900:10:0"],"names":["emitter","revertData"],"nodeType":"FunctionCall","src":"21863:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":694,"nodeType":"RevertStatement","src":"21856:68:0"}]}}]}}]},"documentation":{"id":619,"nodeType":"StructuredDocumentation","src":"19453:1271:0","text":" @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n salt value `salt`, the creation bytecode `initCode`, the initialisation code `data`, the struct\n for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs.\n In order to save deployment costs, we do not sanity check the `initCode` length. Note that if\n `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor.\n @param salt The 32-byte random value used to create the contract address.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @param refundAddress The 20-byte address where any excess ether is returned to.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"a7db93f2","id":700,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate2AndInit","nameLocation":"20738:20:0","nodeType":"FunctionDefinition","parameters":{"id":631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":621,"mutability":"mutable","name":"salt","nameLocation":"20776:4:0","nodeType":"VariableDeclaration","scope":700,"src":"20768:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20768:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":623,"mutability":"mutable","name":"initCode","nameLocation":"20803:8:0","nodeType":"VariableDeclaration","scope":700,"src":"20790:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":622,"name":"bytes","nodeType":"ElementaryTypeName","src":"20790:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":625,"mutability":"mutable","name":"data","nameLocation":"20834:4:0","nodeType":"VariableDeclaration","scope":700,"src":"20821:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":624,"name":"bytes","nodeType":"ElementaryTypeName","src":"20821:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":628,"mutability":"mutable","name":"values","nameLocation":"20862:6:0","nodeType":"VariableDeclaration","scope":700,"src":"20848:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":627,"nodeType":"UserDefinedTypeName","pathNode":{"id":626,"name":"Values","nameLocations":["20848:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"20848:6:0"},"referencedDeclaration":15,"src":"20848:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"},{"constant":false,"id":630,"mutability":"mutable","name":"refundAddress","nameLocation":"20886:13:0","nodeType":"VariableDeclaration","scope":700,"src":"20878:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":629,"name":"address","nodeType":"ElementaryTypeName","src":"20878:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20758:147:0"},"returnParameters":{"id":634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":633,"mutability":"mutable","name":"newContract","nameLocation":"20938:11:0","nodeType":"VariableDeclaration","scope":700,"src":"20930:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":632,"name":"address","nodeType":"ElementaryTypeName","src":"20930:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20929:21:0"},"scope":1713,"src":"20729:1226:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":726,"nodeType":"Block","src":"23351:346:0","statements":[{"expression":{"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":715,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":713,"src":"23497:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":717,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"23552:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":718,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"23580:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":719,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":707,"src":"23608:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":720,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"23634:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},{"expression":{"id":721,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23669:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23673:6:0","memberName":"sender","nodeType":"MemberAccess","src":"23669:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":716,"name":"deployCreate2AndInit","nodeType":"Identifier","overloadedDeclarations":[700,727,754,780],"referencedDeclaration":700,"src":"23511:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Values_$15_memory_ptr_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes memory,bytes memory,struct CreateX.Values memory,address) returns (address)"}},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["23546:4:0","23570:8:0","23602:4:0","23626:6:0","23654:13:0"],"names":["salt","initCode","data","values","refundAddress"],"nodeType":"FunctionCall","src":"23511:179:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23497:193:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":725,"nodeType":"ExpressionStatement","src":"23497:193:0"}]},"documentation":{"id":701,"nodeType":"StructuredDocumentation","src":"21961:1194:0","text":" @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n salt value `salt`, creation bytecode `initCode`, the initialisation code `data`, the struct for\n the `payable` amounts `values`, and `msg.value` as inputs. In order to save deployment costs,\n we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\n @param salt The 32-byte random value used to create the contract address.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"e96deee4","id":727,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate2AndInit","nameLocation":"23169:20:0","nodeType":"FunctionDefinition","parameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":703,"mutability":"mutable","name":"salt","nameLocation":"23207:4:0","nodeType":"VariableDeclaration","scope":727,"src":"23199:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":702,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23199:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":705,"mutability":"mutable","name":"initCode","nameLocation":"23234:8:0","nodeType":"VariableDeclaration","scope":727,"src":"23221:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":704,"name":"bytes","nodeType":"ElementaryTypeName","src":"23221:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":707,"mutability":"mutable","name":"data","nameLocation":"23265:4:0","nodeType":"VariableDeclaration","scope":727,"src":"23252:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":706,"name":"bytes","nodeType":"ElementaryTypeName","src":"23252:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":710,"mutability":"mutable","name":"values","nameLocation":"23293:6:0","nodeType":"VariableDeclaration","scope":727,"src":"23279:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":709,"nodeType":"UserDefinedTypeName","pathNode":{"id":708,"name":"Values","nameLocations":["23279:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"23279:6:0"},"referencedDeclaration":15,"src":"23279:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"}],"src":"23189:116:0"},"returnParameters":{"id":714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":713,"mutability":"mutable","name":"newContract","nameLocation":"23338:11:0","nodeType":"VariableDeclaration","scope":727,"src":"23330:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":712,"name":"address","nodeType":"ElementaryTypeName","src":"23330:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23329:21:0"},"scope":1713,"src":"23160:537:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":753,"nodeType":"Block","src":"25247:360:0","statements":[{"expression":{"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":742,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":740,"src":"25393:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":744,"name":"_generateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"25448:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25448:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":746,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":730,"src":"25487:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":747,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"25515:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":748,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":735,"src":"25541:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},{"id":749,"name":"refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"25576:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":743,"name":"deployCreate2AndInit","nodeType":"Identifier","overloadedDeclarations":[700,727,754,780],"referencedDeclaration":700,"src":"25407:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Values_$15_memory_ptr_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes memory,bytes memory,struct CreateX.Values memory,address) returns (address)"}},"id":750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["25442:4:0","25477:8:0","25509:4:0","25533:6:0","25561:13:0"],"names":["salt","initCode","data","values","refundAddress"],"nodeType":"FunctionCall","src":"25407:193:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"25393:207:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":752,"nodeType":"ExpressionStatement","src":"25393:207:0"}]},"documentation":{"id":728,"nodeType":"StructuredDocumentation","src":"23703:1339:0","text":" @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. The salt value\n is calculated pseudo-randomly using a diverse selection of block and transaction properties.\n This approach does not guarantee true randomness! In order to save deployment costs, we do not\n sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode`\n must have a `payable` constructor.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @param refundAddress The 20-byte address where any excess ether is returned to.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"e437252a","id":754,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate2AndInit","nameLocation":"25056:20:0","nodeType":"FunctionDefinition","parameters":{"id":738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":730,"mutability":"mutable","name":"initCode","nameLocation":"25099:8:0","nodeType":"VariableDeclaration","scope":754,"src":"25086:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":729,"name":"bytes","nodeType":"ElementaryTypeName","src":"25086:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":732,"mutability":"mutable","name":"data","nameLocation":"25130:4:0","nodeType":"VariableDeclaration","scope":754,"src":"25117:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":731,"name":"bytes","nodeType":"ElementaryTypeName","src":"25117:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":735,"mutability":"mutable","name":"values","nameLocation":"25158:6:0","nodeType":"VariableDeclaration","scope":754,"src":"25144:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":734,"nodeType":"UserDefinedTypeName","pathNode":{"id":733,"name":"Values","nameLocations":["25144:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"25144:6:0"},"referencedDeclaration":15,"src":"25144:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"},{"constant":false,"id":737,"mutability":"mutable","name":"refundAddress","nameLocation":"25182:13:0","nodeType":"VariableDeclaration","scope":754,"src":"25174:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":736,"name":"address","nodeType":"ElementaryTypeName","src":"25174:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25076:125:0"},"returnParameters":{"id":741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":740,"mutability":"mutable","name":"newContract","nameLocation":"25234:11:0","nodeType":"VariableDeclaration","scope":754,"src":"25226:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":739,"name":"address","nodeType":"ElementaryTypeName","src":"25226:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25225:21:0"},"scope":1713,"src":"25047:560:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":779,"nodeType":"Block","src":"27053:357:0","statements":[{"expression":{"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":767,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":765,"src":"27199:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":769,"name":"_generateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"27254:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27254:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":771,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"27293:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":772,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":759,"src":"27321:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":773,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":762,"src":"27347:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},{"expression":{"id":774,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"27382:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27386:6:0","memberName":"sender","nodeType":"MemberAccess","src":"27382:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":768,"name":"deployCreate2AndInit","nodeType":"Identifier","overloadedDeclarations":[700,727,754,780],"referencedDeclaration":700,"src":"27213:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Values_$15_memory_ptr_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes memory,bytes memory,struct CreateX.Values memory,address) returns (address)"}},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["27248:4:0","27283:8:0","27315:4:0","27339:6:0","27367:13:0"],"names":["salt","initCode","data","values","refundAddress"],"nodeType":"FunctionCall","src":"27213:190:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27199:204:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":778,"nodeType":"ExpressionStatement","src":"27199:204:0"}]},"documentation":{"id":755,"nodeType":"StructuredDocumentation","src":"25613:1266:0","text":" @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts\n `values`, and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a\n diverse selection of block and transaction properties. This approach does not guarantee true\n randomness! In order to save deployment costs, we do not sanity check the `initCode` length.\n Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n and any excess ether is returned to `msg.sender`.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"c3fe107b","id":780,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate2AndInit","nameLocation":"26893:20:0","nodeType":"FunctionDefinition","parameters":{"id":763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":757,"mutability":"mutable","name":"initCode","nameLocation":"26936:8:0","nodeType":"VariableDeclaration","scope":780,"src":"26923:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":756,"name":"bytes","nodeType":"ElementaryTypeName","src":"26923:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":759,"mutability":"mutable","name":"data","nameLocation":"26967:4:0","nodeType":"VariableDeclaration","scope":780,"src":"26954:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":758,"name":"bytes","nodeType":"ElementaryTypeName","src":"26954:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":762,"mutability":"mutable","name":"values","nameLocation":"26995:6:0","nodeType":"VariableDeclaration","scope":780,"src":"26981:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":761,"nodeType":"UserDefinedTypeName","pathNode":{"id":760,"name":"Values","nameLocations":["26981:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"26981:6:0"},"referencedDeclaration":15,"src":"26981:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"}],"src":"26913:94:0"},"returnParameters":{"id":766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":765,"mutability":"mutable","name":"newContract","nameLocation":"27040:11:0","nodeType":"VariableDeclaration","scope":780,"src":"27032:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":764,"name":"address","nodeType":"ElementaryTypeName","src":"27032:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27031:21:0"},"scope":1713,"src":"26884:526:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":841,"nodeType":"Block","src":"28580:1120:0","statements":[{"assignments":[793],"declarations":[{"constant":false,"id":793,"mutability":"mutable","name":"guardedSalt","nameLocation":"28598:11:0","nodeType":"VariableDeclaration","scope":841,"src":"28590:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28590:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":797,"initialValue":{"arguments":[{"id":795,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"28626:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":794,"name":"_guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"28612:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["28620:4:0"],"names":["salt"],"nodeType":"FunctionCall","src":"28612:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"28590:42:0"},{"assignments":[799],"declarations":[{"constant":false,"id":799,"mutability":"mutable","name":"implementationInBytes","nameLocation":"28650:21:0","nodeType":"VariableDeclaration","scope":841,"src":"28642:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"},"typeName":{"id":798,"name":"bytes20","nodeType":"ElementaryTypeName","src":"28642:7:0","typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}},"visibility":"internal"}],"id":804,"initialValue":{"arguments":[{"id":802,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"28682:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28674:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":800,"name":"bytes20","nodeType":"ElementaryTypeName","src":"28674:7:0","typeDescriptions":{}}},"id":803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28674:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}},"nodeType":"VariableDeclarationStatement","src":"28642:55:0"},{"AST":{"nativeSrc":"28732:525:0","nodeType":"YulBlock","src":"28732:525:0","statements":[{"nativeSrc":"28746:24:0","nodeType":"YulVariableDeclaration","src":"28746:24:0","value":{"arguments":[{"kind":"number","nativeSrc":"28765:4:0","nodeType":"YulLiteral","src":"28765:4:0","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"28759:5:0","nodeType":"YulIdentifier","src":"28759:5:0"},"nativeSrc":"28759:11:0","nodeType":"YulFunctionCall","src":"28759:11:0"},"variables":[{"name":"clone","nativeSrc":"28750:5:0","nodeType":"YulTypedName","src":"28750:5:0","type":""}]},{"expression":{"arguments":[{"name":"clone","nativeSrc":"28807:5:0","nodeType":"YulIdentifier","src":"28807:5:0"},{"hexValue":"3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000","kind":"string","nativeSrc":"28830:100:0","nodeType":"YulLiteral","src":"28830:100:0","type":""}],"functionName":{"name":"mstore","nativeSrc":"28783:6:0","nodeType":"YulIdentifier","src":"28783:6:0"},"nativeSrc":"28783:161:0","nodeType":"YulFunctionCall","src":"28783:161:0"},"nativeSrc":"28783:161:0","nodeType":"YulExpressionStatement","src":"28783:161:0"},{"expression":{"arguments":[{"arguments":[{"name":"clone","nativeSrc":"28968:5:0","nodeType":"YulIdentifier","src":"28968:5:0"},{"kind":"number","nativeSrc":"28975:4:0","nodeType":"YulLiteral","src":"28975:4:0","type":"","value":"0x14"}],"functionName":{"name":"add","nativeSrc":"28964:3:0","nodeType":"YulIdentifier","src":"28964:3:0"},"nativeSrc":"28964:16:0","nodeType":"YulFunctionCall","src":"28964:16:0"},{"name":"implementationInBytes","nativeSrc":"28982:21:0","nodeType":"YulIdentifier","src":"28982:21:0"}],"functionName":{"name":"mstore","nativeSrc":"28957:6:0","nodeType":"YulIdentifier","src":"28957:6:0"},"nativeSrc":"28957:47:0","nodeType":"YulFunctionCall","src":"28957:47:0"},"nativeSrc":"28957:47:0","nodeType":"YulExpressionStatement","src":"28957:47:0"},{"expression":{"arguments":[{"arguments":[{"name":"clone","nativeSrc":"29045:5:0","nodeType":"YulIdentifier","src":"29045:5:0"},{"kind":"number","nativeSrc":"29052:4:0","nodeType":"YulLiteral","src":"29052:4:0","type":"","value":"0x28"}],"functionName":{"name":"add","nativeSrc":"29041:3:0","nodeType":"YulIdentifier","src":"29041:3:0"},"nativeSrc":"29041:16:0","nodeType":"YulFunctionCall","src":"29041:16:0"},{"hexValue":"5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000","kind":"string","nativeSrc":"29075:100:0","nodeType":"YulLiteral","src":"29075:100:0","type":""}],"functionName":{"name":"mstore","nativeSrc":"29017:6:0","nodeType":"YulIdentifier","src":"29017:6:0"},"nativeSrc":"29017:172:0","nodeType":"YulFunctionCall","src":"29017:172:0"},"nativeSrc":"29017:172:0","nodeType":"YulExpressionStatement","src":"29017:172:0"},{"nativeSrc":"29202:45:0","nodeType":"YulAssignment","src":"29202:45:0","value":{"arguments":[{"kind":"number","nativeSrc":"29219:1:0","nodeType":"YulLiteral","src":"29219:1:0","type":"","value":"0"},{"name":"clone","nativeSrc":"29222:5:0","nodeType":"YulIdentifier","src":"29222:5:0"},{"kind":"number","nativeSrc":"29229:4:0","nodeType":"YulLiteral","src":"29229:4:0","type":"","value":"0x37"},{"name":"guardedSalt","nativeSrc":"29235:11:0","nodeType":"YulIdentifier","src":"29235:11:0"}],"functionName":{"name":"create2","nativeSrc":"29211:7:0","nodeType":"YulIdentifier","src":"29211:7:0"},"nativeSrc":"29211:36:0","nodeType":"YulFunctionCall","src":"29211:36:0"},"variableNames":[{"name":"proxy","nativeSrc":"29202:5:0","nodeType":"YulIdentifier","src":"29202:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":793,"isOffset":false,"isSlot":false,"src":"29235:11:0","valueSize":1},{"declaration":799,"isOffset":false,"isSlot":false,"src":"28982:21:0","valueSize":1},{"declaration":790,"isOffset":false,"isSlot":false,"src":"29202:5:0","valueSize":1}],"flags":["memory-safe"],"id":805,"nodeType":"InlineAssembly","src":"28707:550:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":806,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"29270:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29287:1:0","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":808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29279:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"29279:7:0","typeDescriptions":{}}},"id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29279:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29270:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":817,"nodeType":"IfStatement","src":"29266:97:0","trueBody":{"id":816,"nodeType":"Block","src":"29291:72:0","statements":[{"errorCall":{"arguments":[{"id":813,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"29345:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":812,"name":"FailedContractCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"29312:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["29336:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"29312:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":815,"nodeType":"RevertStatement","src":"29305:47:0"}]}},{"eventCall":{"arguments":[{"id":819,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"29408:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":820,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":793,"src":"29421:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":818,"name":"ContractCreation","nodeType":"Identifier","overloadedDeclarations":[32,37],"referencedDeclaration":32,"src":"29377:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["29395:11:0","29415:4:0"],"names":["newContract","salt"],"nodeType":"FunctionCall","src":"29377:57:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":822,"nodeType":"EmitStatement","src":"29372:62:0"},{"assignments":[824,826],"declarations":[{"constant":false,"id":824,"mutability":"mutable","name":"success","nameLocation":"29451:7:0","nodeType":"VariableDeclaration","scope":841,"src":"29446:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":823,"name":"bool","nodeType":"ElementaryTypeName","src":"29446:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":826,"mutability":"mutable","name":"returnData","nameLocation":"29473:10:0","nodeType":"VariableDeclaration","scope":841,"src":"29460:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":825,"name":"bytes","nodeType":"ElementaryTypeName","src":"29460:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":834,"initialValue":{"arguments":[{"id":832,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"29516:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":827,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"29487:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29493:4:0","memberName":"call","nodeType":"MemberAccess","src":"29487:10:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":829,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"29505:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29509:5:0","memberName":"value","nodeType":"MemberAccess","src":"29505:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"29487:28:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29487:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"29445:76:0"},{"expression":{"arguments":[{"id":836,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"29595:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":837,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"29628:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":838,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"29668:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":835,"name":"_requireSuccessfulContractInitialisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"29531:40:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_bytes_memory_ptr_$_t_address_$returns$__$","typeString":"function (bool,bytes memory,address) view"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["29586:7:0","29616:10:0","29652:14:0"],"names":["success","returnData","implementation"],"nodeType":"FunctionCall","src":"29531:162:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":840,"nodeType":"ExpressionStatement","src":"29531:162:0"}]},"documentation":{"id":781,"nodeType":"StructuredDocumentation","src":"27416:1005:0","text":" @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE2` opcode and the salt\n value `salt`, and initialises the implementation contract using the implementation address\n `implementation`, the initialisation code `data`, and `msg.value` as inputs. Note that if\n `msg.value` is non-zero, the initialiser function called via `data` must be `payable`.\n @param salt The 32-byte random value used to create the proxy contract address.\n @param implementation The 20-byte implementation contract address.\n @param data The initialisation code that is passed to the deployed proxy contract.\n @return proxy The 20-byte address where the clone was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"2852527a","id":842,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate2Clone","nameLocation":"28435:18:0","nodeType":"FunctionDefinition","parameters":{"id":788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":783,"mutability":"mutable","name":"salt","nameLocation":"28471:4:0","nodeType":"VariableDeclaration","scope":842,"src":"28463:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":782,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28463:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":785,"mutability":"mutable","name":"implementation","nameLocation":"28493:14:0","nodeType":"VariableDeclaration","scope":842,"src":"28485:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":784,"name":"address","nodeType":"ElementaryTypeName","src":"28485:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":787,"mutability":"mutable","name":"data","nameLocation":"28530:4:0","nodeType":"VariableDeclaration","scope":842,"src":"28517:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":786,"name":"bytes","nodeType":"ElementaryTypeName","src":"28517:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"28453:87:0"},"returnParameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":790,"mutability":"mutable","name":"proxy","nameLocation":"28573:5:0","nodeType":"VariableDeclaration","scope":842,"src":"28565:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":789,"name":"address","nodeType":"ElementaryTypeName","src":"28565:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"28564:15:0"},"scope":1713,"src":"28426:1274:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":861,"nodeType":"Block","src":"30911:246:0","statements":[{"expression":{"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":852,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"31055:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":854,"name":"_generateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"31089:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31089:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":856,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"31122:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":857,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"31144:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":853,"name":"deployCreate2Clone","nodeType":"Identifier","overloadedDeclarations":[842,862],"referencedDeclaration":842,"src":"31063:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes32,address,bytes memory) returns (address)"}},"id":858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["31083:4:0","31106:14:0","31138:4:0"],"names":["salt","implementation","data"],"nodeType":"FunctionCall","src":"31063:87:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"31055:95:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":860,"nodeType":"ExpressionStatement","src":"31055:95:0"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"29706:1090:0","text":" @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE2` opcode and the salt\n value `salt`, and initialises the implementation contract using the implementation address\n `implementation`, the initialisation code `data`, and `msg.value` as inputs. The salt value is\n calculated pseudo-randomly using a diverse selection of block and transaction properties. This\n approach does not guarantee true randomness! Note that if `msg.value` is non-zero, the initialiser\n function called via `data` must be `payable`.\n @param implementation The 20-byte implementation contract address.\n @param data The initialisation code that is passed to the deployed proxy contract.\n @return proxy The 20-byte address where the clone was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"81503da1","id":862,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate2Clone","nameLocation":"30810:18:0","nodeType":"FunctionDefinition","parameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"implementation","nameLocation":"30837:14:0","nodeType":"VariableDeclaration","scope":862,"src":"30829:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"30829:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"30866:4:0","nodeType":"VariableDeclaration","scope":862,"src":"30853:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"30853:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"30828:43:0"},"returnParameters":{"id":851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"proxy","nameLocation":"30904:5:0","nodeType":"VariableDeclaration","scope":862,"src":"30896:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":849,"name":"address","nodeType":"ElementaryTypeName","src":"30896:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30895:15:0"},"scope":1713,"src":"30801:356:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":875,"nodeType":"Block","src":"32109:1512:0","statements":[{"AST":{"nativeSrc":"32144:1471:0","nodeType":"YulBlock","src":"32144:1471:0","statements":[{"nativeSrc":"33334:22:0","nodeType":"YulVariableDeclaration","src":"33334:22:0","value":{"arguments":[{"kind":"number","nativeSrc":"33351:4:0","nodeType":"YulLiteral","src":"33351:4:0","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"33345:5:0","nodeType":"YulIdentifier","src":"33345:5:0"},"nativeSrc":"33345:11:0","nodeType":"YulFunctionCall","src":"33345:11:0"},"variables":[{"name":"ptr","nativeSrc":"33338:3:0","nodeType":"YulTypedName","src":"33338:3:0","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"33380:3:0","nodeType":"YulIdentifier","src":"33380:3:0"},{"kind":"number","nativeSrc":"33385:4:0","nodeType":"YulLiteral","src":"33385:4:0","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"33376:3:0","nodeType":"YulIdentifier","src":"33376:3:0"},"nativeSrc":"33376:14:0","nodeType":"YulFunctionCall","src":"33376:14:0"},{"name":"initCodeHash","nativeSrc":"33392:12:0","nodeType":"YulIdentifier","src":"33392:12:0"}],"functionName":{"name":"mstore","nativeSrc":"33369:6:0","nodeType":"YulIdentifier","src":"33369:6:0"},"nativeSrc":"33369:36:0","nodeType":"YulFunctionCall","src":"33369:36:0"},"nativeSrc":"33369:36:0","nodeType":"YulExpressionStatement","src":"33369:36:0"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"33429:3:0","nodeType":"YulIdentifier","src":"33429:3:0"},{"kind":"number","nativeSrc":"33434:4:0","nodeType":"YulLiteral","src":"33434:4:0","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"33425:3:0","nodeType":"YulIdentifier","src":"33425:3:0"},"nativeSrc":"33425:14:0","nodeType":"YulFunctionCall","src":"33425:14:0"},{"name":"salt","nativeSrc":"33441:4:0","nodeType":"YulIdentifier","src":"33441:4:0"}],"functionName":{"name":"mstore","nativeSrc":"33418:6:0","nodeType":"YulIdentifier","src":"33418:6:0"},"nativeSrc":"33418:28:0","nodeType":"YulFunctionCall","src":"33418:28:0"},"nativeSrc":"33418:28:0","nodeType":"YulExpressionStatement","src":"33418:28:0"},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"33466:3:0","nodeType":"YulIdentifier","src":"33466:3:0"},{"name":"deployer","nativeSrc":"33471:8:0","nodeType":"YulIdentifier","src":"33471:8:0"}],"functionName":{"name":"mstore","nativeSrc":"33459:6:0","nodeType":"YulIdentifier","src":"33459:6:0"},"nativeSrc":"33459:21:0","nodeType":"YulFunctionCall","src":"33459:21:0"},"nativeSrc":"33459:21:0","nodeType":"YulExpressionStatement","src":"33459:21:0"},{"nativeSrc":"33493:27:0","nodeType":"YulVariableDeclaration","src":"33493:27:0","value":{"arguments":[{"name":"ptr","nativeSrc":"33510:3:0","nodeType":"YulIdentifier","src":"33510:3:0"},{"kind":"number","nativeSrc":"33515:4:0","nodeType":"YulLiteral","src":"33515:4:0","type":"","value":"0x0b"}],"functionName":{"name":"add","nativeSrc":"33506:3:0","nodeType":"YulIdentifier","src":"33506:3:0"},"nativeSrc":"33506:14:0","nodeType":"YulFunctionCall","src":"33506:14:0"},"variables":[{"name":"start","nativeSrc":"33497:5:0","nodeType":"YulTypedName","src":"33497:5:0","type":""}]},{"expression":{"arguments":[{"name":"start","nativeSrc":"33541:5:0","nodeType":"YulIdentifier","src":"33541:5:0"},{"kind":"number","nativeSrc":"33548:4:0","nodeType":"YulLiteral","src":"33548:4:0","type":"","value":"0xff"}],"functionName":{"name":"mstore8","nativeSrc":"33533:7:0","nodeType":"YulIdentifier","src":"33533:7:0"},"nativeSrc":"33533:20:0","nodeType":"YulFunctionCall","src":"33533:20:0"},"nativeSrc":"33533:20:0","nodeType":"YulExpressionStatement","src":"33533:20:0"},{"nativeSrc":"33566:39:0","nodeType":"YulAssignment","src":"33566:39:0","value":{"arguments":[{"name":"start","nativeSrc":"33595:5:0","nodeType":"YulIdentifier","src":"33595:5:0"},{"kind":"number","nativeSrc":"33602:2:0","nodeType":"YulLiteral","src":"33602:2:0","type":"","value":"85"}],"functionName":{"name":"keccak256","nativeSrc":"33585:9:0","nodeType":"YulIdentifier","src":"33585:9:0"},"nativeSrc":"33585:20:0","nodeType":"YulFunctionCall","src":"33585:20:0"},"variableNames":[{"name":"computedAddress","nativeSrc":"33566:15:0","nodeType":"YulIdentifier","src":"33566:15:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":872,"isOffset":false,"isSlot":false,"src":"33566:15:0","valueSize":1},{"declaration":869,"isOffset":false,"isSlot":false,"src":"33471:8:0","valueSize":1},{"declaration":867,"isOffset":false,"isSlot":false,"src":"33392:12:0","valueSize":1},{"declaration":865,"isOffset":false,"isSlot":false,"src":"33441:4:0","valueSize":1}],"flags":["memory-safe"],"id":874,"nodeType":"InlineAssembly","src":"32119:1496:0"}]},"documentation":{"id":863,"nodeType":"StructuredDocumentation","src":"31163:780:0","text":" @dev Returns the address where a contract will be stored if deployed via `deployer` using\n the `CREATE2` opcode. Any change in the `initCodeHash` or `salt` values will result in a new\n destination address. This implementation is based on OpenZeppelin:\n https://web.archive.org/web/20230921113703/https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/181d518609a9f006fcb97af63e6952e603cf100e/contracts/utils/Create2.sol.\n @param salt The 32-byte random value used to create the contract address.\n @param initCodeHash The 32-byte bytecode digest of the contract creation bytecode.\n @param deployer The 20-byte deployer address.\n @return computedAddress The 20-byte address where a contract will be stored."},"functionSelector":"d323826a","id":876,"implemented":true,"kind":"function","modifiers":[],"name":"computeCreate2Address","nameLocation":"31957:21:0","nodeType":"FunctionDefinition","parameters":{"id":870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":865,"mutability":"mutable","name":"salt","nameLocation":"31996:4:0","nodeType":"VariableDeclaration","scope":876,"src":"31988:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":864,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31988:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":867,"mutability":"mutable","name":"initCodeHash","nameLocation":"32018:12:0","nodeType":"VariableDeclaration","scope":876,"src":"32010:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32010:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":869,"mutability":"mutable","name":"deployer","nameLocation":"32048:8:0","nodeType":"VariableDeclaration","scope":876,"src":"32040:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":868,"name":"address","nodeType":"ElementaryTypeName","src":"32040:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31978:84:0"},"returnParameters":{"id":873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":872,"mutability":"mutable","name":"computedAddress","nameLocation":"32092:15:0","nodeType":"VariableDeclaration","scope":876,"src":"32084:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":871,"name":"address","nodeType":"ElementaryTypeName","src":"32084:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"32083:25:0"},"scope":1713,"src":"31948:1673:0","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":894,"nodeType":"Block","src":"34239:115:0","statements":[{"expression":{"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":886,"name":"computedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"34249:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":888,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":879,"src":"34296:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":889,"name":"initCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"34316:12:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":890,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"34340:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":887,"name":"computeCreate2Address","nodeType":"Identifier","overloadedDeclarations":[876,895],"referencedDeclaration":876,"src":"34267:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes32,address) pure returns (address)"}},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["34290:4:0","34302:12:0","34330:8:0"],"names":["salt","initCodeHash","deployer"],"nodeType":"FunctionCall","src":"34267:80:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"34249:98:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":893,"nodeType":"ExpressionStatement","src":"34249:98:0"}]},"documentation":{"id":877,"nodeType":"StructuredDocumentation","src":"33627:494:0","text":" @dev Returns the address where a contract will be stored if deployed via this contract using\n the `CREATE2` opcode. Any change in the `initCodeHash` or `salt` values will result in a new\n destination address.\n @param salt The 32-byte random value used to create the contract address.\n @param initCodeHash The 32-byte bytecode digest of the contract creation bytecode.\n @return computedAddress The 20-byte address where a contract will be stored."},"functionSelector":"890c283b","id":895,"implemented":true,"kind":"function","modifiers":[],"name":"computeCreate2Address","nameLocation":"34135:21:0","nodeType":"FunctionDefinition","parameters":{"id":882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":879,"mutability":"mutable","name":"salt","nameLocation":"34165:4:0","nodeType":"VariableDeclaration","scope":895,"src":"34157:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"34157:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":881,"mutability":"mutable","name":"initCodeHash","nameLocation":"34179:12:0","nodeType":"VariableDeclaration","scope":895,"src":"34171:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":880,"name":"bytes32","nodeType":"ElementaryTypeName","src":"34171:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"34156:36:0"},"returnParameters":{"id":885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":884,"mutability":"mutable","name":"computedAddress","nameLocation":"34222:15:0","nodeType":"VariableDeclaration","scope":895,"src":"34214:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":883,"name":"address","nodeType":"ElementaryTypeName","src":"34214:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34213:25:0"},"scope":1713,"src":"34126:228:0","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":961,"nodeType":"Block","src":"35830:797:0","statements":[{"assignments":[906],"declarations":[{"constant":false,"id":906,"mutability":"mutable","name":"guardedSalt","nameLocation":"35848:11:0","nodeType":"VariableDeclaration","scope":961,"src":"35840:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":905,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35840:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":910,"initialValue":{"arguments":[{"id":908,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":898,"src":"35876:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":907,"name":"_guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"35862:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["35870:4:0"],"names":["salt"],"nodeType":"FunctionCall","src":"35862:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"35840:42:0"},{"assignments":[912],"declarations":[{"constant":false,"id":912,"mutability":"mutable","name":"proxyChildBytecode","nameLocation":"35905:18:0","nodeType":"VariableDeclaration","scope":961,"src":"35892:31:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":911,"name":"bytes","nodeType":"ElementaryTypeName","src":"35892:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":914,"initialValue":{"hexValue":"67363d3d37363d34f03d5260086018f3","id":913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"35926:52:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f","typeString":"literal_string hex\"67363d3d37363d34f03d5260086018f3\""}},"nodeType":"VariableDeclarationStatement","src":"35892:86:0"},{"assignments":[916],"declarations":[{"constant":false,"id":916,"mutability":"mutable","name":"proxy","nameLocation":"35996:5:0","nodeType":"VariableDeclaration","scope":961,"src":"35988:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":915,"name":"address","nodeType":"ElementaryTypeName","src":"35988:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":917,"nodeType":"VariableDeclarationStatement","src":"35988:13:0"},{"AST":{"nativeSrc":"36036:112:0","nodeType":"YulBlock","src":"36036:112:0","statements":[{"nativeSrc":"36050:88:0","nodeType":"YulAssignment","src":"36050:88:0","value":{"arguments":[{"kind":"number","nativeSrc":"36067:1:0","nodeType":"YulLiteral","src":"36067:1:0","type":"","value":"0"},{"arguments":[{"name":"proxyChildBytecode","nativeSrc":"36074:18:0","nodeType":"YulIdentifier","src":"36074:18:0"},{"kind":"number","nativeSrc":"36094:2:0","nodeType":"YulLiteral","src":"36094:2:0","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"36070:3:0","nodeType":"YulIdentifier","src":"36070:3:0"},"nativeSrc":"36070:27:0","nodeType":"YulFunctionCall","src":"36070:27:0"},{"arguments":[{"name":"proxyChildBytecode","nativeSrc":"36105:18:0","nodeType":"YulIdentifier","src":"36105:18:0"}],"functionName":{"name":"mload","nativeSrc":"36099:5:0","nodeType":"YulIdentifier","src":"36099:5:0"},"nativeSrc":"36099:25:0","nodeType":"YulFunctionCall","src":"36099:25:0"},{"name":"guardedSalt","nativeSrc":"36126:11:0","nodeType":"YulIdentifier","src":"36126:11:0"}],"functionName":{"name":"create2","nativeSrc":"36059:7:0","nodeType":"YulIdentifier","src":"36059:7:0"},"nativeSrc":"36059:79:0","nodeType":"YulFunctionCall","src":"36059:79:0"},"variableNames":[{"name":"proxy","nativeSrc":"36050:5:0","nodeType":"YulIdentifier","src":"36050:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":906,"isOffset":false,"isSlot":false,"src":"36126:11:0","valueSize":1},{"declaration":916,"isOffset":false,"isSlot":false,"src":"36050:5:0","valueSize":1},{"declaration":912,"isOffset":false,"isSlot":false,"src":"36074:18:0","valueSize":1},{"declaration":912,"isOffset":false,"isSlot":false,"src":"36105:18:0","valueSize":1}],"flags":["memory-safe"],"id":918,"nodeType":"InlineAssembly","src":"36011:137:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"36161:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36178:1:0","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":921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36170:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":920,"name":"address","nodeType":"ElementaryTypeName","src":"36170:7:0","typeDescriptions":{}}},"id":923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36170:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"36161:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":930,"nodeType":"IfStatement","src":"36157:97:0","trueBody":{"id":929,"nodeType":"Block","src":"36182:72:0","statements":[{"errorCall":{"arguments":[{"id":926,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"36236:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":925,"name":"FailedContractCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"36203:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["36227:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"36203:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":928,"nodeType":"RevertStatement","src":"36196:47:0"}]}},{"eventCall":{"arguments":[{"id":932,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"36311:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":933,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"36324:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":931,"name":"Create3ProxyContractCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"36268:28:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["36298:11:0","36318:4:0"],"names":["newContract","salt"],"nodeType":"FunctionCall","src":"36268:69:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":935,"nodeType":"EmitStatement","src":"36263:74:0"},{"expression":{"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":936,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"36348:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":938,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"36391:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":937,"name":"computeCreate3Address","nodeType":"Identifier","overloadedDeclarations":[1196,1212],"referencedDeclaration":1212,"src":"36362:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["36385:4:0"],"names":["salt"],"nodeType":"FunctionCall","src":"36362:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"36348:56:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":941,"nodeType":"ExpressionStatement","src":"36348:56:0"},{"assignments":[943,null],"declarations":[{"constant":false,"id":943,"mutability":"mutable","name":"success","nameLocation":"36420:7:0","nodeType":"VariableDeclaration","scope":961,"src":"36415:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":942,"name":"bool","nodeType":"ElementaryTypeName","src":"36415:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":951,"initialValue":{"arguments":[{"id":949,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"36462:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":944,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"36433:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36439:4:0","memberName":"call","nodeType":"MemberAccess","src":"36433:10:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":946,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36451:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36455:5:0","memberName":"value","nodeType":"MemberAccess","src":"36451:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"36433:28:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36433:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"36414:57:0"},{"expression":{"arguments":[{"id":953,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"36526:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":954,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"36548:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":952,"name":"_requireSuccessfulContractCreation","nodeType":"Identifier","overloadedDeclarations":[1661,1686],"referencedDeclaration":1661,"src":"36481:34:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$__$","typeString":"function (bool,address) view"}},"id":955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["36517:7:0","36535:11:0"],"names":["success","newContract"],"nodeType":"FunctionCall","src":"36481:80:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":956,"nodeType":"ExpressionStatement","src":"36481:80:0"},{"eventCall":{"arguments":[{"id":958,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"36607:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":957,"name":"ContractCreation","nodeType":"Identifier","overloadedDeclarations":[32,37],"referencedDeclaration":37,"src":"36576:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["36594:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"36576:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":960,"nodeType":"EmitStatement","src":"36571:49:0"}]},"documentation":{"id":896,"nodeType":"StructuredDocumentation","src":"34643:1077:0","text":" @dev Deploys a new contract via employing the `CREATE3` pattern (i.e. without an initcode\n factor) and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value`\n as inputs. In order to save deployment costs, we do not sanity check the `initCode` length.\n Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor. This\n implementation is based on Solmate:\n https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n @param salt The 32-byte random value used to create the proxy contract address.\n @param initCode The creation bytecode.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security We strongly recommend implementing a permissioned deploy protection by setting\n the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n proxy deployments on other chains."},"functionSelector":"9c36a286","id":962,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate3","nameLocation":"35734:13:0","nodeType":"FunctionDefinition","parameters":{"id":901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"salt","nameLocation":"35756:4:0","nodeType":"VariableDeclaration","scope":962,"src":"35748:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":897,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35748:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":900,"mutability":"mutable","name":"initCode","nameLocation":"35775:8:0","nodeType":"VariableDeclaration","scope":962,"src":"35762:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":899,"name":"bytes","nodeType":"ElementaryTypeName","src":"35762:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"35747:37:0"},"returnParameters":{"id":904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"newContract","nameLocation":"35817:11:0","nodeType":"VariableDeclaration","scope":962,"src":"35809:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"35809:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"35808:21:0"},"scope":1713,"src":"35725:902:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":978,"nodeType":"Block","src":"37636:218:0","statements":[{"expression":{"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":970,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"37775:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":972,"name":"_generateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"37810:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37810:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":974,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"37837:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":971,"name":"deployCreate3","nodeType":"Identifier","overloadedDeclarations":[962,979],"referencedDeclaration":962,"src":"37789:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes32,bytes memory) returns (address)"}},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["37804:4:0","37827:8:0"],"names":["salt","initCode"],"nodeType":"FunctionCall","src":"37789:58:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"37775:72:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":977,"nodeType":"ExpressionStatement","src":"37775:72:0"}]},"documentation":{"id":963,"nodeType":"StructuredDocumentation","src":"36633:907:0","text":" @dev Deploys a new contract via employing the `CREATE3` pattern (i.e. without an initcode\n factor) and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value`\n as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block\n and transaction properties. This approach does not guarantee true randomness! In order to save\n deployment costs, we do not sanity check the `initCode` length. Note that if `msg.value` is\n non-zero, `initCode` must have a `payable` constructor. This implementation is based on Solmate:\n https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n @param initCode The creation bytecode.\n @return newContract The 20-byte address where the contract was deployed."},"functionSelector":"7f565360","id":979,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate3","nameLocation":"37554:13:0","nodeType":"FunctionDefinition","parameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":965,"mutability":"mutable","name":"initCode","nameLocation":"37581:8:0","nodeType":"VariableDeclaration","scope":979,"src":"37568:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":964,"name":"bytes","nodeType":"ElementaryTypeName","src":"37568:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"37567:23:0"},"returnParameters":{"id":969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":968,"mutability":"mutable","name":"newContract","nameLocation":"37623:11:0","nodeType":"VariableDeclaration","scope":979,"src":"37615:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":967,"name":"address","nodeType":"ElementaryTypeName","src":"37615:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"37614:21:0"},"scope":1713,"src":"37545:309:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1103,"nodeType":"Block","src":"39865:1476:0","statements":[{"assignments":[997],"declarations":[{"constant":false,"id":997,"mutability":"mutable","name":"guardedSalt","nameLocation":"39883:11:0","nodeType":"VariableDeclaration","scope":1103,"src":"39875:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":996,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39875:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1001,"initialValue":{"arguments":[{"id":999,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"39911:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":998,"name":"_guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"39897:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["39905:4:0"],"names":["salt"],"nodeType":"FunctionCall","src":"39897:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"39875:42:0"},{"assignments":[1003],"declarations":[{"constant":false,"id":1003,"mutability":"mutable","name":"proxyChildBytecode","nameLocation":"39940:18:0","nodeType":"VariableDeclaration","scope":1103,"src":"39927:31:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1002,"name":"bytes","nodeType":"ElementaryTypeName","src":"39927:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1005,"initialValue":{"hexValue":"67363d3d37363d34f03d5260086018f3","id":1004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"39961:52:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f","typeString":"literal_string hex\"67363d3d37363d34f03d5260086018f3\""}},"nodeType":"VariableDeclarationStatement","src":"39927:86:0"},{"assignments":[1007],"declarations":[{"constant":false,"id":1007,"mutability":"mutable","name":"proxy","nameLocation":"40031:5:0","nodeType":"VariableDeclaration","scope":1103,"src":"40023:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1006,"name":"address","nodeType":"ElementaryTypeName","src":"40023:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1008,"nodeType":"VariableDeclarationStatement","src":"40023:13:0"},{"AST":{"nativeSrc":"40071:112:0","nodeType":"YulBlock","src":"40071:112:0","statements":[{"nativeSrc":"40085:88:0","nodeType":"YulAssignment","src":"40085:88:0","value":{"arguments":[{"kind":"number","nativeSrc":"40102:1:0","nodeType":"YulLiteral","src":"40102:1:0","type":"","value":"0"},{"arguments":[{"name":"proxyChildBytecode","nativeSrc":"40109:18:0","nodeType":"YulIdentifier","src":"40109:18:0"},{"kind":"number","nativeSrc":"40129:2:0","nodeType":"YulLiteral","src":"40129:2:0","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"40105:3:0","nodeType":"YulIdentifier","src":"40105:3:0"},"nativeSrc":"40105:27:0","nodeType":"YulFunctionCall","src":"40105:27:0"},{"arguments":[{"name":"proxyChildBytecode","nativeSrc":"40140:18:0","nodeType":"YulIdentifier","src":"40140:18:0"}],"functionName":{"name":"mload","nativeSrc":"40134:5:0","nodeType":"YulIdentifier","src":"40134:5:0"},"nativeSrc":"40134:25:0","nodeType":"YulFunctionCall","src":"40134:25:0"},{"name":"guardedSalt","nativeSrc":"40161:11:0","nodeType":"YulIdentifier","src":"40161:11:0"}],"functionName":{"name":"create2","nativeSrc":"40094:7:0","nodeType":"YulIdentifier","src":"40094:7:0"},"nativeSrc":"40094:79:0","nodeType":"YulFunctionCall","src":"40094:79:0"},"variableNames":[{"name":"proxy","nativeSrc":"40085:5:0","nodeType":"YulIdentifier","src":"40085:5:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":997,"isOffset":false,"isSlot":false,"src":"40161:11:0","valueSize":1},{"declaration":1007,"isOffset":false,"isSlot":false,"src":"40085:5:0","valueSize":1},{"declaration":1003,"isOffset":false,"isSlot":false,"src":"40109:18:0","valueSize":1},{"declaration":1003,"isOffset":false,"isSlot":false,"src":"40140:18:0","valueSize":1}],"flags":["memory-safe"],"id":1009,"nodeType":"InlineAssembly","src":"40046:137:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1010,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"40196:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40213:1:0","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":1012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"40205:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1011,"name":"address","nodeType":"ElementaryTypeName","src":"40205:7:0","typeDescriptions":{}}},"id":1014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40205:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"40196:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1021,"nodeType":"IfStatement","src":"40192:97:0","trueBody":{"id":1020,"nodeType":"Block","src":"40217:72:0","statements":[{"errorCall":{"arguments":[{"id":1017,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"40271:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1016,"name":"FailedContractCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"40238:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["40262:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"40238:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1019,"nodeType":"RevertStatement","src":"40231:47:0"}]}},{"eventCall":{"arguments":[{"id":1023,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"40346:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1024,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"40359:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1022,"name":"Create3ProxyContractCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"40303:28:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["40333:11:0","40353:4:0"],"names":["newContract","salt"],"nodeType":"FunctionCall","src":"40303:69:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1026,"nodeType":"EmitStatement","src":"40298:74:0"},{"expression":{"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1027,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"40383:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1029,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"40426:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1028,"name":"computeCreate3Address","nodeType":"Identifier","overloadedDeclarations":[1196,1212],"referencedDeclaration":1212,"src":"40397:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["40420:4:0"],"names":["salt"],"nodeType":"FunctionCall","src":"40397:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"40383:56:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1032,"nodeType":"ExpressionStatement","src":"40383:56:0"},{"assignments":[1034,null],"declarations":[{"constant":false,"id":1034,"mutability":"mutable","name":"success","nameLocation":"40455:7:0","nodeType":"VariableDeclaration","scope":1103,"src":"40450:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1033,"name":"bool","nodeType":"ElementaryTypeName","src":"40450:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1042,"initialValue":{"arguments":[{"id":1040,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"40512:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1035,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"40468:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40474:4:0","memberName":"call","nodeType":"MemberAccess","src":"40468:10:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":1037,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"40486:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},"id":1038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40493:17:0","memberName":"constructorAmount","nodeType":"MemberAccess","referencedDeclaration":12,"src":"40486:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"40468:43:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40468:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"40449:72:0"},{"expression":{"arguments":[{"id":1044,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"40576:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1045,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"40598:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1043,"name":"_requireSuccessfulContractCreation","nodeType":"Identifier","overloadedDeclarations":[1661,1686],"referencedDeclaration":1661,"src":"40531:34:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$__$","typeString":"function (bool,address) view"}},"id":1046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["40567:7:0","40585:11:0"],"names":["success","newContract"],"nodeType":"FunctionCall","src":"40531:80:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1047,"nodeType":"ExpressionStatement","src":"40531:80:0"},{"eventCall":{"arguments":[{"id":1049,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"40657:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1048,"name":"ContractCreation","nodeType":"Identifier","overloadedDeclarations":[32,37],"referencedDeclaration":37,"src":"40626:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["40644:11:0"],"names":["newContract"],"nodeType":"FunctionCall","src":"40626:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1051,"nodeType":"EmitStatement","src":"40621:49:0"},{"assignments":[1053],"declarations":[{"constant":false,"id":1053,"mutability":"mutable","name":"returnData","nameLocation":"40694:10:0","nodeType":"VariableDeclaration","scope":1103,"src":"40681:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1052,"name":"bytes","nodeType":"ElementaryTypeName","src":"40681:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1054,"nodeType":"VariableDeclarationStatement","src":"40681:23:0"},{"expression":{"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1055,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"40715:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1056,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"40724:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1057,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"40714:21:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1063,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":986,"src":"40785:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1058,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"40738:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40750:4:0","memberName":"call","nodeType":"MemberAccess","src":"40738:16:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":1060,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"40762:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},"id":1061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40769:14:0","memberName":"initCallAmount","nodeType":"MemberAccess","referencedDeclaration":14,"src":"40762:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"40738:46:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40738:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"40714:76:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1066,"nodeType":"ExpressionStatement","src":"40714:76:0"},{"condition":{"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40804:8:0","subExpression":{"id":1067,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"40805:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1075,"nodeType":"IfStatement","src":"40800:116:0","trueBody":{"id":1074,"nodeType":"Block","src":"40814:102:0","statements":[{"errorCall":{"arguments":[{"id":1070,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"40874:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1071,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"40893:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1069,"name":"FailedContractInitialisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"40835:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["40865:7:0","40881:10:0"],"names":["emitter","revertData"],"nodeType":"FunctionCall","src":"40835:70:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1073,"nodeType":"RevertStatement","src":"40828:77:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1076,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"40930:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40936:7:0","memberName":"balance","nodeType":"MemberAccess","src":"40930:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40947:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"40930:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1102,"nodeType":"IfStatement","src":"40926:409:0","trueBody":{"id":1101,"nodeType":"Block","src":"40950:385:0","statements":[{"expression":{"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1080,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"41129:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1081,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"41138:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1082,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"41128:21:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"","id":1088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"41193:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":1083,"name":"refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"41152:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41166:4:0","memberName":"call","nodeType":"MemberAccess","src":"41152:18:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":1085,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"41178:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41184:7:0","memberName":"balance","nodeType":"MemberAccess","src":"41178:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"41152:40:0","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41152:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"41128:68:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1091,"nodeType":"ExpressionStatement","src":"41128:68:0"},{"condition":{"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"41214:8:0","subExpression":{"id":1092,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"41215:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1100,"nodeType":"IfStatement","src":"41210:115:0","trueBody":{"id":1099,"nodeType":"Block","src":"41224:101:0","statements":[{"errorCall":{"arguments":[{"id":1095,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"41279:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1096,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"41298:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1094,"name":"FailedEtherTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"41249:19:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["41270:7:0","41286:10:0"],"names":["emitter","revertData"],"nodeType":"FunctionCall","src":"41249:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1098,"nodeType":"RevertStatement","src":"41242:68:0"}]}}]}}]},"documentation":{"id":980,"nodeType":"StructuredDocumentation","src":"37860:1778:0","text":" @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, the\n initialisation code `data`, the struct for the `payable` amounts `values`, the refund address\n `refundAddress`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity\n check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must\n have a `payable` constructor. This implementation is based on Solmate:\n https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n @param salt The 32-byte random value used to create the proxy contract address.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @param refundAddress The 20-byte address where any excess ether is returned to.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system.\n Furthermore, we strongly recommend implementing a permissioned deploy protection by setting\n the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n proxy deployments on other chains."},"functionSelector":"ddda0acb","id":1104,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate3AndInit","nameLocation":"39652:20:0","nodeType":"FunctionDefinition","parameters":{"id":992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":982,"mutability":"mutable","name":"salt","nameLocation":"39690:4:0","nodeType":"VariableDeclaration","scope":1104,"src":"39682:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":981,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39682:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":984,"mutability":"mutable","name":"initCode","nameLocation":"39717:8:0","nodeType":"VariableDeclaration","scope":1104,"src":"39704:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":983,"name":"bytes","nodeType":"ElementaryTypeName","src":"39704:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":986,"mutability":"mutable","name":"data","nameLocation":"39748:4:0","nodeType":"VariableDeclaration","scope":1104,"src":"39735:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":985,"name":"bytes","nodeType":"ElementaryTypeName","src":"39735:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":989,"mutability":"mutable","name":"values","nameLocation":"39776:6:0","nodeType":"VariableDeclaration","scope":1104,"src":"39762:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":988,"nodeType":"UserDefinedTypeName","pathNode":{"id":987,"name":"Values","nameLocations":["39762:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"39762:6:0"},"referencedDeclaration":15,"src":"39762:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"},{"constant":false,"id":991,"mutability":"mutable","name":"refundAddress","nameLocation":"39800:13:0","nodeType":"VariableDeclaration","scope":1104,"src":"39792:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":990,"name":"address","nodeType":"ElementaryTypeName","src":"39792:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39672:147:0"},"returnParameters":{"id":995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":994,"mutability":"mutable","name":"newContract","nameLocation":"39852:11:0","nodeType":"VariableDeclaration","scope":1104,"src":"39844:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":993,"name":"address","nodeType":"ElementaryTypeName","src":"39844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39843:21:0"},"scope":1713,"src":"39643:1698:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1130,"nodeType":"Block","src":"43248:346:0","statements":[{"expression":{"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1119,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"43394:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1121,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"43449:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1122,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"43477:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1123,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1111,"src":"43505:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1124,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1114,"src":"43531:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},{"expression":{"id":1125,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"43566:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43570:6:0","memberName":"sender","nodeType":"MemberAccess","src":"43566:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1120,"name":"deployCreate3AndInit","nodeType":"Identifier","overloadedDeclarations":[1104,1131,1158,1184],"referencedDeclaration":1104,"src":"43408:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Values_$15_memory_ptr_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes memory,bytes memory,struct CreateX.Values memory,address) returns (address)"}},"id":1127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["43443:4:0","43467:8:0","43499:4:0","43523:6:0","43551:13:0"],"names":["salt","initCode","data","values","refundAddress"],"nodeType":"FunctionCall","src":"43408:179:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"43394:193:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1129,"nodeType":"ExpressionStatement","src":"43394:193:0"}]},"documentation":{"id":1105,"nodeType":"StructuredDocumentation","src":"41347:1705:0","text":" @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, the\n initialisation code `data`, the struct for the `payable` amounts `values`, and `msg.value` as\n inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note\n that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n and any excess ether is returned to `msg.sender`. This implementation is based on Solmate:\n https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n @param salt The 32-byte random value used to create the proxy contract address.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system.\n Furthermore, we strongly recommend implementing a permissioned deploy protection by setting\n the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n proxy deployments on other chains."},"functionSelector":"00d84acb","id":1131,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate3AndInit","nameLocation":"43066:20:0","nodeType":"FunctionDefinition","parameters":{"id":1115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1107,"mutability":"mutable","name":"salt","nameLocation":"43104:4:0","nodeType":"VariableDeclaration","scope":1131,"src":"43096:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1106,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43096:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1109,"mutability":"mutable","name":"initCode","nameLocation":"43131:8:0","nodeType":"VariableDeclaration","scope":1131,"src":"43118:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1108,"name":"bytes","nodeType":"ElementaryTypeName","src":"43118:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1111,"mutability":"mutable","name":"data","nameLocation":"43162:4:0","nodeType":"VariableDeclaration","scope":1131,"src":"43149:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1110,"name":"bytes","nodeType":"ElementaryTypeName","src":"43149:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1114,"mutability":"mutable","name":"values","nameLocation":"43190:6:0","nodeType":"VariableDeclaration","scope":1131,"src":"43176:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":1113,"nodeType":"UserDefinedTypeName","pathNode":{"id":1112,"name":"Values","nameLocations":["43176:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"43176:6:0"},"referencedDeclaration":15,"src":"43176:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"}],"src":"43086:116:0"},"returnParameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1117,"mutability":"mutable","name":"newContract","nameLocation":"43235:11:0","nodeType":"VariableDeclaration","scope":1131,"src":"43227:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1116,"name":"address","nodeType":"ElementaryTypeName","src":"43227:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"43226:21:0"},"scope":1713,"src":"43057:537:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1157,"nodeType":"Block","src":"45394:360:0","statements":[{"expression":{"id":1155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1146,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"45540:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1148,"name":"_generateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"45595:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45595:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1150,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"45634:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1151,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1136,"src":"45662:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1152,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"45688:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},{"id":1153,"name":"refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"45723:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1147,"name":"deployCreate3AndInit","nodeType":"Identifier","overloadedDeclarations":[1104,1131,1158,1184],"referencedDeclaration":1104,"src":"45554:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Values_$15_memory_ptr_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes memory,bytes memory,struct CreateX.Values memory,address) returns (address)"}},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["45589:4:0","45624:8:0","45656:4:0","45680:6:0","45708:13:0"],"names":["salt","initCode","data","values","refundAddress"],"nodeType":"FunctionCall","src":"45554:193:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"45540:207:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1156,"nodeType":"ExpressionStatement","src":"45540:207:0"}]},"documentation":{"id":1132,"nodeType":"StructuredDocumentation","src":"43600:1589:0","text":" @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n an initcode factor) and using the creation bytecode `initCode`, the initialisation code `data`,\n the struct for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value`\n as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and\n transaction properties. This approach does not guarantee true randomness! In order to save deployment\n costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n `initCode` must have a `payable` constructor. This implementation is based on Solmate:\n https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @param refundAddress The 20-byte address where any excess ether is returned to.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"f5745aba","id":1158,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate3AndInit","nameLocation":"45203:20:0","nodeType":"FunctionDefinition","parameters":{"id":1142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1134,"mutability":"mutable","name":"initCode","nameLocation":"45246:8:0","nodeType":"VariableDeclaration","scope":1158,"src":"45233:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1133,"name":"bytes","nodeType":"ElementaryTypeName","src":"45233:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1136,"mutability":"mutable","name":"data","nameLocation":"45277:4:0","nodeType":"VariableDeclaration","scope":1158,"src":"45264:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1135,"name":"bytes","nodeType":"ElementaryTypeName","src":"45264:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1139,"mutability":"mutable","name":"values","nameLocation":"45305:6:0","nodeType":"VariableDeclaration","scope":1158,"src":"45291:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":1138,"nodeType":"UserDefinedTypeName","pathNode":{"id":1137,"name":"Values","nameLocations":["45291:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"45291:6:0"},"referencedDeclaration":15,"src":"45291:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"},{"constant":false,"id":1141,"mutability":"mutable","name":"refundAddress","nameLocation":"45329:13:0","nodeType":"VariableDeclaration","scope":1158,"src":"45321:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1140,"name":"address","nodeType":"ElementaryTypeName","src":"45321:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"45223:125:0"},"returnParameters":{"id":1145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1144,"mutability":"mutable","name":"newContract","nameLocation":"45381:11:0","nodeType":"VariableDeclaration","scope":1158,"src":"45373:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1143,"name":"address","nodeType":"ElementaryTypeName","src":"45373:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"45372:21:0"},"scope":1713,"src":"45194:560:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1183,"nodeType":"Block","src":"47446:357:0","statements":[{"expression":{"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1171,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1169,"src":"47592:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1173,"name":"_generateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"47647:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47647:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1175,"name":"initCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"47686:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1176,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"47714:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1177,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"47740:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"}},{"expression":{"id":1178,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"47775:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47779:6:0","memberName":"sender","nodeType":"MemberAccess","src":"47775:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1172,"name":"deployCreate3AndInit","nodeType":"Identifier","overloadedDeclarations":[1104,1131,1158,1184],"referencedDeclaration":1104,"src":"47606:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Values_$15_memory_ptr_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes memory,bytes memory,struct CreateX.Values memory,address) returns (address)"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["47641:4:0","47676:8:0","47708:4:0","47732:6:0","47760:13:0"],"names":["salt","initCode","data","values","refundAddress"],"nodeType":"FunctionCall","src":"47606:190:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47592:204:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1182,"nodeType":"ExpressionStatement","src":"47592:204:0"}]},"documentation":{"id":1159,"nodeType":"StructuredDocumentation","src":"45760:1512:0","text":" @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n an initcode factor) and using the creation bytecode `initCode`, the initialisation code `data`,\n the struct for the `payable` amounts `values`, `msg.value` as inputs. The salt value is calculated\n pseudo-randomly using a diverse selection of block and transaction properties. This approach does\n not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode`\n length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n and any excess ether is returned to `msg.sender`. This implementation is based on Solmate:\n https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n @param initCode The creation bytecode.\n @param data The initialisation code that is passed to the deployed contract.\n @param values The specific `payable` amounts for the deployment and initialisation call.\n @return newContract The 20-byte address where the contract was deployed.\n @custom:security This function allows for reentrancy, however we refrain from adding\n a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n level that potentially malicious reentrant calls do not affect your smart contract system."},"functionSelector":"2f990e3f","id":1184,"implemented":true,"kind":"function","modifiers":[],"name":"deployCreate3AndInit","nameLocation":"47286:20:0","nodeType":"FunctionDefinition","parameters":{"id":1167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1161,"mutability":"mutable","name":"initCode","nameLocation":"47329:8:0","nodeType":"VariableDeclaration","scope":1184,"src":"47316:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1160,"name":"bytes","nodeType":"ElementaryTypeName","src":"47316:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1163,"mutability":"mutable","name":"data","nameLocation":"47360:4:0","nodeType":"VariableDeclaration","scope":1184,"src":"47347:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1162,"name":"bytes","nodeType":"ElementaryTypeName","src":"47347:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1166,"mutability":"mutable","name":"values","nameLocation":"47388:6:0","nodeType":"VariableDeclaration","scope":1184,"src":"47374:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_memory_ptr","typeString":"struct CreateX.Values"},"typeName":{"id":1165,"nodeType":"UserDefinedTypeName","pathNode":{"id":1164,"name":"Values","nameLocations":["47374:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":15,"src":"47374:6:0"},"referencedDeclaration":15,"src":"47374:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$15_storage_ptr","typeString":"struct CreateX.Values"}},"visibility":"internal"}],"src":"47306:94:0"},"returnParameters":{"id":1170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1169,"mutability":"mutable","name":"newContract","nameLocation":"47433:11:0","nodeType":"VariableDeclaration","scope":1184,"src":"47425:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1168,"name":"address","nodeType":"ElementaryTypeName","src":"47425:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"47424:21:0"},"scope":1713,"src":"47277:526:0","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1195,"nodeType":"Block","src":"48605:554:0","statements":[{"AST":{"nativeSrc":"48640:513:0","nodeType":"YulBlock","src":"48640:513:0","statements":[{"nativeSrc":"48654:22:0","nodeType":"YulVariableDeclaration","src":"48654:22:0","value":{"arguments":[{"kind":"number","nativeSrc":"48671:4:0","nodeType":"YulLiteral","src":"48671:4:0","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"48665:5:0","nodeType":"YulIdentifier","src":"48665:5:0"},"nativeSrc":"48665:11:0","nodeType":"YulFunctionCall","src":"48665:11:0"},"variables":[{"name":"ptr","nativeSrc":"48658:3:0","nodeType":"YulTypedName","src":"48658:3:0","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"48696:4:0","nodeType":"YulLiteral","src":"48696:4:0","type":"","value":"0x00"},{"name":"deployer","nativeSrc":"48702:8:0","nodeType":"YulIdentifier","src":"48702:8:0"}],"functionName":{"name":"mstore","nativeSrc":"48689:6:0","nodeType":"YulIdentifier","src":"48689:6:0"},"nativeSrc":"48689:22:0","nodeType":"YulFunctionCall","src":"48689:22:0"},"nativeSrc":"48689:22:0","nodeType":"YulExpressionStatement","src":"48689:22:0"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"48732:4:0","nodeType":"YulLiteral","src":"48732:4:0","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"48738:4:0","nodeType":"YulLiteral","src":"48738:4:0","type":"","value":"0xff"}],"functionName":{"name":"mstore8","nativeSrc":"48724:7:0","nodeType":"YulIdentifier","src":"48724:7:0"},"nativeSrc":"48724:19:0","nodeType":"YulFunctionCall","src":"48724:19:0"},"nativeSrc":"48724:19:0","nodeType":"YulExpressionStatement","src":"48724:19:0"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"48763:4:0","nodeType":"YulLiteral","src":"48763:4:0","type":"","value":"0x20"},{"name":"salt","nativeSrc":"48769:4:0","nodeType":"YulIdentifier","src":"48769:4:0"}],"functionName":{"name":"mstore","nativeSrc":"48756:6:0","nodeType":"YulIdentifier","src":"48756:6:0"},"nativeSrc":"48756:18:0","nodeType":"YulFunctionCall","src":"48756:18:0"},"nativeSrc":"48756:18:0","nodeType":"YulExpressionStatement","src":"48756:18:0"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"48811:4:0","nodeType":"YulLiteral","src":"48811:4:0","type":"","value":"0x40"},{"hexValue":"21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f","kind":"string","nativeSrc":"48833:100:0","nodeType":"YulLiteral","src":"48833:100:0","type":""}],"functionName":{"name":"mstore","nativeSrc":"48787:6:0","nodeType":"YulIdentifier","src":"48787:6:0"},"nativeSrc":"48787:160:0","nodeType":"YulFunctionCall","src":"48787:160:0"},"nativeSrc":"48787:160:0","nodeType":"YulExpressionStatement","src":"48787:160:0"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"48967:4:0","nodeType":"YulLiteral","src":"48967:4:0","type":"","value":"0x14"},{"arguments":[{"kind":"number","nativeSrc":"48983:4:0","nodeType":"YulLiteral","src":"48983:4:0","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"48989:4:0","nodeType":"YulLiteral","src":"48989:4:0","type":"","value":"0x55"}],"functionName":{"name":"keccak256","nativeSrc":"48973:9:0","nodeType":"YulIdentifier","src":"48973:9:0"},"nativeSrc":"48973:21:0","nodeType":"YulFunctionCall","src":"48973:21:0"}],"functionName":{"name":"mstore","nativeSrc":"48960:6:0","nodeType":"YulIdentifier","src":"48960:6:0"},"nativeSrc":"48960:35:0","nodeType":"YulFunctionCall","src":"48960:35:0"},"nativeSrc":"48960:35:0","nodeType":"YulExpressionStatement","src":"48960:35:0"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"49015:4:0","nodeType":"YulLiteral","src":"49015:4:0","type":"","value":"0x40"},{"name":"ptr","nativeSrc":"49021:3:0","nodeType":"YulIdentifier","src":"49021:3:0"}],"functionName":{"name":"mstore","nativeSrc":"49008:6:0","nodeType":"YulIdentifier","src":"49008:6:0"},"nativeSrc":"49008:17:0","nodeType":"YulFunctionCall","src":"49008:17:0"},"nativeSrc":"49008:17:0","nodeType":"YulExpressionStatement","src":"49008:17:0"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"49045:4:0","nodeType":"YulLiteral","src":"49045:4:0","type":"","value":"0x00"},{"kind":"number","nativeSrc":"49051:6:0","nodeType":"YulLiteral","src":"49051:6:0","type":"","value":"0xd694"}],"functionName":{"name":"mstore","nativeSrc":"49038:6:0","nodeType":"YulIdentifier","src":"49038:6:0"},"nativeSrc":"49038:20:0","nodeType":"YulFunctionCall","src":"49038:20:0"},"nativeSrc":"49038:20:0","nodeType":"YulExpressionStatement","src":"49038:20:0"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"49079:4:0","nodeType":"YulLiteral","src":"49079:4:0","type":"","value":"0x34"},{"kind":"number","nativeSrc":"49085:4:0","nodeType":"YulLiteral","src":"49085:4:0","type":"","value":"0x01"}],"functionName":{"name":"mstore8","nativeSrc":"49071:7:0","nodeType":"YulIdentifier","src":"49071:7:0"},"nativeSrc":"49071:19:0","nodeType":"YulFunctionCall","src":"49071:19:0"},"nativeSrc":"49071:19:0","nodeType":"YulExpressionStatement","src":"49071:19:0"},{"nativeSrc":"49103:40:0","nodeType":"YulAssignment","src":"49103:40:0","value":{"arguments":[{"kind":"number","nativeSrc":"49132:4:0","nodeType":"YulLiteral","src":"49132:4:0","type":"","value":"0x1e"},{"kind":"number","nativeSrc":"49138:4:0","nodeType":"YulLiteral","src":"49138:4:0","type":"","value":"0x17"}],"functionName":{"name":"keccak256","nativeSrc":"49122:9:0","nodeType":"YulIdentifier","src":"49122:9:0"},"nativeSrc":"49122:21:0","nodeType":"YulFunctionCall","src":"49122:21:0"},"variableNames":[{"name":"computedAddress","nativeSrc":"49103:15:0","nodeType":"YulIdentifier","src":"49103:15:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1192,"isOffset":false,"isSlot":false,"src":"49103:15:0","valueSize":1},{"declaration":1189,"isOffset":false,"isSlot":false,"src":"48702:8:0","valueSize":1},{"declaration":1187,"isOffset":false,"isSlot":false,"src":"48769:4:0","valueSize":1}],"flags":["memory-safe"],"id":1194,"nodeType":"InlineAssembly","src":"48615:538:0"}]},"documentation":{"id":1185,"nodeType":"StructuredDocumentation","src":"47809:682:0","text":" @dev Returns the address where a contract will be stored if deployed via `deployer` using\n the `CREATE3` pattern (i.e. without an initcode factor). Any change in the `salt` value will\n result in a new destination address. This implementation is based on Solady:\n https://web.archive.org/web/20230921114120/https://raw.githubusercontent.com/Vectorized/solady/1c1ac4ad9c8558001e92d8d1a7722ef67bec75df/src/utils/CREATE3.sol.\n @param salt The 32-byte random value used to create the proxy contract address.\n @param deployer The 20-byte deployer address.\n @return computedAddress The 20-byte address where a contract will be stored."},"functionSelector":"42d654fc","id":1196,"implemented":true,"kind":"function","modifiers":[],"name":"computeCreate3Address","nameLocation":"48505:21:0","nodeType":"FunctionDefinition","parameters":{"id":1190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"salt","nameLocation":"48535:4:0","nodeType":"VariableDeclaration","scope":1196,"src":"48527:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1186,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48527:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1189,"mutability":"mutable","name":"deployer","nameLocation":"48549:8:0","nodeType":"VariableDeclaration","scope":1196,"src":"48541:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1188,"name":"address","nodeType":"ElementaryTypeName","src":"48541:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"48526:32:0"},"returnParameters":{"id":1193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1192,"mutability":"mutable","name":"computedAddress","nameLocation":"48588:15:0","nodeType":"VariableDeclaration","scope":1196,"src":"48580:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1191,"name":"address","nodeType":"ElementaryTypeName","src":"48580:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"48579:25:0"},"scope":1713,"src":"48496:663:0","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":1211,"nodeType":"Block","src":"49893:87:0","statements":[{"expression":{"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1204,"name":"computedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"49903:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1206,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1199,"src":"49950:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1207,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"49966:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1205,"name":"computeCreate3Address","nodeType":"Identifier","overloadedDeclarations":[1196,1212],"referencedDeclaration":1196,"src":"49921:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,address) pure returns (address)"}},"id":1208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["49944:4:0","49956:8:0"],"names":["salt","deployer"],"nodeType":"FunctionCall","src":"49921:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"49903:70:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1210,"nodeType":"ExpressionStatement","src":"49903:70:0"}]},"documentation":{"id":1197,"nodeType":"StructuredDocumentation","src":"49165:632:0","text":" @dev Returns the address where a contract will be stored if deployed via this contract using\n the `CREATE3` pattern (i.e. without an initcode factor). Any change in the `salt` value will\n result in a new destination address. This implementation is based on Solady:\n https://web.archive.org/web/20230921114120/https://raw.githubusercontent.com/Vectorized/solady/1c1ac4ad9c8558001e92d8d1a7722ef67bec75df/src/utils/CREATE3.sol.\n @param salt The 32-byte random value used to create the proxy contract address.\n @return computedAddress The 20-byte address where a contract will be stored."},"functionSelector":"6cec2536","id":1212,"implemented":true,"kind":"function","modifiers":[],"name":"computeCreate3Address","nameLocation":"49811:21:0","nodeType":"FunctionDefinition","parameters":{"id":1200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1199,"mutability":"mutable","name":"salt","nameLocation":"49841:4:0","nodeType":"VariableDeclaration","scope":1212,"src":"49833:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1198,"name":"bytes32","nodeType":"ElementaryTypeName","src":"49833:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"49832:14:0"},"returnParameters":{"id":1203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1202,"mutability":"mutable","name":"computedAddress","nameLocation":"49876:15:0","nodeType":"VariableDeclaration","scope":1212,"src":"49868:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1201,"name":"address","nodeType":"ElementaryTypeName","src":"49868:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"49867:25:0"},"scope":1713,"src":"49802:178:0","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":1346,"nodeType":"Block","src":"51245:1951:0","statements":[{"assignments":[1222,1225],"declarations":[{"constant":false,"id":1222,"mutability":"mutable","name":"senderBytes","nameLocation":"51268:11:0","nodeType":"VariableDeclaration","scope":1346,"src":"51256:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"},"typeName":{"id":1221,"nodeType":"UserDefinedTypeName","pathNode":{"id":1220,"name":"SenderBytes","nameLocations":["51256:11:0"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"51256:11:0"},"referencedDeclaration":20,"src":"51256:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"visibility":"internal"},{"constant":false,"id":1225,"mutability":"mutable","name":"redeployProtectionFlag","nameLocation":"51304:22:0","nodeType":"VariableDeclaration","scope":1346,"src":"51281:45:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"},"typeName":{"id":1224,"nodeType":"UserDefinedTypeName","pathNode":{"id":1223,"name":"RedeployProtectionFlag","nameLocations":["51281:22:0"],"nodeType":"IdentifierPath","referencedDeclaration":25,"src":"51281:22:0"},"referencedDeclaration":25,"src":"51281:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"visibility":"internal"}],"id":1229,"initialValue":{"arguments":[{"id":1227,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"51348:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1226,"name":"_parseSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"51330:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"function (bytes32) view returns (enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"id":1228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["51342:4:0"],"names":["salt"],"nodeType":"FunctionCall","src":"51330:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"VariableDeclarationStatement","src":"51255:99:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"},"id":1233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1230,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"51369:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1231,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"51384:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"51396:9:0","memberName":"MsgSender","nodeType":"MemberAccess","referencedDeclaration":17,"src":"51384:21:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"src":"51369:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"},"id":1237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1234,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1225,"src":"51409:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1235,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"51435:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"51458:4:0","memberName":"True","nodeType":"MemberAccess","referencedDeclaration":22,"src":"51435:27:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"src":"51409:53:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"51369:93:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"},"id":1256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1253,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"51672:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1254,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"51687:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"51699:9:0","memberName":"MsgSender","nodeType":"MemberAccess","referencedDeclaration":17,"src":"51687:21:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"src":"51672:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1225,"src":"51712:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1258,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"51738:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"51761:5:0","memberName":"False","nodeType":"MemberAccess","referencedDeclaration":23,"src":"51738:28:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"src":"51712:54:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"51672:94:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1280,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"51951:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1281,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"51966:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"51978:9:0","memberName":"MsgSender","nodeType":"MemberAccess","referencedDeclaration":17,"src":"51966:21:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"src":"51951:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1289,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"52167:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1290,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"52182:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52194:11:0","memberName":"ZeroAddress","nodeType":"MemberAccess","referencedDeclaration":18,"src":"52182:23:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"src":"52167:38:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"},"id":1296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1293,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1225,"src":"52209:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1294,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"52235:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52258:4:0","memberName":"True","nodeType":"MemberAccess","referencedDeclaration":22,"src":"52235:27:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"src":"52209:53:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"52167:95:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1310,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"52600:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1311,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"52615:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52627:11:0","memberName":"ZeroAddress","nodeType":"MemberAccess","referencedDeclaration":18,"src":"52615:23:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"src":"52600:38:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1314,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1225,"src":"52642:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1315,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"52668:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52691:11:0","memberName":"Unspecified","nodeType":"MemberAccess","referencedDeclaration":24,"src":"52668:34:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"src":"52642:60:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"52600:102:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1340,"nodeType":"Block","src":"52887:303:0","statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1324,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"53103:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1325,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"53118:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1326,"name":"_generateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"53126:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53126:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"53118:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1329,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"53117:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1336,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"53175:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"53117:62:0","trueExpression":{"arguments":[{"arguments":[{"id":1333,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"53166:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1331,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"53155:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53159:6:0","memberName":"encode","nodeType":"MemberAccess","src":"53155:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53155:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1330,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"53145:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53145:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"53103:76:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1339,"nodeType":"ExpressionStatement","src":"53103:76:0"}]},"id":1341,"nodeType":"IfStatement","src":"52583:607:0","trueBody":{"id":1323,"nodeType":"Block","src":"52713:168:0","statements":[{"errorCall":{"arguments":[{"id":1320,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"52863:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1319,"name":"InvalidSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"52841:11:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["52854:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"52841:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1322,"nodeType":"RevertStatement","src":"52834:36:0"}]}},"id":1342,"nodeType":"IfStatement","src":"52163:1027:0","trueBody":{"id":1309,"nodeType":"Block","src":"52264:313:0","statements":[{"expression":{"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1298,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"52500:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1302,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"52541:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52547:7:0","memberName":"chainid","nodeType":"MemberAccess","src":"52541:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"52533:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1300,"name":"bytes32","nodeType":"ElementaryTypeName","src":"52533:7:0","typeDescriptions":{}}},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52533:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1305,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"52560:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1299,"name":"_efficientHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"52514:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["52530:1:0","52557:1:0"],"names":["a","b"],"nodeType":"FunctionCall","src":"52514:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"52500:66:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1308,"nodeType":"ExpressionStatement","src":"52500:66:0"}]}},"id":1343,"nodeType":"IfStatement","src":"51947:1243:0","trueBody":{"id":1288,"nodeType":"Block","src":"51989:168:0","statements":[{"errorCall":{"arguments":[{"id":1285,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"52139:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1284,"name":"InvalidSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61,"src":"52117:11:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["52130:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"52117:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1287,"nodeType":"RevertStatement","src":"52110:36:0"}]}},"id":1344,"nodeType":"IfStatement","src":"51668:1522:0","trueBody":{"id":1279,"nodeType":"Block","src":"51768:173:0","statements":[{"expression":{"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1262,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"51849:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":1270,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"51906:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"51910:6:0","memberName":"sender","nodeType":"MemberAccess","src":"51906:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51898:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1268,"name":"uint160","nodeType":"ElementaryTypeName","src":"51898:7:0","typeDescriptions":{}}},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51898:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51890:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1266,"name":"uint256","nodeType":"ElementaryTypeName","src":"51890:7:0","typeDescriptions":{}}},"id":1273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51890:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1265,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"51882:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1264,"name":"bytes32","nodeType":"ElementaryTypeName","src":"51882:7:0","typeDescriptions":{}}},"id":1274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51882:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1275,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"51924:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1263,"name":"_efficientHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"51863:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["51879:1:0","51921:1:0"],"names":["a","b"],"nodeType":"FunctionCall","src":"51863:67:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"51849:81:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1278,"nodeType":"ExpressionStatement","src":"51849:81:0"}]}},"id":1345,"nodeType":"IfStatement","src":"51365:1825:0","trueBody":{"id":1252,"nodeType":"Block","src":"51464:198:0","statements":[{"expression":{"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1239,"name":"guardedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"51583:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1243,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"51618:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"51622:6:0","memberName":"sender","nodeType":"MemberAccess","src":"51618:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1245,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"51630:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"51636:7:0","memberName":"chainid","nodeType":"MemberAccess","src":"51630:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1247,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"51645:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1241,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"51607:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"51611:6:0","memberName":"encode","nodeType":"MemberAccess","src":"51607:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51607:43:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1240,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"51597:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51597:54:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"51583:68:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1251,"nodeType":"ExpressionStatement","src":"51583:68:0"}]}}]},"documentation":{"id":1213,"nodeType":"StructuredDocumentation","src":"50269:897:0","text":" @dev Implements different safeguarding mechanisms depending on the encoded values in the salt\n (`||` stands for byte-wise concatenation):\n => salt (32 bytes) = 0xbebebebebebebebebebebebebebebebebebebebe||ff||1212121212121212121212\n - The first 20 bytes (i.e. `bebebebebebebebebebebebebebebebebebebebe`) may be used to\n implement a permissioned deploy protection by setting them equal to `msg.sender`,\n - The 21st byte (i.e. `ff`) may be used to implement a cross-chain redeploy protection by\n setting it equal to `0x01`,\n - The last random 11 bytes (i.e. `1212121212121212121212`) allow for 2**88 bits of entropy\n for mining a salt.\n @param salt The 32-byte random value used to create the contract address.\n @return guardedSalt The guarded 32-byte random value used to create the contract address."},"id":1347,"implemented":true,"kind":"function","modifiers":[],"name":"_guard","nameLocation":"51180:6:0","nodeType":"FunctionDefinition","parameters":{"id":1216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1215,"mutability":"mutable","name":"salt","nameLocation":"51195:4:0","nodeType":"VariableDeclaration","scope":1347,"src":"51187:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1214,"name":"bytes32","nodeType":"ElementaryTypeName","src":"51187:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"51186:14:0"},"returnParameters":{"id":1219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1218,"mutability":"mutable","name":"guardedSalt","nameLocation":"51232:11:0","nodeType":"VariableDeclaration","scope":1347,"src":"51224:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"51224:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"51223:21:0"},"scope":1713,"src":"51171:2025:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1584,"nodeType":"Block","src":"53793:1580:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1363,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"53823:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53815:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":1361,"name":"bytes20","nodeType":"ElementaryTypeName","src":"53815:7:0","typeDescriptions":{}}},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53815:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":1360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53807:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1359,"name":"address","nodeType":"ElementaryTypeName","src":"53807:7:0","typeDescriptions":{}}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53807:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1366,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"53833:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53837:6:0","memberName":"sender","nodeType":"MemberAccess","src":"53833:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"53807:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":1371,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"53854:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1373,"indexExpression":{"hexValue":"3230","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53859:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53854:8:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"53847:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1369,"name":"bytes1","nodeType":"ElementaryTypeName","src":"53847:6:0","typeDescriptions":{}}},"id":1374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53847:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"01","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"53867:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2","typeString":"literal_string hex\"01\""},"value":"\u0001"},"src":"53847:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"53807:67:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1393,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54019:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54011:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":1391,"name":"bytes20","nodeType":"ElementaryTypeName","src":"54011:7:0","typeDescriptions":{}}},"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54011:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":1390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54003:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1389,"name":"address","nodeType":"ElementaryTypeName","src":"54003:7:0","typeDescriptions":{}}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54003:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1396,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"54029:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54033:6:0","memberName":"sender","nodeType":"MemberAccess","src":"54029:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54003:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":1401,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54050:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1403,"indexExpression":{"hexValue":"3230","id":1402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54055:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"54050:8:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54043:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1399,"name":"bytes1","nodeType":"ElementaryTypeName","src":"54043:6:0","typeDescriptions":{}}},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54043:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"00","id":1405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"54063:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a","typeString":"literal_string hex\"00\""},"value":"\u0000"},"src":"54043:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"54003:67:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1423,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54216:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54208:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":1421,"name":"bytes20","nodeType":"ElementaryTypeName","src":"54208:7:0","typeDescriptions":{}}},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54208:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":1420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54200:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1419,"name":"address","nodeType":"ElementaryTypeName","src":"54200:7:0","typeDescriptions":{}}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54200:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1426,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"54226:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54230:6:0","memberName":"sender","nodeType":"MemberAccess","src":"54226:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54200:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1444,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54388:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54380:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":1442,"name":"bytes20","nodeType":"ElementaryTypeName","src":"54380:7:0","typeDescriptions":{}}},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54380:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":1441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54372:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1440,"name":"address","nodeType":"ElementaryTypeName","src":"54372:7:0","typeDescriptions":{}}},"id":1446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54372:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54406:1:0","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":1448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54398:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1447,"name":"address","nodeType":"ElementaryTypeName","src":"54398:7:0","typeDescriptions":{}}},"id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54398:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54372:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":1454,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54419:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1456,"indexExpression":{"hexValue":"3230","id":1455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54424:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"54419:8:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54412:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1452,"name":"bytes1","nodeType":"ElementaryTypeName","src":"54412:6:0","typeDescriptions":{}}},"id":1457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54412:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"01","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"54432:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2","typeString":"literal_string hex\"01\""},"value":"\u0001"},"src":"54412:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"54372:67:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1476,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54586:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54578:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":1474,"name":"bytes20","nodeType":"ElementaryTypeName","src":"54578:7:0","typeDescriptions":{}}},"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54578:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":1473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54570:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1472,"name":"address","nodeType":"ElementaryTypeName","src":"54570:7:0","typeDescriptions":{}}},"id":1478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54570:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54604:1:0","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":1480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54596:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1479,"name":"address","nodeType":"ElementaryTypeName","src":"54596:7:0","typeDescriptions":{}}},"id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54596:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54570:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":1486,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54617:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1488,"indexExpression":{"hexValue":"3230","id":1487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54622:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"54617:8:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54610:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1484,"name":"bytes1","nodeType":"ElementaryTypeName","src":"54610:6:0","typeDescriptions":{}}},"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54610:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"00","id":1490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"54630:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a","typeString":"literal_string hex\"00\""},"value":"\u0000"},"src":"54610:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"54570:67:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1508,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54785:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54777:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":1506,"name":"bytes20","nodeType":"ElementaryTypeName","src":"54777:7:0","typeDescriptions":{}}},"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54777:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":1505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54769:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1504,"name":"address","nodeType":"ElementaryTypeName","src":"54769:7:0","typeDescriptions":{}}},"id":1510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54769:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54803:1:0","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":1512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54795:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1511,"name":"address","nodeType":"ElementaryTypeName","src":"54795:7:0","typeDescriptions":{}}},"id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54795:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54769:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":1529,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"54950:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1531,"indexExpression":{"hexValue":"3230","id":1530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54955:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"54950:8:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54943:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1527,"name":"bytes1","nodeType":"ElementaryTypeName","src":"54943:6:0","typeDescriptions":{}}},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54943:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"01","id":1533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"54963:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2","typeString":"literal_string hex\"01\""},"value":"\u0001"},"src":"54943:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":1548,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"55103:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1550,"indexExpression":{"hexValue":"3230","id":1549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55108:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"55103:8:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55096:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1546,"name":"bytes1","nodeType":"ElementaryTypeName","src":"55096:6:0","typeDescriptions":{}}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55096:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"00","id":1552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"55116:7:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a","typeString":"literal_string hex\"00\""},"value":"\u0000"},"src":"55096:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1575,"nodeType":"Block","src":"55246:121:0","statements":[{"expression":{"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1565,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"55261:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1566,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"55274:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1567,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"55260:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1568,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"55301:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"55313:6:0","memberName":"Random","nodeType":"MemberAccess","referencedDeclaration":19,"src":"55301:18:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1570,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"55321:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"55344:11:0","memberName":"Unspecified","nodeType":"MemberAccess","referencedDeclaration":24,"src":"55321:34:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1572,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"55300:56:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"55260:96:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1574,"nodeType":"ExpressionStatement","src":"55260:96:0"}]},"id":1576,"nodeType":"IfStatement","src":"55092:275:0","trueBody":{"id":1564,"nodeType":"Block","src":"55125:115:0","statements":[{"expression":{"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1554,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"55140:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1555,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"55153:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1556,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"55139:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1557,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"55180:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"55192:6:0","memberName":"Random","nodeType":"MemberAccess","referencedDeclaration":19,"src":"55180:18:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1559,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"55200:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"55223:5:0","memberName":"False","nodeType":"MemberAccess","referencedDeclaration":23,"src":"55200:28:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1561,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"55179:50:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"55139:90:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1563,"nodeType":"ExpressionStatement","src":"55139:90:0"}]}},"id":1577,"nodeType":"IfStatement","src":"54939:428:0","trueBody":{"id":1545,"nodeType":"Block","src":"54972:114:0","statements":[{"expression":{"id":1543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1535,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"54987:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1536,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"55000:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1537,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"54986:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1538,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"55027:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"55039:6:0","memberName":"Random","nodeType":"MemberAccess","referencedDeclaration":19,"src":"55027:18:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1540,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"55047:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"55070:4:0","memberName":"True","nodeType":"MemberAccess","referencedDeclaration":22,"src":"55047:27:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1542,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"55026:49:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"54986:89:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1544,"nodeType":"ExpressionStatement","src":"54986:89:0"}]}},"id":1578,"nodeType":"IfStatement","src":"54765:602:0","trueBody":{"id":1526,"nodeType":"Block","src":"54807:126:0","statements":[{"expression":{"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1516,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"54822:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1517,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"54835:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1518,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"54821:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1519,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"54862:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54874:11:0","memberName":"ZeroAddress","nodeType":"MemberAccess","referencedDeclaration":18,"src":"54862:23:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1521,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"54887:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54910:11:0","memberName":"Unspecified","nodeType":"MemberAccess","referencedDeclaration":24,"src":"54887:34:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1523,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"54861:61:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"54821:101:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1525,"nodeType":"ExpressionStatement","src":"54821:101:0"}]}},"id":1579,"nodeType":"IfStatement","src":"54566:801:0","trueBody":{"id":1503,"nodeType":"Block","src":"54639:120:0","statements":[{"expression":{"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1493,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"54654:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1494,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"54667:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1495,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"54653:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1496,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"54694:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54706:11:0","memberName":"ZeroAddress","nodeType":"MemberAccess","referencedDeclaration":18,"src":"54694:23:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1498,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"54719:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54742:5:0","memberName":"False","nodeType":"MemberAccess","referencedDeclaration":23,"src":"54719:28:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"54693:55:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"54653:95:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1502,"nodeType":"ExpressionStatement","src":"54653:95:0"}]}},"id":1580,"nodeType":"IfStatement","src":"54368:999:0","trueBody":{"id":1471,"nodeType":"Block","src":"54441:119:0","statements":[{"expression":{"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1461,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"54456:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1462,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"54469:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1463,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"54455:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1464,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"54496:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54508:11:0","memberName":"ZeroAddress","nodeType":"MemberAccess","referencedDeclaration":18,"src":"54496:23:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1466,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"54521:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54544:4:0","memberName":"True","nodeType":"MemberAccess","referencedDeclaration":22,"src":"54521:27:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1468,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"54495:54:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"54455:94:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1470,"nodeType":"ExpressionStatement","src":"54455:94:0"}]}},"id":1581,"nodeType":"IfStatement","src":"54196:1171:0","trueBody":{"id":1439,"nodeType":"Block","src":"54238:124:0","statements":[{"expression":{"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1429,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"54253:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1430,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"54266:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1431,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"54252:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1432,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"54293:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54305:9:0","memberName":"MsgSender","nodeType":"MemberAccess","referencedDeclaration":17,"src":"54293:21:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1434,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"54316:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54339:11:0","memberName":"Unspecified","nodeType":"MemberAccess","referencedDeclaration":24,"src":"54316:34:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"54292:59:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"54252:99:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1438,"nodeType":"ExpressionStatement","src":"54252:99:0"}]}},"id":1582,"nodeType":"IfStatement","src":"53999:1368:0","trueBody":{"id":1418,"nodeType":"Block","src":"54072:118:0","statements":[{"expression":{"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1408,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"54087:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1409,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"54100:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1410,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"54086:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1411,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"54127:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54139:9:0","memberName":"MsgSender","nodeType":"MemberAccess","referencedDeclaration":17,"src":"54127:21:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1413,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"54150:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"54173:5:0","memberName":"False","nodeType":"MemberAccess","referencedDeclaration":23,"src":"54150:28:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1415,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"54126:53:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"54086:93:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1417,"nodeType":"ExpressionStatement","src":"54086:93:0"}]}},"id":1583,"nodeType":"IfStatement","src":"53803:1564:0","trueBody":{"id":1388,"nodeType":"Block","src":"53876:117:0","statements":[{"expression":{"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1378,"name":"senderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"53891:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"id":1379,"name":"redeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"53904:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1380,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"53890:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":1381,"name":"SenderBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"53931:11:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SenderBytes_$20_$","typeString":"type(enum CreateX.SenderBytes)"}},"id":1382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53943:9:0","memberName":"MsgSender","nodeType":"MemberAccess","referencedDeclaration":17,"src":"53931:21:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},{"expression":{"id":1383,"name":"RedeployProtectionFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"53954:22:0","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"type(enum CreateX.RedeployProtectionFlag)"}},"id":1384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53977:4:0","memberName":"True","nodeType":"MemberAccess","referencedDeclaration":22,"src":"53954:27:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}}],"id":1385,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"53930:52:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SenderBytes_$20_$_t_enum$_RedeployProtectionFlag_$25_$","typeString":"tuple(enum CreateX.SenderBytes,enum CreateX.RedeployProtectionFlag)"}},"src":"53890:92:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1387,"nodeType":"ExpressionStatement","src":"53890:92:0"}]}}]},"documentation":{"id":1348,"nodeType":"StructuredDocumentation","src":"53202:443:0","text":" @dev Returns the enum for the selection of a permissioned deploy protection as well as a\n cross-chain redeploy protection.\n @param salt The 32-byte random value used to create the contract address.\n @return senderBytes The 8-byte enum for the selection of a permissioned deploy protection.\n @return redeployProtectionFlag The 8-byte enum for the selection of a cross-chain redeploy\n protection."},"id":1585,"implemented":true,"kind":"function","modifiers":[],"name":"_parseSalt","nameLocation":"53659:10:0","nodeType":"FunctionDefinition","parameters":{"id":1351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1350,"mutability":"mutable","name":"salt","nameLocation":"53687:4:0","nodeType":"VariableDeclaration","scope":1585,"src":"53679:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1349,"name":"bytes32","nodeType":"ElementaryTypeName","src":"53679:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"53669:28:0"},"returnParameters":{"id":1358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1354,"mutability":"mutable","name":"senderBytes","nameLocation":"53733:11:0","nodeType":"VariableDeclaration","scope":1585,"src":"53721:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"},"typeName":{"id":1353,"nodeType":"UserDefinedTypeName","pathNode":{"id":1352,"name":"SenderBytes","nameLocations":["53721:11:0"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"53721:11:0"},"referencedDeclaration":20,"src":"53721:11:0","typeDescriptions":{"typeIdentifier":"t_enum$_SenderBytes_$20","typeString":"enum CreateX.SenderBytes"}},"visibility":"internal"},{"constant":false,"id":1357,"mutability":"mutable","name":"redeployProtectionFlag","nameLocation":"53769:22:0","nodeType":"VariableDeclaration","scope":1585,"src":"53746:45:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"},"typeName":{"id":1356,"nodeType":"UserDefinedTypeName","pathNode":{"id":1355,"name":"RedeployProtectionFlag","nameLocations":["53746:22:0"],"nodeType":"IdentifierPath","referencedDeclaration":25,"src":"53746:22:0"},"referencedDeclaration":25,"src":"53746:22:0","typeDescriptions":{"typeIdentifier":"t_enum$_RedeployProtectionFlag_$25","typeString":"enum CreateX.RedeployProtectionFlag"}},"visibility":"internal"}],"src":"53720:72:0"},"scope":1713,"src":"53650:1723:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1596,"nodeType":"Block","src":"55763:150:0","statements":[{"AST":{"nativeSrc":"55798:109:0","nodeType":"YulBlock","src":"55798:109:0","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"55819:4:0","nodeType":"YulLiteral","src":"55819:4:0","type":"","value":"0x00"},{"name":"a","nativeSrc":"55825:1:0","nodeType":"YulIdentifier","src":"55825:1:0"}],"functionName":{"name":"mstore","nativeSrc":"55812:6:0","nodeType":"YulIdentifier","src":"55812:6:0"},"nativeSrc":"55812:15:0","nodeType":"YulFunctionCall","src":"55812:15:0"},"nativeSrc":"55812:15:0","nodeType":"YulExpressionStatement","src":"55812:15:0"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"55847:4:0","nodeType":"YulLiteral","src":"55847:4:0","type":"","value":"0x20"},{"name":"b","nativeSrc":"55853:1:0","nodeType":"YulIdentifier","src":"55853:1:0"}],"functionName":{"name":"mstore","nativeSrc":"55840:6:0","nodeType":"YulIdentifier","src":"55840:6:0"},"nativeSrc":"55840:15:0","nodeType":"YulFunctionCall","src":"55840:15:0"},"nativeSrc":"55840:15:0","nodeType":"YulExpressionStatement","src":"55840:15:0"},{"nativeSrc":"55868:29:0","nodeType":"YulAssignment","src":"55868:29:0","value":{"arguments":[{"kind":"number","nativeSrc":"55886:4:0","nodeType":"YulLiteral","src":"55886:4:0","type":"","value":"0x00"},{"kind":"number","nativeSrc":"55892:4:0","nodeType":"YulLiteral","src":"55892:4:0","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"55876:9:0","nodeType":"YulIdentifier","src":"55876:9:0"},"nativeSrc":"55876:21:0","nodeType":"YulFunctionCall","src":"55876:21:0"},"variableNames":[{"name":"hash","nativeSrc":"55868:4:0","nodeType":"YulIdentifier","src":"55868:4:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1588,"isOffset":false,"isSlot":false,"src":"55825:1:0","valueSize":1},{"declaration":1590,"isOffset":false,"isSlot":false,"src":"55853:1:0","valueSize":1},{"declaration":1593,"isOffset":false,"isSlot":false,"src":"55868:4:0","valueSize":1}],"flags":["memory-safe"],"id":1595,"nodeType":"InlineAssembly","src":"55773:134:0"}]},"documentation":{"id":1586,"nodeType":"StructuredDocumentation","src":"55379:296:0","text":" @dev Returns the `keccak256` hash of `a` and `b` after concatenation.\n @param a The first 32-byte value to be concatenated and hashed.\n @param b The second 32-byte value to be concatenated and hashed.\n @return hash The 32-byte `keccak256` hash of `a` and `b`."},"id":1597,"implemented":true,"kind":"function","modifiers":[],"name":"_efficientHash","nameLocation":"55689:14:0","nodeType":"FunctionDefinition","parameters":{"id":1591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1588,"mutability":"mutable","name":"a","nameLocation":"55712:1:0","nodeType":"VariableDeclaration","scope":1597,"src":"55704:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"55704:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1590,"mutability":"mutable","name":"b","nameLocation":"55723:1:0","nodeType":"VariableDeclaration","scope":1597,"src":"55715:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1589,"name":"bytes32","nodeType":"ElementaryTypeName","src":"55715:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"55703:22:0"},"returnParameters":{"id":1594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1593,"mutability":"mutable","name":"hash","nameLocation":"55757:4:0","nodeType":"VariableDeclaration","scope":1597,"src":"55749:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1592,"name":"bytes32","nodeType":"ElementaryTypeName","src":"55749:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"55748:14:0"},"scope":1713,"src":"55680:233:0","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1630,"nodeType":"Block","src":"56176:1285:0","statements":[{"id":1629,"nodeType":"UncheckedBlock","src":"56186:1269:0","statements":[{"expression":{"id":1627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1603,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"56210:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1608,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"57182:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57188:6:0","memberName":"number","nodeType":"MemberAccess","src":"57182:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"3332","id":1610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57197:2:0","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"57182:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1607,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"57172:9:0","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":1612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57172:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1613,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"57222:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57228:8:0","memberName":"coinbase","nodeType":"MemberAccess","src":"57222:14:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":1615,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"57258:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57264:6:0","memberName":"number","nodeType":"MemberAccess","src":"57258:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1617,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"57292:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57298:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"57292:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1619,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"57329:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57335:10:0","memberName":"prevrandao","nodeType":"MemberAccess","src":"57329:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1621,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"57367:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57373:7:0","memberName":"chainid","nodeType":"MemberAccess","src":"57367:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1623,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"57402:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57406:6:0","memberName":"sender","nodeType":"MemberAccess","src":"57402:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1605,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"56244:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"56248:6:0","memberName":"encode","nodeType":"MemberAccess","src":"56244:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56244:1186:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1604,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"56217:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56217:1227:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"56210:1234:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1628,"nodeType":"ExpressionStatement","src":"56210:1234:0"}]}]},"documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"55919:190:0","text":" @dev Generates pseudo-randomly a salt value using a diverse selection of block and\n transaction properties.\n @return salt The 32-byte pseudo-random salt value."},"id":1631,"implemented":true,"kind":"function","modifiers":[],"name":"_generateSalt","nameLocation":"56123:13:0","nodeType":"FunctionDefinition","parameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"56136:2:0"},"returnParameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"salt","nameLocation":"56170:4:0","nodeType":"VariableDeclaration","scope":1631,"src":"56162:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1600,"name":"bytes32","nodeType":"ElementaryTypeName","src":"56162:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"56161:14:0"},"scope":1713,"src":"56114:1347:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1660,"nodeType":"Block","src":"57776:715:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"58342:8:0","subExpression":{"id":1639,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"58343:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1641,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"58354:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58377:1:0","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":1643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58369:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1642,"name":"address","nodeType":"ElementaryTypeName","src":"58369:7:0","typeDescriptions":{}}},"id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58369:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58354:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"58342:37:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1648,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"58383:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58395:4:0","memberName":"code","nodeType":"MemberAccess","src":"58383:16:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58400:6:0","memberName":"length","nodeType":"MemberAccess","src":"58383:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58410:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"58383:28:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"58342:69:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1659,"nodeType":"IfStatement","src":"58338:147:0","trueBody":{"id":1658,"nodeType":"Block","src":"58413:72:0","statements":[{"errorCall":{"arguments":[{"id":1655,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"58467:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1654,"name":"FailedContractCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"58434:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["58458:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"58434:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1657,"nodeType":"RevertStatement","src":"58427:47:0"}]}}]},"documentation":{"id":1632,"nodeType":"StructuredDocumentation","src":"57467:211:0","text":" @dev Ensures that `newContract` is a non-zero byte contract.\n @param success The Boolean success condition.\n @param newContract The 20-byte address where the contract was deployed."},"id":1661,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSuccessfulContractCreation","nameLocation":"57692:34:0","nodeType":"FunctionDefinition","parameters":{"id":1637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1634,"mutability":"mutable","name":"success","nameLocation":"57732:7:0","nodeType":"VariableDeclaration","scope":1661,"src":"57727:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1633,"name":"bool","nodeType":"ElementaryTypeName","src":"57727:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1636,"mutability":"mutable","name":"newContract","nameLocation":"57749:11:0","nodeType":"VariableDeclaration","scope":1661,"src":"57741:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1635,"name":"address","nodeType":"ElementaryTypeName","src":"57741:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"57726:35:0"},"returnParameters":{"id":1638,"nodeType":"ParameterList","parameters":[],"src":"57776:0:0"},"scope":1713,"src":"57683:808:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1685,"nodeType":"Block","src":"58739:151:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1667,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"58753:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58776:1:0","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":1669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58768:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1668,"name":"address","nodeType":"ElementaryTypeName","src":"58768:7:0","typeDescriptions":{}}},"id":1671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58768:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58753:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1673,"name":"newContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"58782:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58794:4:0","memberName":"code","nodeType":"MemberAccess","src":"58782:16:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58799:6:0","memberName":"length","nodeType":"MemberAccess","src":"58782:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58809:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"58782:28:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"58753:57:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1684,"nodeType":"IfStatement","src":"58749:135:0","trueBody":{"id":1683,"nodeType":"Block","src":"58812:72:0","statements":[{"errorCall":{"arguments":[{"id":1680,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"58866:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1679,"name":"FailedContractCreation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"58833:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["58857:7:0"],"names":["emitter"],"nodeType":"FunctionCall","src":"58833:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1682,"nodeType":"RevertStatement","src":"58826:47:0"}]}}]},"documentation":{"id":1662,"nodeType":"StructuredDocumentation","src":"58497:158:0","text":" @dev Ensures that `newContract` is a non-zero byte contract.\n @param newContract The 20-byte address where the contract was deployed."},"id":1686,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSuccessfulContractCreation","nameLocation":"58669:34:0","nodeType":"FunctionDefinition","parameters":{"id":1665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1664,"mutability":"mutable","name":"newContract","nameLocation":"58712:11:0","nodeType":"VariableDeclaration","scope":1686,"src":"58704:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1663,"name":"address","nodeType":"ElementaryTypeName","src":"58704:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"58703:21:0"},"returnParameters":{"id":1666,"nodeType":"ParameterList","parameters":[],"src":"58739:0:0"},"scope":1713,"src":"58660:230:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1711,"nodeType":"Block","src":"59389:167:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"59403:8:0","subExpression":{"id":1696,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1689,"src":"59404:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1698,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1693,"src":"59415:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"59430:4:0","memberName":"code","nodeType":"MemberAccess","src":"59415:19:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"59435:6:0","memberName":"length","nodeType":"MemberAccess","src":"59415:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"59445:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"59415:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"59403:43:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1710,"nodeType":"IfStatement","src":"59399:151:0","trueBody":{"id":1709,"nodeType":"Block","src":"59448:102:0","statements":[{"errorCall":{"arguments":[{"id":1705,"name":"_SELF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"59508:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1706,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1691,"src":"59527:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1704,"name":"FailedContractInitialisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"59469:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":1707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["59499:7:0","59515:10:0"],"names":["emitter","revertData"],"nodeType":"FunctionCall","src":"59469:70:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1708,"nodeType":"RevertStatement","src":"59462:77:0"}]}}]},"documentation":{"id":1687,"nodeType":"StructuredDocumentation","src":"58896:331:0","text":" @dev Ensures that the contract initialisation call to `implementation` has been successful.\n @param success The Boolean success condition.\n @param returnData The return data from the contract initialisation call.\n @param implementation The 20-byte address where the implementation was deployed."},"id":1712,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSuccessfulContractInitialisation","nameLocation":"59241:40:0","nodeType":"FunctionDefinition","parameters":{"id":1694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1689,"mutability":"mutable","name":"success","nameLocation":"59296:7:0","nodeType":"VariableDeclaration","scope":1712,"src":"59291:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1688,"name":"bool","nodeType":"ElementaryTypeName","src":"59291:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1691,"mutability":"mutable","name":"returnData","nameLocation":"59326:10:0","nodeType":"VariableDeclaration","scope":1712,"src":"59313:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1690,"name":"bytes","nodeType":"ElementaryTypeName","src":"59313:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1693,"mutability":"mutable","name":"implementation","nameLocation":"59354:14:0","nodeType":"VariableDeclaration","scope":1712,"src":"59346:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"59346:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"59281:93:0"},"returnParameters":{"id":1695,"nodeType":"ParameterList","parameters":[],"src":"59389:0:0"},"scope":1713,"src":"59232:324:0","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1714,"src":"1176:58382:0","usedErrors":[49,56,61,66,73],"usedEvents":[32,37,44]}],"src":"42:59517:0"},"id":0},"src/ICreateX.sol":{"ast":{"absolutePath":"src/ICreateX.sol","exportedSymbols":{"ICreateX":[2020]},"id":2021,"license":"AGPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":1715,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"42:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"ICreateX","contractDependencies":[],"contractKind":"interface","documentation":{"id":1716,"nodeType":"StructuredDocumentation","src":"67:252:1","text":" @title CreateX Factory Interface Definition\n @author pcaversaccio (https://web.archive.org/web/20230921103111/https://pcaversaccio.com/)\n @custom:coauthor Matt Solomon (https://web.archive.org/web/20230921103335/https://mattsolomon.dev/)"},"fullyImplemented":false,"id":2020,"linearizedBaseContracts":[2020],"name":"ICreateX","nameLocation":"330:8:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ICreateX.Values","id":1721,"members":[{"constant":false,"id":1718,"mutability":"mutable","name":"constructorAmount","nameLocation":"660:17:1","nodeType":"VariableDeclaration","scope":1721,"src":"652:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1717,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1720,"mutability":"mutable","name":"initCallAmount","nameLocation":"695:14:1","nodeType":"VariableDeclaration","scope":1721,"src":"687:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1719,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Values","nameLocation":"635:6:1","nodeType":"StructDefinition","scope":2020,"src":"628:88:1","visibility":"public"},{"anonymous":false,"eventSelector":"b8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","id":1727,"name":"ContractCreation","nameLocation":"1011:16:1","nodeType":"EventDefinition","parameters":{"id":1726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1723,"indexed":true,"mutability":"mutable","name":"newContract","nameLocation":"1044:11:1","nodeType":"VariableDeclaration","scope":1727,"src":"1028:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1722,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1725,"indexed":true,"mutability":"mutable","name":"salt","nameLocation":"1073:4:1","nodeType":"VariableDeclaration","scope":1727,"src":"1057:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1724,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1057:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1027:51:1"},"src":"1005:74:1"},{"anonymous":false,"eventSelector":"4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511","id":1731,"name":"ContractCreation","nameLocation":"1090:16:1","nodeType":"EventDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1729,"indexed":true,"mutability":"mutable","name":"newContract","nameLocation":"1123:11:1","nodeType":"VariableDeclaration","scope":1731,"src":"1107:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"1107:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1106:29:1"},"src":"1084:52:1"},{"anonymous":false,"eventSelector":"2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c9067","id":1737,"name":"Create3ProxyContractCreation","nameLocation":"1147:28:1","nodeType":"EventDefinition","parameters":{"id":1736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1733,"indexed":true,"mutability":"mutable","name":"newContract","nameLocation":"1192:11:1","nodeType":"VariableDeclaration","scope":1737,"src":"1176:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1732,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1735,"indexed":true,"mutability":"mutable","name":"salt","nameLocation":"1221:4:1","nodeType":"VariableDeclaration","scope":1737,"src":"1205:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1734,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1205:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1175:51:1"},"src":"1141:86:1"},{"errorSelector":"c05cee7a","id":1741,"name":"FailedContractCreation","nameLocation":"1522:22:1","nodeType":"ErrorDefinition","parameters":{"id":1740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"emitter","nameLocation":"1553:7:1","nodeType":"VariableDeclaration","scope":1741,"src":"1545:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"1545:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1544:17:1"},"src":"1516:46:1"},{"errorSelector":"a57ca239","id":1747,"name":"FailedContractInitialisation","nameLocation":"1573:28:1","nodeType":"ErrorDefinition","parameters":{"id":1746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"emitter","nameLocation":"1610:7:1","nodeType":"VariableDeclaration","scope":1747,"src":"1602:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1742,"name":"address","nodeType":"ElementaryTypeName","src":"1602:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1745,"mutability":"mutable","name":"revertData","nameLocation":"1625:10:1","nodeType":"VariableDeclaration","scope":1747,"src":"1619:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1744,"name":"bytes","nodeType":"ElementaryTypeName","src":"1619:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1601:35:1"},"src":"1567:70:1"},{"errorSelector":"13b3a2a1","id":1751,"name":"InvalidSalt","nameLocation":"1648:11:1","nodeType":"ErrorDefinition","parameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"emitter","nameLocation":"1668:7:1","nodeType":"VariableDeclaration","scope":1751,"src":"1660:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1748,"name":"address","nodeType":"ElementaryTypeName","src":"1660:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1659:17:1"},"src":"1642:35:1"},{"errorSelector":"3c55ab3b","id":1755,"name":"InvalidNonceValue","nameLocation":"1688:17:1","nodeType":"ErrorDefinition","parameters":{"id":1754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1753,"mutability":"mutable","name":"emitter","nameLocation":"1714:7:1","nodeType":"VariableDeclaration","scope":1755,"src":"1706:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1752,"name":"address","nodeType":"ElementaryTypeName","src":"1706:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1705:17:1"},"src":"1682:41:1"},{"errorSelector":"c2b3f445","id":1761,"name":"FailedEtherTransfer","nameLocation":"1734:19:1","nodeType":"ErrorDefinition","parameters":{"id":1760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"emitter","nameLocation":"1762:7:1","nodeType":"VariableDeclaration","scope":1761,"src":"1754:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1756,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1759,"mutability":"mutable","name":"revertData","nameLocation":"1777:10:1","nodeType":"VariableDeclaration","scope":1761,"src":"1771:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1758,"name":"bytes","nodeType":"ElementaryTypeName","src":"1771:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1753:35:1"},"src":"1728:61:1"},{"functionSelector":"27fe1822","id":1768,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate","nameLocation":"2087:12:1","nodeType":"FunctionDefinition","parameters":{"id":1764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1763,"mutability":"mutable","name":"initCode","nameLocation":"2113:8:1","nodeType":"VariableDeclaration","scope":1768,"src":"2100:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1762,"name":"bytes","nodeType":"ElementaryTypeName","src":"2100:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2099:23:1"},"returnParameters":{"id":1767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1766,"mutability":"mutable","name":"newContract","nameLocation":"2157:11:1","nodeType":"VariableDeclaration","scope":1768,"src":"2149:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1765,"name":"address","nodeType":"ElementaryTypeName","src":"2149:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2148:21:1"},"scope":2020,"src":"2078:92:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"98e81077","id":1782,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreateAndInit","nameLocation":"2185:19:1","nodeType":"FunctionDefinition","parameters":{"id":1778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1770,"mutability":"mutable","name":"initCode","nameLocation":"2227:8:1","nodeType":"VariableDeclaration","scope":1782,"src":"2214:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1769,"name":"bytes","nodeType":"ElementaryTypeName","src":"2214:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1772,"mutability":"mutable","name":"data","nameLocation":"2258:4:1","nodeType":"VariableDeclaration","scope":1782,"src":"2245:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1771,"name":"bytes","nodeType":"ElementaryTypeName","src":"2245:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1775,"mutability":"mutable","name":"values","nameLocation":"2286:6:1","nodeType":"VariableDeclaration","scope":1782,"src":"2272:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1774,"nodeType":"UserDefinedTypeName","pathNode":{"id":1773,"name":"Values","nameLocations":["2272:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"2272:6:1"},"referencedDeclaration":1721,"src":"2272:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"},{"constant":false,"id":1777,"mutability":"mutable","name":"refundAddress","nameLocation":"2310:13:1","nodeType":"VariableDeclaration","scope":1782,"src":"2302:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1776,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2204:125:1"},"returnParameters":{"id":1781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1780,"mutability":"mutable","name":"newContract","nameLocation":"2364:11:1","nodeType":"VariableDeclaration","scope":1782,"src":"2356:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1779,"name":"address","nodeType":"ElementaryTypeName","src":"2356:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2355:21:1"},"scope":2020,"src":"2176:201:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"31a7c8c8","id":1794,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreateAndInit","nameLocation":"2392:19:1","nodeType":"FunctionDefinition","parameters":{"id":1790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1784,"mutability":"mutable","name":"initCode","nameLocation":"2434:8:1","nodeType":"VariableDeclaration","scope":1794,"src":"2421:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1783,"name":"bytes","nodeType":"ElementaryTypeName","src":"2421:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1786,"mutability":"mutable","name":"data","nameLocation":"2465:4:1","nodeType":"VariableDeclaration","scope":1794,"src":"2452:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1785,"name":"bytes","nodeType":"ElementaryTypeName","src":"2452:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1789,"mutability":"mutable","name":"values","nameLocation":"2493:6:1","nodeType":"VariableDeclaration","scope":1794,"src":"2479:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1788,"nodeType":"UserDefinedTypeName","pathNode":{"id":1787,"name":"Values","nameLocations":["2479:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"2479:6:1"},"referencedDeclaration":1721,"src":"2479:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"}],"src":"2411:94:1"},"returnParameters":{"id":1793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1792,"mutability":"mutable","name":"newContract","nameLocation":"2540:11:1","nodeType":"VariableDeclaration","scope":1794,"src":"2532:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1791,"name":"address","nodeType":"ElementaryTypeName","src":"2532:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2531:21:1"},"scope":2020,"src":"2383:170:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"f9664498","id":1803,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreateClone","nameLocation":"2568:17:1","nodeType":"FunctionDefinition","parameters":{"id":1799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1796,"mutability":"mutable","name":"implementation","nameLocation":"2594:14:1","nodeType":"VariableDeclaration","scope":1803,"src":"2586:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1795,"name":"address","nodeType":"ElementaryTypeName","src":"2586:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1798,"mutability":"mutable","name":"data","nameLocation":"2623:4:1","nodeType":"VariableDeclaration","scope":1803,"src":"2610:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1797,"name":"bytes","nodeType":"ElementaryTypeName","src":"2610:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2585:43:1"},"returnParameters":{"id":1802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1801,"mutability":"mutable","name":"proxy","nameLocation":"2663:5:1","nodeType":"VariableDeclaration","scope":1803,"src":"2655:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1800,"name":"address","nodeType":"ElementaryTypeName","src":"2655:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2654:15:1"},"scope":2020,"src":"2559:111:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"74637a7a","id":1812,"implemented":false,"kind":"function","modifiers":[],"name":"computeCreateAddress","nameLocation":"2685:20:1","nodeType":"FunctionDefinition","parameters":{"id":1808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1805,"mutability":"mutable","name":"deployer","nameLocation":"2714:8:1","nodeType":"VariableDeclaration","scope":1812,"src":"2706:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1804,"name":"address","nodeType":"ElementaryTypeName","src":"2706:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1807,"mutability":"mutable","name":"nonce","nameLocation":"2732:5:1","nodeType":"VariableDeclaration","scope":1812,"src":"2724:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1806,"name":"uint256","nodeType":"ElementaryTypeName","src":"2724:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2705:33:1"},"returnParameters":{"id":1811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1810,"mutability":"mutable","name":"computedAddress","nameLocation":"2770:15:1","nodeType":"VariableDeclaration","scope":1812,"src":"2762:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1809,"name":"address","nodeType":"ElementaryTypeName","src":"2762:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2761:25:1"},"scope":2020,"src":"2676:111:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"28ddd046","id":1819,"implemented":false,"kind":"function","modifiers":[],"name":"computeCreateAddress","nameLocation":"2802:20:1","nodeType":"FunctionDefinition","parameters":{"id":1815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1814,"mutability":"mutable","name":"nonce","nameLocation":"2831:5:1","nodeType":"VariableDeclaration","scope":1819,"src":"2823:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1813,"name":"uint256","nodeType":"ElementaryTypeName","src":"2823:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2822:15:1"},"returnParameters":{"id":1818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"computedAddress","nameLocation":"2869:15:1","nodeType":"VariableDeclaration","scope":1819,"src":"2861:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1816,"name":"address","nodeType":"ElementaryTypeName","src":"2861:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2860:25:1"},"scope":2020,"src":"2793:93:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"26307668","id":1828,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate2","nameLocation":"3184:13:1","nodeType":"FunctionDefinition","parameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1821,"mutability":"mutable","name":"salt","nameLocation":"3206:4:1","nodeType":"VariableDeclaration","scope":1828,"src":"3198:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1820,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3198:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1823,"mutability":"mutable","name":"initCode","nameLocation":"3225:8:1","nodeType":"VariableDeclaration","scope":1828,"src":"3212:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1822,"name":"bytes","nodeType":"ElementaryTypeName","src":"3212:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3197:37:1"},"returnParameters":{"id":1827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"newContract","nameLocation":"3269:11:1","nodeType":"VariableDeclaration","scope":1828,"src":"3261:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1825,"name":"address","nodeType":"ElementaryTypeName","src":"3261:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3260:21:1"},"scope":2020,"src":"3175:107:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"26a32fc7","id":1835,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate2","nameLocation":"3297:13:1","nodeType":"FunctionDefinition","parameters":{"id":1831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1830,"mutability":"mutable","name":"initCode","nameLocation":"3324:8:1","nodeType":"VariableDeclaration","scope":1835,"src":"3311:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1829,"name":"bytes","nodeType":"ElementaryTypeName","src":"3311:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3310:23:1"},"returnParameters":{"id":1834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1833,"mutability":"mutable","name":"newContract","nameLocation":"3368:11:1","nodeType":"VariableDeclaration","scope":1835,"src":"3360:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1832,"name":"address","nodeType":"ElementaryTypeName","src":"3360:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3359:21:1"},"scope":2020,"src":"3288:93:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"a7db93f2","id":1851,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate2AndInit","nameLocation":"3396:20:1","nodeType":"FunctionDefinition","parameters":{"id":1847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1837,"mutability":"mutable","name":"salt","nameLocation":"3434:4:1","nodeType":"VariableDeclaration","scope":1851,"src":"3426:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1836,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3426:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"initCode","nameLocation":"3461:8:1","nodeType":"VariableDeclaration","scope":1851,"src":"3448:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1838,"name":"bytes","nodeType":"ElementaryTypeName","src":"3448:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1841,"mutability":"mutable","name":"data","nameLocation":"3492:4:1","nodeType":"VariableDeclaration","scope":1851,"src":"3479:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1840,"name":"bytes","nodeType":"ElementaryTypeName","src":"3479:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1844,"mutability":"mutable","name":"values","nameLocation":"3520:6:1","nodeType":"VariableDeclaration","scope":1851,"src":"3506:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1843,"nodeType":"UserDefinedTypeName","pathNode":{"id":1842,"name":"Values","nameLocations":["3506:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"3506:6:1"},"referencedDeclaration":1721,"src":"3506:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"},{"constant":false,"id":1846,"mutability":"mutable","name":"refundAddress","nameLocation":"3544:13:1","nodeType":"VariableDeclaration","scope":1851,"src":"3536:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1845,"name":"address","nodeType":"ElementaryTypeName","src":"3536:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3416:147:1"},"returnParameters":{"id":1850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1849,"mutability":"mutable","name":"newContract","nameLocation":"3598:11:1","nodeType":"VariableDeclaration","scope":1851,"src":"3590:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1848,"name":"address","nodeType":"ElementaryTypeName","src":"3590:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3589:21:1"},"scope":2020,"src":"3387:224:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"e96deee4","id":1865,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate2AndInit","nameLocation":"3626:20:1","nodeType":"FunctionDefinition","parameters":{"id":1861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1853,"mutability":"mutable","name":"salt","nameLocation":"3664:4:1","nodeType":"VariableDeclaration","scope":1865,"src":"3656:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1852,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3656:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1855,"mutability":"mutable","name":"initCode","nameLocation":"3691:8:1","nodeType":"VariableDeclaration","scope":1865,"src":"3678:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1854,"name":"bytes","nodeType":"ElementaryTypeName","src":"3678:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1857,"mutability":"mutable","name":"data","nameLocation":"3722:4:1","nodeType":"VariableDeclaration","scope":1865,"src":"3709:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1856,"name":"bytes","nodeType":"ElementaryTypeName","src":"3709:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1860,"mutability":"mutable","name":"values","nameLocation":"3750:6:1","nodeType":"VariableDeclaration","scope":1865,"src":"3736:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1859,"nodeType":"UserDefinedTypeName","pathNode":{"id":1858,"name":"Values","nameLocations":["3736:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"3736:6:1"},"referencedDeclaration":1721,"src":"3736:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"}],"src":"3646:116:1"},"returnParameters":{"id":1864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1863,"mutability":"mutable","name":"newContract","nameLocation":"3797:11:1","nodeType":"VariableDeclaration","scope":1865,"src":"3789:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1862,"name":"address","nodeType":"ElementaryTypeName","src":"3789:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3788:21:1"},"scope":2020,"src":"3617:193:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"e437252a","id":1879,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate2AndInit","nameLocation":"3825:20:1","nodeType":"FunctionDefinition","parameters":{"id":1875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1867,"mutability":"mutable","name":"initCode","nameLocation":"3868:8:1","nodeType":"VariableDeclaration","scope":1879,"src":"3855:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1866,"name":"bytes","nodeType":"ElementaryTypeName","src":"3855:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1869,"mutability":"mutable","name":"data","nameLocation":"3899:4:1","nodeType":"VariableDeclaration","scope":1879,"src":"3886:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1868,"name":"bytes","nodeType":"ElementaryTypeName","src":"3886:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1872,"mutability":"mutable","name":"values","nameLocation":"3927:6:1","nodeType":"VariableDeclaration","scope":1879,"src":"3913:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1871,"nodeType":"UserDefinedTypeName","pathNode":{"id":1870,"name":"Values","nameLocations":["3913:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"3913:6:1"},"referencedDeclaration":1721,"src":"3913:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"},{"constant":false,"id":1874,"mutability":"mutable","name":"refundAddress","nameLocation":"3951:13:1","nodeType":"VariableDeclaration","scope":1879,"src":"3943:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1873,"name":"address","nodeType":"ElementaryTypeName","src":"3943:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3845:125:1"},"returnParameters":{"id":1878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1877,"mutability":"mutable","name":"newContract","nameLocation":"4005:11:1","nodeType":"VariableDeclaration","scope":1879,"src":"3997:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1876,"name":"address","nodeType":"ElementaryTypeName","src":"3997:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3996:21:1"},"scope":2020,"src":"3816:202:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"c3fe107b","id":1891,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate2AndInit","nameLocation":"4033:20:1","nodeType":"FunctionDefinition","parameters":{"id":1887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1881,"mutability":"mutable","name":"initCode","nameLocation":"4076:8:1","nodeType":"VariableDeclaration","scope":1891,"src":"4063:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1880,"name":"bytes","nodeType":"ElementaryTypeName","src":"4063:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1883,"mutability":"mutable","name":"data","nameLocation":"4107:4:1","nodeType":"VariableDeclaration","scope":1891,"src":"4094:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1882,"name":"bytes","nodeType":"ElementaryTypeName","src":"4094:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1886,"mutability":"mutable","name":"values","nameLocation":"4135:6:1","nodeType":"VariableDeclaration","scope":1891,"src":"4121:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1885,"nodeType":"UserDefinedTypeName","pathNode":{"id":1884,"name":"Values","nameLocations":["4121:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"4121:6:1"},"referencedDeclaration":1721,"src":"4121:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"}],"src":"4053:94:1"},"returnParameters":{"id":1890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1889,"mutability":"mutable","name":"newContract","nameLocation":"4182:11:1","nodeType":"VariableDeclaration","scope":1891,"src":"4174:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1888,"name":"address","nodeType":"ElementaryTypeName","src":"4174:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4173:21:1"},"scope":2020,"src":"4024:171:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2852527a","id":1902,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate2Clone","nameLocation":"4210:18:1","nodeType":"FunctionDefinition","parameters":{"id":1898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1893,"mutability":"mutable","name":"salt","nameLocation":"4246:4:1","nodeType":"VariableDeclaration","scope":1902,"src":"4238:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4238:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1895,"mutability":"mutable","name":"implementation","nameLocation":"4268:14:1","nodeType":"VariableDeclaration","scope":1902,"src":"4260:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1894,"name":"address","nodeType":"ElementaryTypeName","src":"4260:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1897,"mutability":"mutable","name":"data","nameLocation":"4305:4:1","nodeType":"VariableDeclaration","scope":1902,"src":"4292:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1896,"name":"bytes","nodeType":"ElementaryTypeName","src":"4292:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4228:87:1"},"returnParameters":{"id":1901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1900,"mutability":"mutable","name":"proxy","nameLocation":"4350:5:1","nodeType":"VariableDeclaration","scope":1902,"src":"4342:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1899,"name":"address","nodeType":"ElementaryTypeName","src":"4342:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4341:15:1"},"scope":2020,"src":"4201:156:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"81503da1","id":1911,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate2Clone","nameLocation":"4372:18:1","nodeType":"FunctionDefinition","parameters":{"id":1907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1904,"mutability":"mutable","name":"implementation","nameLocation":"4399:14:1","nodeType":"VariableDeclaration","scope":1911,"src":"4391:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1903,"name":"address","nodeType":"ElementaryTypeName","src":"4391:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1906,"mutability":"mutable","name":"data","nameLocation":"4428:4:1","nodeType":"VariableDeclaration","scope":1911,"src":"4415:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1905,"name":"bytes","nodeType":"ElementaryTypeName","src":"4415:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4390:43:1"},"returnParameters":{"id":1910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1909,"mutability":"mutable","name":"proxy","nameLocation":"4468:5:1","nodeType":"VariableDeclaration","scope":1911,"src":"4460:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1908,"name":"address","nodeType":"ElementaryTypeName","src":"4460:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4459:15:1"},"scope":2020,"src":"4363:112:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"d323826a","id":1922,"implemented":false,"kind":"function","modifiers":[],"name":"computeCreate2Address","nameLocation":"4490:21:1","nodeType":"FunctionDefinition","parameters":{"id":1918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1913,"mutability":"mutable","name":"salt","nameLocation":"4529:4:1","nodeType":"VariableDeclaration","scope":1922,"src":"4521:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1912,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4521:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1915,"mutability":"mutable","name":"initCodeHash","nameLocation":"4551:12:1","nodeType":"VariableDeclaration","scope":1922,"src":"4543:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4543:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1917,"mutability":"mutable","name":"deployer","nameLocation":"4581:8:1","nodeType":"VariableDeclaration","scope":1922,"src":"4573:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1916,"name":"address","nodeType":"ElementaryTypeName","src":"4573:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4511:84:1"},"returnParameters":{"id":1921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1920,"mutability":"mutable","name":"computedAddress","nameLocation":"4627:15:1","nodeType":"VariableDeclaration","scope":1922,"src":"4619:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1919,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:25:1"},"scope":2020,"src":"4481:163:1","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"890c283b","id":1931,"implemented":false,"kind":"function","modifiers":[],"name":"computeCreate2Address","nameLocation":"4659:21:1","nodeType":"FunctionDefinition","parameters":{"id":1927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1924,"mutability":"mutable","name":"salt","nameLocation":"4689:4:1","nodeType":"VariableDeclaration","scope":1931,"src":"4681:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1923,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4681:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1926,"mutability":"mutable","name":"initCodeHash","nameLocation":"4703:12:1","nodeType":"VariableDeclaration","scope":1931,"src":"4695:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4695:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4680:36:1"},"returnParameters":{"id":1930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1929,"mutability":"mutable","name":"computedAddress","nameLocation":"4748:15:1","nodeType":"VariableDeclaration","scope":1931,"src":"4740:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1928,"name":"address","nodeType":"ElementaryTypeName","src":"4740:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4739:25:1"},"scope":2020,"src":"4650:115:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9c36a286","id":1940,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate3","nameLocation":"5063:13:1","nodeType":"FunctionDefinition","parameters":{"id":1936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1933,"mutability":"mutable","name":"salt","nameLocation":"5085:4:1","nodeType":"VariableDeclaration","scope":1940,"src":"5077:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1932,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5077:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1935,"mutability":"mutable","name":"initCode","nameLocation":"5104:8:1","nodeType":"VariableDeclaration","scope":1940,"src":"5091:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1934,"name":"bytes","nodeType":"ElementaryTypeName","src":"5091:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5076:37:1"},"returnParameters":{"id":1939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1938,"mutability":"mutable","name":"newContract","nameLocation":"5148:11:1","nodeType":"VariableDeclaration","scope":1940,"src":"5140:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1937,"name":"address","nodeType":"ElementaryTypeName","src":"5140:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5139:21:1"},"scope":2020,"src":"5054:107:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"7f565360","id":1947,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate3","nameLocation":"5176:13:1","nodeType":"FunctionDefinition","parameters":{"id":1943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1942,"mutability":"mutable","name":"initCode","nameLocation":"5203:8:1","nodeType":"VariableDeclaration","scope":1947,"src":"5190:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1941,"name":"bytes","nodeType":"ElementaryTypeName","src":"5190:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5189:23:1"},"returnParameters":{"id":1946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1945,"mutability":"mutable","name":"newContract","nameLocation":"5247:11:1","nodeType":"VariableDeclaration","scope":1947,"src":"5239:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1944,"name":"address","nodeType":"ElementaryTypeName","src":"5239:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5238:21:1"},"scope":2020,"src":"5167:93:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"ddda0acb","id":1963,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate3AndInit","nameLocation":"5275:20:1","nodeType":"FunctionDefinition","parameters":{"id":1959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1949,"mutability":"mutable","name":"salt","nameLocation":"5313:4:1","nodeType":"VariableDeclaration","scope":1963,"src":"5305:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1948,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5305:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1951,"mutability":"mutable","name":"initCode","nameLocation":"5340:8:1","nodeType":"VariableDeclaration","scope":1963,"src":"5327:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1950,"name":"bytes","nodeType":"ElementaryTypeName","src":"5327:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1953,"mutability":"mutable","name":"data","nameLocation":"5371:4:1","nodeType":"VariableDeclaration","scope":1963,"src":"5358:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1952,"name":"bytes","nodeType":"ElementaryTypeName","src":"5358:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1956,"mutability":"mutable","name":"values","nameLocation":"5399:6:1","nodeType":"VariableDeclaration","scope":1963,"src":"5385:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1955,"nodeType":"UserDefinedTypeName","pathNode":{"id":1954,"name":"Values","nameLocations":["5385:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"5385:6:1"},"referencedDeclaration":1721,"src":"5385:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"},{"constant":false,"id":1958,"mutability":"mutable","name":"refundAddress","nameLocation":"5423:13:1","nodeType":"VariableDeclaration","scope":1963,"src":"5415:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1957,"name":"address","nodeType":"ElementaryTypeName","src":"5415:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5295:147:1"},"returnParameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"newContract","nameLocation":"5477:11:1","nodeType":"VariableDeclaration","scope":1963,"src":"5469:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1960,"name":"address","nodeType":"ElementaryTypeName","src":"5469:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5468:21:1"},"scope":2020,"src":"5266:224:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"00d84acb","id":1977,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate3AndInit","nameLocation":"5505:20:1","nodeType":"FunctionDefinition","parameters":{"id":1973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1965,"mutability":"mutable","name":"salt","nameLocation":"5543:4:1","nodeType":"VariableDeclaration","scope":1977,"src":"5535:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1964,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5535:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1967,"mutability":"mutable","name":"initCode","nameLocation":"5570:8:1","nodeType":"VariableDeclaration","scope":1977,"src":"5557:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1966,"name":"bytes","nodeType":"ElementaryTypeName","src":"5557:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1969,"mutability":"mutable","name":"data","nameLocation":"5601:4:1","nodeType":"VariableDeclaration","scope":1977,"src":"5588:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1968,"name":"bytes","nodeType":"ElementaryTypeName","src":"5588:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1972,"mutability":"mutable","name":"values","nameLocation":"5629:6:1","nodeType":"VariableDeclaration","scope":1977,"src":"5615:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1971,"nodeType":"UserDefinedTypeName","pathNode":{"id":1970,"name":"Values","nameLocations":["5615:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"5615:6:1"},"referencedDeclaration":1721,"src":"5615:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"}],"src":"5525:116:1"},"returnParameters":{"id":1976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1975,"mutability":"mutable","name":"newContract","nameLocation":"5676:11:1","nodeType":"VariableDeclaration","scope":1977,"src":"5668:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1974,"name":"address","nodeType":"ElementaryTypeName","src":"5668:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5667:21:1"},"scope":2020,"src":"5496:193:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"f5745aba","id":1991,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate3AndInit","nameLocation":"5704:20:1","nodeType":"FunctionDefinition","parameters":{"id":1987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1979,"mutability":"mutable","name":"initCode","nameLocation":"5747:8:1","nodeType":"VariableDeclaration","scope":1991,"src":"5734:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1978,"name":"bytes","nodeType":"ElementaryTypeName","src":"5734:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1981,"mutability":"mutable","name":"data","nameLocation":"5778:4:1","nodeType":"VariableDeclaration","scope":1991,"src":"5765:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1980,"name":"bytes","nodeType":"ElementaryTypeName","src":"5765:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1984,"mutability":"mutable","name":"values","nameLocation":"5806:6:1","nodeType":"VariableDeclaration","scope":1991,"src":"5792:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1983,"nodeType":"UserDefinedTypeName","pathNode":{"id":1982,"name":"Values","nameLocations":["5792:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"5792:6:1"},"referencedDeclaration":1721,"src":"5792:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"},{"constant":false,"id":1986,"mutability":"mutable","name":"refundAddress","nameLocation":"5830:13:1","nodeType":"VariableDeclaration","scope":1991,"src":"5822:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1985,"name":"address","nodeType":"ElementaryTypeName","src":"5822:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5724:125:1"},"returnParameters":{"id":1990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1989,"mutability":"mutable","name":"newContract","nameLocation":"5884:11:1","nodeType":"VariableDeclaration","scope":1991,"src":"5876:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1988,"name":"address","nodeType":"ElementaryTypeName","src":"5876:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5875:21:1"},"scope":2020,"src":"5695:202:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2f990e3f","id":2003,"implemented":false,"kind":"function","modifiers":[],"name":"deployCreate3AndInit","nameLocation":"5912:20:1","nodeType":"FunctionDefinition","parameters":{"id":1999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1993,"mutability":"mutable","name":"initCode","nameLocation":"5955:8:1","nodeType":"VariableDeclaration","scope":2003,"src":"5942:21:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1992,"name":"bytes","nodeType":"ElementaryTypeName","src":"5942:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1995,"mutability":"mutable","name":"data","nameLocation":"5986:4:1","nodeType":"VariableDeclaration","scope":2003,"src":"5973:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1994,"name":"bytes","nodeType":"ElementaryTypeName","src":"5973:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1998,"mutability":"mutable","name":"values","nameLocation":"6014:6:1","nodeType":"VariableDeclaration","scope":2003,"src":"6000:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_memory_ptr","typeString":"struct ICreateX.Values"},"typeName":{"id":1997,"nodeType":"UserDefinedTypeName","pathNode":{"id":1996,"name":"Values","nameLocations":["6000:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":1721,"src":"6000:6:1"},"referencedDeclaration":1721,"src":"6000:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Values_$1721_storage_ptr","typeString":"struct ICreateX.Values"}},"visibility":"internal"}],"src":"5932:94:1"},"returnParameters":{"id":2002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"newContract","nameLocation":"6061:11:1","nodeType":"VariableDeclaration","scope":2003,"src":"6053:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"6053:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6052:21:1"},"scope":2020,"src":"5903:171:1","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"42d654fc","id":2012,"implemented":false,"kind":"function","modifiers":[],"name":"computeCreate3Address","nameLocation":"6089:21:1","nodeType":"FunctionDefinition","parameters":{"id":2008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2005,"mutability":"mutable","name":"salt","nameLocation":"6119:4:1","nodeType":"VariableDeclaration","scope":2012,"src":"6111:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2004,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6111:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2007,"mutability":"mutable","name":"deployer","nameLocation":"6133:8:1","nodeType":"VariableDeclaration","scope":2012,"src":"6125:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2006,"name":"address","nodeType":"ElementaryTypeName","src":"6125:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6110:32:1"},"returnParameters":{"id":2011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2010,"mutability":"mutable","name":"computedAddress","nameLocation":"6174:15:1","nodeType":"VariableDeclaration","scope":2012,"src":"6166:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2009,"name":"address","nodeType":"ElementaryTypeName","src":"6166:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6165:25:1"},"scope":2020,"src":"6080:111:1","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"6cec2536","id":2019,"implemented":false,"kind":"function","modifiers":[],"name":"computeCreate3Address","nameLocation":"6206:21:1","nodeType":"FunctionDefinition","parameters":{"id":2015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2014,"mutability":"mutable","name":"salt","nameLocation":"6236:4:1","nodeType":"VariableDeclaration","scope":2019,"src":"6228:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2013,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6228:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6227:14:1"},"returnParameters":{"id":2018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2017,"mutability":"mutable","name":"computedAddress","nameLocation":"6273:15:1","nodeType":"VariableDeclaration","scope":2019,"src":"6265:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2016,"name":"address","nodeType":"ElementaryTypeName","src":"6265:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6264:25:1"},"scope":2020,"src":"6197:93:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2021,"src":"320:5972:1","usedErrors":[1741,1747,1751,1755,1761],"usedEvents":[1727,1731,1737]}],"src":"42:6251:1"},"id":1}},"contracts":{"src/CreateX.sol":{"CreateX":{"abi":[{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"name":"FailedContractCreation","type":"error"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"name":"FailedContractInitialisation","type":"error"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"name":"FailedEtherTransfer","type":"error"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"name":"InvalidNonceValue","type":"error"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"name":"InvalidSalt","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newContract","type":"address"},{"indexed":true,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"ContractCreation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newContract","type":"address"}],"name":"ContractCreation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newContract","type":"address"},{"indexed":true,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"Create3ProxyContractCreation","type":"event"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"name":"computeCreate2Address","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"name":"computeCreate2Address","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"name":"computeCreate3Address","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"computeCreate3Address","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"computeCreateAddress","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"computeCreateAddress","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate2","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate2","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreate2AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"}],"name":"deployCreate2AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreate2AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"}],"name":"deployCreate2AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"deployCreate2Clone","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"deployCreate2Clone","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate3","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate3","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"}],"name":"deployCreate3AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"}],"name":"deployCreate3AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreate3AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreate3AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"}],"name":"deployCreateAndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct CreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreateAndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"deployCreateClone","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b50608051612e3e6100d860003960008181610603015281816107050152818161082b015281816108d50152818161127f01528181611375015281816113e00152818161141f015281816114a7015281816115b3015281816117d20152818161183d0152818161187c0152818161190401528181611ac501528181611c7801528181611ce301528181611d2201528181611daa01528181611fe901528181612206015281816122f20152818161244d015281816124a601526125820152612e3e6000f3fe60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x2E3E PUSH2 0xD8 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x603 ADD MSTORE DUP2 DUP2 PUSH2 0x705 ADD MSTORE DUP2 DUP2 PUSH2 0x82B ADD MSTORE DUP2 DUP2 PUSH2 0x8D5 ADD MSTORE DUP2 DUP2 PUSH2 0x127F ADD MSTORE DUP2 DUP2 PUSH2 0x1375 ADD MSTORE DUP2 DUP2 PUSH2 0x13E0 ADD MSTORE DUP2 DUP2 PUSH2 0x141F ADD MSTORE DUP2 DUP2 PUSH2 0x14A7 ADD MSTORE DUP2 DUP2 PUSH2 0x15B3 ADD MSTORE DUP2 DUP2 PUSH2 0x17D2 ADD MSTORE DUP2 DUP2 PUSH2 0x183D ADD MSTORE DUP2 DUP2 PUSH2 0x187C ADD MSTORE DUP2 DUP2 PUSH2 0x1904 ADD MSTORE DUP2 DUP2 PUSH2 0x1AC5 ADD MSTORE DUP2 DUP2 PUSH2 0x1C78 ADD MSTORE DUP2 DUP2 PUSH2 0x1CE3 ADD MSTORE DUP2 DUP2 PUSH2 0x1D22 ADD MSTORE DUP2 DUP2 PUSH2 0x1DAA ADD MSTORE DUP2 DUP2 PUSH2 0x1FE9 ADD MSTORE DUP2 DUP2 PUSH2 0x2206 ADD MSTORE DUP2 DUP2 PUSH2 0x22F2 ADD MSTORE DUP2 DUP2 PUSH2 0x244D ADD MSTORE DUP2 DUP2 PUSH2 0x24A6 ADD MSTORE PUSH2 0x2582 ADD MSTORE PUSH2 0x2E3E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x81503DA1 GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xD323826A GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE96DEEE4 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE96DEEE4 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xF5745ABA EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0xF9664498 EQ PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD323826A EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xDDDA0ACB EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0xE437252A EQ PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9C36A286 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x9C36A286 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0xA7DB93F2 EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xC3FE107B EQ PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x81503DA1 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x890C283B EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x98E81077 EQ PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F990E3F GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x6CEC2536 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x6CEC2536 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x74637A7A EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x7F565360 EQ PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F990E3F EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x31A7C8C8 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x42D654FC EQ PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27FE1822 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x27FE1822 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x2852527A EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x28DDD046 EQ PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xD84ACB EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0x26307668 EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x26A32FC7 EQ PUSH2 0x1DE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A2 PUSH2 0x19D CALLDATASIZE PUSH1 0x4 PUSH2 0x2915 JUMP JUMPDEST PUSH2 0x3CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A2 PUSH2 0x1D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2994 JUMP JUMPDEST PUSH2 0x3E6 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x29DB JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0x29DB JUMP JUMPDEST PUSH2 0x4DE JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A39 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A90 JUMP JUMPDEST PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA9 JUMP JUMPDEST PUSH2 0x72A JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x258 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA9 JUMP JUMPDEST PUSH2 0x7BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x278 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1E JUMP JUMPDEST PUSH2 0x7C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x298 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A90 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B4A JUMP JUMPDEST PUSH2 0x84F JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x2CB CALLDATASIZE PUSH1 0x4 PUSH2 0x29DB JUMP JUMPDEST PUSH2 0x1162 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x2B74 JUMP JUMPDEST PUSH2 0x11E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2BAC JUMP JUMPDEST PUSH2 0x1276 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BCE JUMP JUMPDEST PUSH2 0x12A3 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x2994 JUMP JUMPDEST PUSH2 0x1505 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C49 JUMP JUMPDEST PUSH2 0x16F1 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x34A CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA9 JUMP JUMPDEST PUSH2 0x1964 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x2CD9 JUMP JUMPDEST PUSH2 0x19ED JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x2C49 JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x390 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BCE JUMP JUMPDEST PUSH2 0x1E0C JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2915 JUMP JUMPDEST PUSH2 0x1E95 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BCE JUMP JUMPDEST PUSH2 0x1EA4 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B74 JUMP JUMPDEST PUSH2 0x1F2D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD DUP6 DUP6 DUP6 DUP6 CALLER PUSH2 0x1A17 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3F2 DUP5 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 MLOAD PUSH1 0x20 DUP6 ADD CALLVALUE CREATE2 SWAP2 POP PUSH2 0x408 DUP3 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xB8FDA7E00C6B06A2B54E58521BC5894FEE35F1090E5A3BB6390BFE2B98B497F7 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D8 PUSH2 0x4D2 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0x3E6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x20 DUP4 ADD CALLVALUE CREATE SWAP1 POP PUSH2 0x4F3 DUP2 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x545 DUP6 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x60 SHL SWAP1 POP PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP2 PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE DUP3 PUSH1 0x37 DUP3 PUSH1 0x0 CREATE2 SWAP4 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x635 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xB8FDA7E00C6B06A2B54E58521BC5894FEE35F1090E5A3BB6390BFE2B98B497F7 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE DUP8 PUSH1 0x40 MLOAD PUSH2 0x6A1 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x6DE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x6F3 DUP3 DUP3 DUP10 PUSH2 0x247D JUMP JUMPDEST POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D8 PUSH32 0x0 DUP4 PUSH2 0x84F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B3 PUSH2 0x7AA PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP6 DUP6 DUP6 CALLER PUSH2 0x1A17 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B3 DUP5 DUP5 DUP5 CALLER PUSH2 0x12A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 PUSH1 0x0 MSTORE PUSH1 0xFF PUSH1 0xB MSTORE8 DUP4 PUSH1 0x20 MSTORE PUSH32 0x21C35DBE1B344A2488CF3321D6CE542F8E9F305544FF09E4993A62319A497C1F PUSH1 0x40 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 PUSH1 0x14 MSTORE DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD694 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x34 MSTORE8 POP POP PUSH1 0x17 PUSH1 0x1E KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D8 DUP3 PUSH32 0x0 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH32 0x9400000000000000000000000000000000000000000000000000000000000000 PUSH2 0x887 PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH2 0x2D45 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 GT ISZERO PUSH2 0x902 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C55AB3B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST DUP4 PUSH1 0x0 SUB PUSH2 0x9C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD600000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH1 0x37 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH2 0x1152 JUMP JUMPDEST PUSH1 0x7F DUP5 GT PUSH2 0xA60 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD600000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP1 DUP4 AND PUSH1 0x21 DUP4 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP9 SWAP1 SHL AND PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0xF8 DUP7 SWAP1 SHL AND PUSH1 0x36 DUP3 ADD MSTORE PUSH1 0x37 ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0xFF DUP5 GT PUSH2 0xB1F JUMPI PUSH1 0x40 MLOAD PUSH32 0xD700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP1 DUP4 AND PUSH1 0x21 DUP4 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP9 SWAP1 SHL AND PUSH1 0x22 DUP4 ADD MSTORE PUSH32 0x8100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP4 ADD MSTORE PUSH1 0xF8 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x38 ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH2 0xFFFF DUP5 GT PUSH2 0xBFF JUMPI PUSH1 0x40 MLOAD PUSH32 0xD800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF0 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x39 ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH3 0xFFFFFF DUP5 GT PUSH2 0xCE0 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 PUSH1 0xE8 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3A ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP5 GT PUSH2 0xDC2 JUMPI PUSH1 0x40 MLOAD PUSH32 0xDA00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3B ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF DUP5 GT PUSH2 0xEA5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xDB00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFF000000000000000000000000000000000000000000000000000000 PUSH1 0xD8 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3C ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP5 GT PUSH2 0xF89 JUMPI PUSH1 0x40 MLOAD PUSH32 0xDC00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8600000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 PUSH1 0xD0 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3D ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH7 0xFFFFFFFFFFFFFF DUP5 GT PUSH2 0x106E JUMPI PUSH1 0x40 MLOAD PUSH32 0xDD00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000 PUSH1 0xC8 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3E ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3F ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D8 PUSH2 0x11E2 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0x1505 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x126F PUSH2 0x1268 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x539 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x126F DUP4 DUP4 PUSH32 0x0 PUSH2 0x19ED JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD DUP5 MLOAD CREATE SWAP1 POP PUSH2 0x12B9 DUP2 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x20 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH2 0x1327 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1364 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1369 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x13C9 JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA57CA23900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND BALANCE ISZERO PUSH2 0x14FB JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1495 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x149A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x14FB JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xC2B3F44500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1511 DUP5 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x67363D3D37363D34F03D5260086018F300000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP3 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x15E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x2FEEA65DD4E9F9CBD86B74B7734210C59A1B2981B5B137BD0EE3E208200C9067 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH2 0x162C DUP4 PUSH2 0x823 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE DUP8 PUSH1 0x40 MLOAD PUSH2 0x1656 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1693 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1698 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x16A6 DUP2 DUP7 PUSH2 0x24FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16FD DUP8 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP DUP1 DUP7 MLOAD PUSH1 0x20 DUP9 ADD DUP7 MLOAD CREATE2 SWAP2 POP PUSH2 0x1714 DUP3 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xB8FDA7E00C6B06A2B54E58521BC5894FEE35F1090E5A3BB6390BFE2B98B497F7 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x40 MLOAD PUSH2 0x1784 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x17C1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x17C6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1826 JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA57CA23900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND BALANCE ISZERO PUSH2 0x1958 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x18F2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18F7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x1958 JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xC2B3F44500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B3 PUSH2 0x19E4 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP6 DUP6 DUP6 CALLER PUSH2 0x16F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE DUP3 DUP2 MSTORE PUSH1 0xB DUP2 ADD SWAP1 POP PUSH1 0xFF DUP2 MSTORE8 PUSH1 0x55 SWAP1 KECCAK256 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A23 DUP8 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x67363D3D37363D34F03D5260086018F300000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP3 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1AF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x2FEEA65DD4E9F9CBD86B74B7734210C59A1B2981B5B137BD0EE3E208200C9067 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH2 0x1B3E DUP4 PUSH2 0x823 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x40 MLOAD PUSH2 0x1B6C SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BA9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BAE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x1BBC DUP2 DUP7 PUSH2 0x24FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 MLOAD PUSH2 0x1C29 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C66 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C6B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x1CCC JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA57CA23900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND BALANCE ISZERO PUSH2 0x1DFE JUMPI DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1D98 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D9D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x1DFE JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xC2B3F44500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD PUSH2 0x1E8C PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 PUSH2 0x16F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD DUP6 DUP6 DUP6 DUP6 CALLER PUSH2 0x16F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD PUSH2 0x1F24 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 PUSH2 0x1A17 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x60 SHL SWAP1 POP PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP2 PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP3 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2016 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE DUP7 PUSH1 0x40 MLOAD PUSH2 0x2080 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x20D2 DUP3 DUP3 DUP9 PUSH2 0x247D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x20E9 DUP5 PUSH2 0x25B3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2102 JUMPI PUSH2 0x2102 PUSH2 0x2E02 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2120 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x211E JUMPI PUSH2 0x211E PUSH2 0x2E02 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x215E JUMPI PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x20 DUP3 ADD MSTORE CHAINID SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP PUSH2 0x23CC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2172 JUMPI PUSH2 0x2172 PUSH2 0x2E02 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2190 JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x218E JUMPI PUSH2 0x218E PUSH2 0x2E02 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x21B0 JUMPI PUSH2 0x21A9 CALLER DUP6 PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP3 POP PUSH2 0x23CC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x21C4 JUMPI PUSH2 0x21C4 PUSH2 0x2E02 JUMP JUMPDEST SUB PUSH2 0x2233 JUMPI PUSH1 0x40 MLOAD PUSH32 0x13B3A2A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2247 JUMPI PUSH2 0x2247 PUSH2 0x2E02 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2265 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2263 JUMPI PUSH2 0x2263 PUSH2 0x2E02 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x227E JUMPI PUSH2 0x21A9 CHAINID DUP6 PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2292 JUMPI PUSH2 0x2292 PUSH2 0x2E02 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x22B0 JUMPI POP PUSH1 0x2 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22AE JUMPI PUSH2 0x22AE PUSH2 0x2E02 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x231F JUMPI PUSH1 0x40 MLOAD PUSH32 0x13B3A2A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH2 0x239A PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP5 SUB PUSH2 0x23A6 JUMPI DUP4 PUSH2 0x23C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 JUMPDEST SWAP3 POP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 PUSH2 0x240B JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x247A JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST POP JUMP JUMPDEST DUP3 ISZERO DUP1 PUSH2 0x249F JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x24FA JUMPI PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH32 0xA57CA23900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 ISZERO DUP1 PUSH2 0x2520 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO JUMPDEST DUP1 PUSH2 0x2540 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x25AF JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP4 SWAP1 SHR CALLER EQ DUP1 ISZERO PUSH2 0x2610 JUMPI POP DUP3 PUSH1 0x14 BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x2620 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR CALLER EQ DUP1 ISZERO PUSH2 0x265A JUMPI POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x14 DUP5 SWAP1 BYTE PUSH1 0xF8 SHL AND ISZERO JUMPDEST ISZERO PUSH2 0x266B JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x1 SWAP2 POP SWAP2 JUMP JUMPDEST CALLER PUSH1 0x60 DUP5 SWAP1 SHR SUB PUSH2 0x2682 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR ISZERO DUP1 ISZERO PUSH2 0x26DB JUMPI POP DUP3 PUSH1 0x14 BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x26EC JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR ISZERO DUP1 ISZERO PUSH2 0x2725 JUMPI POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x14 DUP5 SWAP1 BYTE PUSH1 0xF8 SHL AND ISZERO JUMPDEST ISZERO PUSH2 0x2735 JUMPI POP PUSH1 0x1 SWAP1 POP DUP1 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR PUSH2 0x274A JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x2 SWAP2 POP SWAP2 JUMP JUMPDEST DUP3 PUSH1 0x14 BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SUB PUSH2 0x27A5 JUMPI POP PUSH1 0x2 SWAP1 POP PUSH1 0x0 SWAP2 POP SWAP2 JUMP JUMPDEST DUP3 PUSH1 0x14 BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x0 SUB PUSH2 0x27E1 JUMPI POP PUSH1 0x2 SWAP1 POP PUSH1 0x1 SWAP2 POP SWAP2 JUMP JUMPDEST POP PUSH1 0x2 SWAP1 POP DUP1 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x282C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2847 JUMPI PUSH2 0x2847 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x288D JUMPI PUSH2 0x288D PUSH2 0x27EC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x28A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x28FB JUMPI PUSH2 0x28FB PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x292B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x294A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2956 DUP9 DUP4 DUP10 ADD PUSH2 0x281B JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x296C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2979 DUP8 DUP3 DUP9 ADD PUSH2 0x281B JUMP JUMPDEST SWAP3 POP POP PUSH2 0x2989 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0x28C6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x29D1 DUP6 DUP3 DUP7 ADD PUSH2 0x281B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7B3 DUP5 DUP3 DUP6 ADD PUSH2 0x281B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2A34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x2A5E PUSH1 0x20 DUP6 ADD PUSH2 0x2A10 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A86 DUP7 DUP3 DUP8 ADD PUSH2 0x281B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2AD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2AE2 DUP8 DUP4 DUP9 ADD PUSH2 0x281B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2AF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B05 DUP7 DUP3 DUP8 ADD PUSH2 0x281B JUMP JUMPDEST SWAP3 POP POP PUSH2 0x2B15 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x28C6 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2B41 PUSH1 0x20 DUP5 ADD PUSH2 0x2A10 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B66 DUP4 PUSH2 0x2A10 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B90 DUP4 PUSH2 0x2A10 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2BE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2BFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C08 DUP9 DUP4 DUP10 ADD PUSH2 0x281B JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C2B DUP8 DUP3 DUP9 ADD PUSH2 0x281B JUMP JUMPDEST SWAP4 POP POP PUSH2 0x2C3B DUP7 PUSH1 0x40 DUP8 ADD PUSH2 0x28C6 JUMP JUMPDEST SWAP2 POP PUSH2 0x2989 PUSH1 0x80 DUP7 ADD PUSH2 0x2A10 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2C61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8C DUP10 DUP4 DUP11 ADD PUSH2 0x281B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CAF DUP9 DUP3 DUP10 ADD PUSH2 0x281B JUMP JUMPDEST SWAP4 POP POP PUSH2 0x2CBF DUP8 PUSH1 0x60 DUP9 ADD PUSH2 0x28C6 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CCD PUSH1 0xA0 DUP8 ADD PUSH2 0x2A10 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2B15 PUSH1 0x40 DUP6 ADD PUSH2 0x2A10 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D08 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2D3B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2D05 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2D8D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2DCF DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2D05 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD OR STOP EXP ","sourceMap":"1176:58382:0:-:0;;;1632:4;1589:48;;1176:58382;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_efficientHash_1597":{"entryPoint":null,"id":1597,"parameterSlots":2,"returnSlots":1},"@_generateSalt_1631":{"entryPoint":null,"id":1631,"parameterSlots":0,"returnSlots":1},"@_guard_1347":{"entryPoint":8411,"id":1347,"parameterSlots":1,"returnSlots":1},"@_parseSalt_1585":{"entryPoint":9651,"id":1585,"parameterSlots":1,"returnSlots":2},"@_requireSuccessfulContractCreation_1661":{"entryPoint":9471,"id":1661,"parameterSlots":2,"returnSlots":0},"@_requireSuccessfulContractCreation_1686":{"entryPoint":9171,"id":1686,"parameterSlots":1,"returnSlots":0},"@_requireSuccessfulContractInitialisation_1712":{"entryPoint":9341,"id":1712,"parameterSlots":3,"returnSlots":0},"@computeCreate2Address_876":{"entryPoint":6637,"id":876,"parameterSlots":3,"returnSlots":1},"@computeCreate2Address_895":{"entryPoint":4726,"id":895,"parameterSlots":2,"returnSlots":1},"@computeCreate3Address_1196":{"entryPoint":1993,"id":1196,"parameterSlots":2,"returnSlots":1},"@computeCreate3Address_1212":{"entryPoint":2083,"id":1212,"parameterSlots":1,"returnSlots":1},"@computeCreateAddress_558":{"entryPoint":2127,"id":558,"parameterSlots":2,"returnSlots":1},"@computeCreateAddress_574":{"entryPoint":1790,"id":574,"parameterSlots":1,"returnSlots":1},"@deployCreate2AndInit_700":{"entryPoint":5873,"id":700,"parameterSlots":5,"returnSlots":1},"@deployCreate2AndInit_727":{"entryPoint":7829,"id":727,"parameterSlots":4,"returnSlots":1},"@deployCreate2AndInit_754":{"entryPoint":7692,"id":754,"parameterSlots":4,"returnSlots":1},"@deployCreate2AndInit_780":{"entryPoint":6500,"id":780,"parameterSlots":3,"returnSlots":1},"@deployCreate2Clone_842":{"entryPoint":1337,"id":842,"parameterSlots":3,"returnSlots":1},"@deployCreate2Clone_862":{"entryPoint":4584,"id":862,"parameterSlots":2,"returnSlots":1},"@deployCreate2_601":{"entryPoint":998,"id":601,"parameterSlots":2,"returnSlots":1},"@deployCreate2_618":{"entryPoint":1106,"id":618,"parameterSlots":1,"returnSlots":1},"@deployCreate3AndInit_1104":{"entryPoint":6679,"id":1104,"parameterSlots":5,"returnSlots":1},"@deployCreate3AndInit_1131":{"entryPoint":974,"id":1131,"parameterSlots":4,"returnSlots":1},"@deployCreate3AndInit_1158":{"entryPoint":7844,"id":1158,"parameterSlots":4,"returnSlots":1},"@deployCreate3AndInit_1184":{"entryPoint":1834,"id":1184,"parameterSlots":3,"returnSlots":1},"@deployCreate3_962":{"entryPoint":5381,"id":962,"parameterSlots":2,"returnSlots":1},"@deployCreate3_979":{"entryPoint":4450,"id":979,"parameterSlots":1,"returnSlots":1},"@deployCreateAndInit_164":{"entryPoint":4771,"id":164,"parameterSlots":4,"returnSlots":1},"@deployCreateAndInit_188":{"entryPoint":1979,"id":188,"parameterSlots":3,"returnSlots":1},"@deployCreateClone_241":{"entryPoint":7981,"id":241,"parameterSlots":2,"returnSlots":1},"@deployCreate_91":{"entryPoint":1246,"id":91,"parameterSlots":1,"returnSlots":1},"abi_decode_address":{"entryPoint":10768,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":10267,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_Values":{"entryPoint":10438,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":11124,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":11082,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":11038,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr":{"entryPoint":10809,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":11180,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32t_address":{"entryPoint":11481,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes32t_bytes_memory_ptr":{"entryPoint":10644,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptr":{"entryPoint":10517,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bytes32t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptrt_address":{"entryPoint":11337,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":10715,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptr":{"entryPoint":10921,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptrt_address":{"entryPoint":11214,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint256":{"entryPoint":10896,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1__to_t_bytes1_t_bytes1_t_address_t_bytes1__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint16__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint16__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint24__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint24__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint32__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint32__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint40__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint40__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint48__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint48__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint56__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint56__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint64__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint64__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint8__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint8__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_uint8__to_t_bytes1_t_bytes1_t_address_t_uint8__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":11561,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"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_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11668,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"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_payable_t_uint256_t_uint256_t_uint256_t_uint256_t_address__to_t_bytes32_t_address_payable_t_uint256_t_uint256_t_uint256_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":8,"returnSlots":1},"checked_sub_t_uint64":{"entryPoint":11589,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":11525,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x21":{"entryPoint":11778,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10220,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:17963:2","nodeType":"YulBlock","src":"0:17963:2","statements":[{"nativeSrc":"6:3:2","nodeType":"YulBlock","src":"6:3:2","statements":[]},{"body":{"nativeSrc":"46:152:2","nodeType":"YulBlock","src":"46:152:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:2","nodeType":"YulLiteral","src":"63:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"66:77:2","nodeType":"YulLiteral","src":"66:77:2","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"56:6:2","nodeType":"YulIdentifier","src":"56:6:2"},"nativeSrc":"56:88:2","nodeType":"YulFunctionCall","src":"56:88:2"},"nativeSrc":"56:88:2","nodeType":"YulExpressionStatement","src":"56:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"160:1:2","nodeType":"YulLiteral","src":"160:1:2","type":"","value":"4"},{"kind":"number","nativeSrc":"163:4:2","nodeType":"YulLiteral","src":"163:4:2","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"153:6:2","nodeType":"YulIdentifier","src":"153:6:2"},"nativeSrc":"153:15:2","nodeType":"YulFunctionCall","src":"153:15:2"},"nativeSrc":"153:15:2","nodeType":"YulExpressionStatement","src":"153:15:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"184:1:2","nodeType":"YulLiteral","src":"184:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"187:4:2","nodeType":"YulLiteral","src":"187:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"177:6:2","nodeType":"YulIdentifier","src":"177:6:2"},"nativeSrc":"177:15:2","nodeType":"YulFunctionCall","src":"177:15:2"},"nativeSrc":"177:15:2","nodeType":"YulExpressionStatement","src":"177:15:2"}]},"name":"panic_error_0x41","nativeSrc":"14:184:2","nodeType":"YulFunctionDefinition","src":"14:184:2"},{"body":{"nativeSrc":"255:725:2","nodeType":"YulBlock","src":"255:725:2","statements":[{"body":{"nativeSrc":"304:16:2","nodeType":"YulBlock","src":"304:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"313:1:2","nodeType":"YulLiteral","src":"313:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"316:1:2","nodeType":"YulLiteral","src":"316:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"306:6:2","nodeType":"YulIdentifier","src":"306:6:2"},"nativeSrc":"306:12:2","nodeType":"YulFunctionCall","src":"306:12:2"},"nativeSrc":"306:12:2","nodeType":"YulExpressionStatement","src":"306:12:2"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"283:6:2","nodeType":"YulIdentifier","src":"283:6:2"},{"kind":"number","nativeSrc":"291:4:2","nodeType":"YulLiteral","src":"291:4:2","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"279:3:2","nodeType":"YulIdentifier","src":"279:3:2"},"nativeSrc":"279:17:2","nodeType":"YulFunctionCall","src":"279:17:2"},{"name":"end","nativeSrc":"298:3:2","nodeType":"YulIdentifier","src":"298:3:2"}],"functionName":{"name":"slt","nativeSrc":"275:3:2","nodeType":"YulIdentifier","src":"275:3:2"},"nativeSrc":"275:27:2","nodeType":"YulFunctionCall","src":"275:27:2"}],"functionName":{"name":"iszero","nativeSrc":"268:6:2","nodeType":"YulIdentifier","src":"268:6:2"},"nativeSrc":"268:35:2","nodeType":"YulFunctionCall","src":"268:35:2"},"nativeSrc":"265:55:2","nodeType":"YulIf","src":"265:55:2"},{"nativeSrc":"329:30:2","nodeType":"YulVariableDeclaration","src":"329:30:2","value":{"arguments":[{"name":"offset","nativeSrc":"352:6:2","nodeType":"YulIdentifier","src":"352:6:2"}],"functionName":{"name":"calldataload","nativeSrc":"339:12:2","nodeType":"YulIdentifier","src":"339:12:2"},"nativeSrc":"339:20:2","nodeType":"YulFunctionCall","src":"339:20:2"},"variables":[{"name":"_1","nativeSrc":"333:2:2","nodeType":"YulTypedName","src":"333:2:2","type":""}]},{"nativeSrc":"368:28:2","nodeType":"YulVariableDeclaration","src":"368:28:2","value":{"kind":"number","nativeSrc":"378:18:2","nodeType":"YulLiteral","src":"378:18:2","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_2","nativeSrc":"372:2:2","nodeType":"YulTypedName","src":"372:2:2","type":""}]},{"body":{"nativeSrc":"419:22:2","nodeType":"YulBlock","src":"419:22:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"421:16:2","nodeType":"YulIdentifier","src":"421:16:2"},"nativeSrc":"421:18:2","nodeType":"YulFunctionCall","src":"421:18:2"},"nativeSrc":"421:18:2","nodeType":"YulExpressionStatement","src":"421:18:2"}]},"condition":{"arguments":[{"name":"_1","nativeSrc":"411:2:2","nodeType":"YulIdentifier","src":"411:2:2"},{"name":"_2","nativeSrc":"415:2:2","nodeType":"YulIdentifier","src":"415:2:2"}],"functionName":{"name":"gt","nativeSrc":"408:2:2","nodeType":"YulIdentifier","src":"408:2:2"},"nativeSrc":"408:10:2","nodeType":"YulFunctionCall","src":"408:10:2"},"nativeSrc":"405:36:2","nodeType":"YulIf","src":"405:36:2"},{"nativeSrc":"450:76:2","nodeType":"YulVariableDeclaration","src":"450:76:2","value":{"kind":"number","nativeSrc":"460:66:2","nodeType":"YulLiteral","src":"460:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"variables":[{"name":"_3","nativeSrc":"454:2:2","nodeType":"YulTypedName","src":"454:2:2","type":""}]},{"nativeSrc":"535:23:2","nodeType":"YulVariableDeclaration","src":"535:23:2","value":{"arguments":[{"kind":"number","nativeSrc":"555:2:2","nodeType":"YulLiteral","src":"555:2:2","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"549:5:2","nodeType":"YulIdentifier","src":"549:5:2"},"nativeSrc":"549:9:2","nodeType":"YulFunctionCall","src":"549:9:2"},"variables":[{"name":"memPtr","nativeSrc":"539:6:2","nodeType":"YulTypedName","src":"539:6:2","type":""}]},{"nativeSrc":"567:71:2","nodeType":"YulVariableDeclaration","src":"567:71:2","value":{"arguments":[{"name":"memPtr","nativeSrc":"589:6:2","nodeType":"YulIdentifier","src":"589:6:2"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"613:2:2","nodeType":"YulIdentifier","src":"613:2:2"},{"kind":"number","nativeSrc":"617:4:2","nodeType":"YulLiteral","src":"617:4:2","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"609:3:2","nodeType":"YulIdentifier","src":"609:3:2"},"nativeSrc":"609:13:2","nodeType":"YulFunctionCall","src":"609:13:2"},{"name":"_3","nativeSrc":"624:2:2","nodeType":"YulIdentifier","src":"624:2:2"}],"functionName":{"name":"and","nativeSrc":"605:3:2","nodeType":"YulIdentifier","src":"605:3:2"},"nativeSrc":"605:22:2","nodeType":"YulFunctionCall","src":"605:22:2"},{"kind":"number","nativeSrc":"629:2:2","nodeType":"YulLiteral","src":"629:2:2","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"601:3:2","nodeType":"YulIdentifier","src":"601:3:2"},"nativeSrc":"601:31:2","nodeType":"YulFunctionCall","src":"601:31:2"},{"name":"_3","nativeSrc":"634:2:2","nodeType":"YulIdentifier","src":"634:2:2"}],"functionName":{"name":"and","nativeSrc":"597:3:2","nodeType":"YulIdentifier","src":"597:3:2"},"nativeSrc":"597:40:2","nodeType":"YulFunctionCall","src":"597:40:2"}],"functionName":{"name":"add","nativeSrc":"585:3:2","nodeType":"YulIdentifier","src":"585:3:2"},"nativeSrc":"585:53:2","nodeType":"YulFunctionCall","src":"585:53:2"},"variables":[{"name":"newFreePtr","nativeSrc":"571:10:2","nodeType":"YulTypedName","src":"571:10:2","type":""}]},{"body":{"nativeSrc":"697:22:2","nodeType":"YulBlock","src":"697:22:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"699:16:2","nodeType":"YulIdentifier","src":"699:16:2"},"nativeSrc":"699:18:2","nodeType":"YulFunctionCall","src":"699:18:2"},"nativeSrc":"699:18:2","nodeType":"YulExpressionStatement","src":"699:18:2"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"656:10:2","nodeType":"YulIdentifier","src":"656:10:2"},{"name":"_2","nativeSrc":"668:2:2","nodeType":"YulIdentifier","src":"668:2:2"}],"functionName":{"name":"gt","nativeSrc":"653:2:2","nodeType":"YulIdentifier","src":"653:2:2"},"nativeSrc":"653:18:2","nodeType":"YulFunctionCall","src":"653:18:2"},{"arguments":[{"name":"newFreePtr","nativeSrc":"676:10:2","nodeType":"YulIdentifier","src":"676:10:2"},{"name":"memPtr","nativeSrc":"688:6:2","nodeType":"YulIdentifier","src":"688:6:2"}],"functionName":{"name":"lt","nativeSrc":"673:2:2","nodeType":"YulIdentifier","src":"673:2:2"},"nativeSrc":"673:22:2","nodeType":"YulFunctionCall","src":"673:22:2"}],"functionName":{"name":"or","nativeSrc":"650:2:2","nodeType":"YulIdentifier","src":"650:2:2"},"nativeSrc":"650:46:2","nodeType":"YulFunctionCall","src":"650:46:2"},"nativeSrc":"647:72:2","nodeType":"YulIf","src":"647:72:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"735:2:2","nodeType":"YulLiteral","src":"735:2:2","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"739:10:2","nodeType":"YulIdentifier","src":"739:10:2"}],"functionName":{"name":"mstore","nativeSrc":"728:6:2","nodeType":"YulIdentifier","src":"728:6:2"},"nativeSrc":"728:22:2","nodeType":"YulFunctionCall","src":"728:22:2"},"nativeSrc":"728:22:2","nodeType":"YulExpressionStatement","src":"728:22:2"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"766:6:2","nodeType":"YulIdentifier","src":"766:6:2"},{"name":"_1","nativeSrc":"774:2:2","nodeType":"YulIdentifier","src":"774:2:2"}],"functionName":{"name":"mstore","nativeSrc":"759:6:2","nodeType":"YulIdentifier","src":"759:6:2"},"nativeSrc":"759:18:2","nodeType":"YulFunctionCall","src":"759:18:2"},"nativeSrc":"759:18:2","nodeType":"YulExpressionStatement","src":"759:18:2"},{"body":{"nativeSrc":"825:16:2","nodeType":"YulBlock","src":"825:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"834:1:2","nodeType":"YulLiteral","src":"834:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"837:1:2","nodeType":"YulLiteral","src":"837:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"827:6:2","nodeType":"YulIdentifier","src":"827:6:2"},"nativeSrc":"827:12:2","nodeType":"YulFunctionCall","src":"827:12:2"},"nativeSrc":"827:12:2","nodeType":"YulExpressionStatement","src":"827:12:2"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"800:6:2","nodeType":"YulIdentifier","src":"800:6:2"},{"name":"_1","nativeSrc":"808:2:2","nodeType":"YulIdentifier","src":"808:2:2"}],"functionName":{"name":"add","nativeSrc":"796:3:2","nodeType":"YulIdentifier","src":"796:3:2"},"nativeSrc":"796:15:2","nodeType":"YulFunctionCall","src":"796:15:2"},{"kind":"number","nativeSrc":"813:4:2","nodeType":"YulLiteral","src":"813:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"792:3:2","nodeType":"YulIdentifier","src":"792:3:2"},"nativeSrc":"792:26:2","nodeType":"YulFunctionCall","src":"792:26:2"},{"name":"end","nativeSrc":"820:3:2","nodeType":"YulIdentifier","src":"820:3:2"}],"functionName":{"name":"gt","nativeSrc":"789:2:2","nodeType":"YulIdentifier","src":"789:2:2"},"nativeSrc":"789:35:2","nodeType":"YulFunctionCall","src":"789:35:2"},"nativeSrc":"786:55:2","nodeType":"YulIf","src":"786:55:2"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"867:6:2","nodeType":"YulIdentifier","src":"867:6:2"},{"kind":"number","nativeSrc":"875:4:2","nodeType":"YulLiteral","src":"875:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"863:3:2","nodeType":"YulIdentifier","src":"863:3:2"},"nativeSrc":"863:17:2","nodeType":"YulFunctionCall","src":"863:17:2"},{"arguments":[{"name":"offset","nativeSrc":"886:6:2","nodeType":"YulIdentifier","src":"886:6:2"},{"kind":"number","nativeSrc":"894:4:2","nodeType":"YulLiteral","src":"894:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"882:3:2","nodeType":"YulIdentifier","src":"882:3:2"},"nativeSrc":"882:17:2","nodeType":"YulFunctionCall","src":"882:17:2"},{"name":"_1","nativeSrc":"901:2:2","nodeType":"YulIdentifier","src":"901:2:2"}],"functionName":{"name":"calldatacopy","nativeSrc":"850:12:2","nodeType":"YulIdentifier","src":"850:12:2"},"nativeSrc":"850:54:2","nodeType":"YulFunctionCall","src":"850:54:2"},"nativeSrc":"850:54:2","nodeType":"YulExpressionStatement","src":"850:54:2"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"928:6:2","nodeType":"YulIdentifier","src":"928:6:2"},{"name":"_1","nativeSrc":"936:2:2","nodeType":"YulIdentifier","src":"936:2:2"}],"functionName":{"name":"add","nativeSrc":"924:3:2","nodeType":"YulIdentifier","src":"924:3:2"},"nativeSrc":"924:15:2","nodeType":"YulFunctionCall","src":"924:15:2"},{"kind":"number","nativeSrc":"941:4:2","nodeType":"YulLiteral","src":"941:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"920:3:2","nodeType":"YulIdentifier","src":"920:3:2"},"nativeSrc":"920:26:2","nodeType":"YulFunctionCall","src":"920:26:2"},{"kind":"number","nativeSrc":"948:1:2","nodeType":"YulLiteral","src":"948:1:2","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"913:6:2","nodeType":"YulIdentifier","src":"913:6:2"},"nativeSrc":"913:37:2","nodeType":"YulFunctionCall","src":"913:37:2"},"nativeSrc":"913:37:2","nodeType":"YulExpressionStatement","src":"913:37:2"},{"nativeSrc":"959:15:2","nodeType":"YulAssignment","src":"959:15:2","value":{"name":"memPtr","nativeSrc":"968:6:2","nodeType":"YulIdentifier","src":"968:6:2"},"variableNames":[{"name":"array","nativeSrc":"959:5:2","nodeType":"YulIdentifier","src":"959:5:2"}]}]},"name":"abi_decode_bytes","nativeSrc":"203:777:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"229:6:2","nodeType":"YulTypedName","src":"229:6:2","type":""},{"name":"end","nativeSrc":"237:3:2","nodeType":"YulTypedName","src":"237:3:2","type":""}],"returnVariables":[{"name":"array","nativeSrc":"245:5:2","nodeType":"YulTypedName","src":"245:5:2","type":""}],"src":"203:777:2"},{"body":{"nativeSrc":"1048:412:2","nodeType":"YulBlock","src":"1048:412:2","statements":[{"body":{"nativeSrc":"1092:16:2","nodeType":"YulBlock","src":"1092:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1101:1:2","nodeType":"YulLiteral","src":"1101:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"1104:1:2","nodeType":"YulLiteral","src":"1104:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1094:6:2","nodeType":"YulIdentifier","src":"1094:6:2"},"nativeSrc":"1094:12:2","nodeType":"YulFunctionCall","src":"1094:12:2"},"nativeSrc":"1094:12:2","nodeType":"YulExpressionStatement","src":"1094:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"1069:3:2","nodeType":"YulIdentifier","src":"1069:3:2"},{"name":"headStart","nativeSrc":"1074:9:2","nodeType":"YulIdentifier","src":"1074:9:2"}],"functionName":{"name":"sub","nativeSrc":"1065:3:2","nodeType":"YulIdentifier","src":"1065:3:2"},"nativeSrc":"1065:19:2","nodeType":"YulFunctionCall","src":"1065:19:2"},{"kind":"number","nativeSrc":"1086:4:2","nodeType":"YulLiteral","src":"1086:4:2","type":"","value":"0x40"}],"functionName":{"name":"slt","nativeSrc":"1061:3:2","nodeType":"YulIdentifier","src":"1061:3:2"},"nativeSrc":"1061:30:2","nodeType":"YulFunctionCall","src":"1061:30:2"},"nativeSrc":"1058:50:2","nodeType":"YulIf","src":"1058:50:2"},{"nativeSrc":"1117:25:2","nodeType":"YulVariableDeclaration","src":"1117:25:2","value":{"arguments":[{"kind":"number","nativeSrc":"1137:4:2","nodeType":"YulLiteral","src":"1137:4:2","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"1131:5:2","nodeType":"YulIdentifier","src":"1131:5:2"},"nativeSrc":"1131:11:2","nodeType":"YulFunctionCall","src":"1131:11:2"},"variables":[{"name":"memPtr","nativeSrc":"1121:6:2","nodeType":"YulTypedName","src":"1121:6:2","type":""}]},{"nativeSrc":"1151:35:2","nodeType":"YulVariableDeclaration","src":"1151:35:2","value":{"arguments":[{"name":"memPtr","nativeSrc":"1173:6:2","nodeType":"YulIdentifier","src":"1173:6:2"},{"kind":"number","nativeSrc":"1181:4:2","nodeType":"YulLiteral","src":"1181:4:2","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"1169:3:2","nodeType":"YulIdentifier","src":"1169:3:2"},"nativeSrc":"1169:17:2","nodeType":"YulFunctionCall","src":"1169:17:2"},"variables":[{"name":"newFreePtr","nativeSrc":"1155:10:2","nodeType":"YulTypedName","src":"1155:10:2","type":""}]},{"body":{"nativeSrc":"1261:22:2","nodeType":"YulBlock","src":"1261:22:2","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1263:16:2","nodeType":"YulIdentifier","src":"1263:16:2"},"nativeSrc":"1263:18:2","nodeType":"YulFunctionCall","src":"1263:18:2"},"nativeSrc":"1263:18:2","nodeType":"YulExpressionStatement","src":"1263:18:2"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1204:10:2","nodeType":"YulIdentifier","src":"1204:10:2"},{"kind":"number","nativeSrc":"1216:18:2","nodeType":"YulLiteral","src":"1216:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1201:2:2","nodeType":"YulIdentifier","src":"1201:2:2"},"nativeSrc":"1201:34:2","nodeType":"YulFunctionCall","src":"1201:34:2"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1240:10:2","nodeType":"YulIdentifier","src":"1240:10:2"},{"name":"memPtr","nativeSrc":"1252:6:2","nodeType":"YulIdentifier","src":"1252:6:2"}],"functionName":{"name":"lt","nativeSrc":"1237:2:2","nodeType":"YulIdentifier","src":"1237:2:2"},"nativeSrc":"1237:22:2","nodeType":"YulFunctionCall","src":"1237:22:2"}],"functionName":{"name":"or","nativeSrc":"1198:2:2","nodeType":"YulIdentifier","src":"1198:2:2"},"nativeSrc":"1198:62:2","nodeType":"YulFunctionCall","src":"1198:62:2"},"nativeSrc":"1195:88:2","nodeType":"YulIf","src":"1195:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1299:4:2","nodeType":"YulLiteral","src":"1299:4:2","type":"","value":"0x40"},{"name":"newFreePtr","nativeSrc":"1305:10:2","nodeType":"YulIdentifier","src":"1305:10:2"}],"functionName":{"name":"mstore","nativeSrc":"1292:6:2","nodeType":"YulIdentifier","src":"1292:6:2"},"nativeSrc":"1292:24:2","nodeType":"YulFunctionCall","src":"1292:24:2"},"nativeSrc":"1292:24:2","nodeType":"YulExpressionStatement","src":"1292:24:2"},{"nativeSrc":"1325:15:2","nodeType":"YulAssignment","src":"1325:15:2","value":{"name":"memPtr","nativeSrc":"1334:6:2","nodeType":"YulIdentifier","src":"1334:6:2"},"variableNames":[{"name":"value","nativeSrc":"1325:5:2","nodeType":"YulIdentifier","src":"1325:5:2"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1356:6:2","nodeType":"YulIdentifier","src":"1356:6:2"},{"arguments":[{"name":"headStart","nativeSrc":"1377:9:2","nodeType":"YulIdentifier","src":"1377:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"1364:12:2","nodeType":"YulIdentifier","src":"1364:12:2"},"nativeSrc":"1364:23:2","nodeType":"YulFunctionCall","src":"1364:23:2"}],"functionName":{"name":"mstore","nativeSrc":"1349:6:2","nodeType":"YulIdentifier","src":"1349:6:2"},"nativeSrc":"1349:39:2","nodeType":"YulFunctionCall","src":"1349:39:2"},"nativeSrc":"1349:39:2","nodeType":"YulExpressionStatement","src":"1349:39:2"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1408:6:2","nodeType":"YulIdentifier","src":"1408:6:2"},{"kind":"number","nativeSrc":"1416:2:2","nodeType":"YulLiteral","src":"1416:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1404:3:2","nodeType":"YulIdentifier","src":"1404:3:2"},"nativeSrc":"1404:15:2","nodeType":"YulFunctionCall","src":"1404:15:2"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1438:9:2","nodeType":"YulIdentifier","src":"1438:9:2"},{"kind":"number","nativeSrc":"1449:2:2","nodeType":"YulLiteral","src":"1449:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1434:3:2","nodeType":"YulIdentifier","src":"1434:3:2"},"nativeSrc":"1434:18:2","nodeType":"YulFunctionCall","src":"1434:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"1421:12:2","nodeType":"YulIdentifier","src":"1421:12:2"},"nativeSrc":"1421:32:2","nodeType":"YulFunctionCall","src":"1421:32:2"}],"functionName":{"name":"mstore","nativeSrc":"1397:6:2","nodeType":"YulIdentifier","src":"1397:6:2"},"nativeSrc":"1397:57:2","nodeType":"YulFunctionCall","src":"1397:57:2"},"nativeSrc":"1397:57:2","nodeType":"YulExpressionStatement","src":"1397:57:2"}]},"name":"abi_decode_struct_Values","nativeSrc":"985:475:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1019:9:2","nodeType":"YulTypedName","src":"1019:9:2","type":""},{"name":"end","nativeSrc":"1030:3:2","nodeType":"YulTypedName","src":"1030:3:2","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1038:5:2","nodeType":"YulTypedName","src":"1038:5:2","type":""}],"src":"985:475:2"},{"body":{"nativeSrc":"1626:558:2","nodeType":"YulBlock","src":"1626:558:2","statements":[{"body":{"nativeSrc":"1673:16:2","nodeType":"YulBlock","src":"1673:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1682:1:2","nodeType":"YulLiteral","src":"1682:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"1685:1:2","nodeType":"YulLiteral","src":"1685:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1675:6:2","nodeType":"YulIdentifier","src":"1675:6:2"},"nativeSrc":"1675:12:2","nodeType":"YulFunctionCall","src":"1675:12:2"},"nativeSrc":"1675:12:2","nodeType":"YulExpressionStatement","src":"1675:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1647:7:2","nodeType":"YulIdentifier","src":"1647:7:2"},{"name":"headStart","nativeSrc":"1656:9:2","nodeType":"YulIdentifier","src":"1656:9:2"}],"functionName":{"name":"sub","nativeSrc":"1643:3:2","nodeType":"YulIdentifier","src":"1643:3:2"},"nativeSrc":"1643:23:2","nodeType":"YulFunctionCall","src":"1643:23:2"},{"kind":"number","nativeSrc":"1668:3:2","nodeType":"YulLiteral","src":"1668:3:2","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"1639:3:2","nodeType":"YulIdentifier","src":"1639:3:2"},"nativeSrc":"1639:33:2","nodeType":"YulFunctionCall","src":"1639:33:2"},"nativeSrc":"1636:53:2","nodeType":"YulIf","src":"1636:53:2"},{"nativeSrc":"1698:33:2","nodeType":"YulAssignment","src":"1698:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"1721:9:2","nodeType":"YulIdentifier","src":"1721:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"1708:12:2","nodeType":"YulIdentifier","src":"1708:12:2"},"nativeSrc":"1708:23:2","nodeType":"YulFunctionCall","src":"1708:23:2"},"variableNames":[{"name":"value0","nativeSrc":"1698:6:2","nodeType":"YulIdentifier","src":"1698:6:2"}]},{"nativeSrc":"1740:46:2","nodeType":"YulVariableDeclaration","src":"1740:46:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1771:9:2","nodeType":"YulIdentifier","src":"1771:9:2"},{"kind":"number","nativeSrc":"1782:2:2","nodeType":"YulLiteral","src":"1782:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1767:3:2","nodeType":"YulIdentifier","src":"1767:3:2"},"nativeSrc":"1767:18:2","nodeType":"YulFunctionCall","src":"1767:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"1754:12:2","nodeType":"YulIdentifier","src":"1754:12:2"},"nativeSrc":"1754:32:2","nodeType":"YulFunctionCall","src":"1754:32:2"},"variables":[{"name":"offset","nativeSrc":"1744:6:2","nodeType":"YulTypedName","src":"1744:6:2","type":""}]},{"nativeSrc":"1795:28:2","nodeType":"YulVariableDeclaration","src":"1795:28:2","value":{"kind":"number","nativeSrc":"1805:18:2","nodeType":"YulLiteral","src":"1805:18:2","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"1799:2:2","nodeType":"YulTypedName","src":"1799:2:2","type":""}]},{"body":{"nativeSrc":"1850:16:2","nodeType":"YulBlock","src":"1850:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1859:1:2","nodeType":"YulLiteral","src":"1859:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"1862:1:2","nodeType":"YulLiteral","src":"1862:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1852:6:2","nodeType":"YulIdentifier","src":"1852:6:2"},"nativeSrc":"1852:12:2","nodeType":"YulFunctionCall","src":"1852:12:2"},"nativeSrc":"1852:12:2","nodeType":"YulExpressionStatement","src":"1852:12:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1838:6:2","nodeType":"YulIdentifier","src":"1838:6:2"},{"name":"_1","nativeSrc":"1846:2:2","nodeType":"YulIdentifier","src":"1846:2:2"}],"functionName":{"name":"gt","nativeSrc":"1835:2:2","nodeType":"YulIdentifier","src":"1835:2:2"},"nativeSrc":"1835:14:2","nodeType":"YulFunctionCall","src":"1835:14:2"},"nativeSrc":"1832:34:2","nodeType":"YulIf","src":"1832:34:2"},{"nativeSrc":"1875:59:2","nodeType":"YulAssignment","src":"1875:59:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1906:9:2","nodeType":"YulIdentifier","src":"1906:9:2"},{"name":"offset","nativeSrc":"1917:6:2","nodeType":"YulIdentifier","src":"1917:6:2"}],"functionName":{"name":"add","nativeSrc":"1902:3:2","nodeType":"YulIdentifier","src":"1902:3:2"},"nativeSrc":"1902:22:2","nodeType":"YulFunctionCall","src":"1902:22:2"},{"name":"dataEnd","nativeSrc":"1926:7:2","nodeType":"YulIdentifier","src":"1926:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1885:16:2","nodeType":"YulIdentifier","src":"1885:16:2"},"nativeSrc":"1885:49:2","nodeType":"YulFunctionCall","src":"1885:49:2"},"variableNames":[{"name":"value1","nativeSrc":"1875:6:2","nodeType":"YulIdentifier","src":"1875:6:2"}]},{"nativeSrc":"1943:48:2","nodeType":"YulVariableDeclaration","src":"1943:48:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1976:9:2","nodeType":"YulIdentifier","src":"1976:9:2"},{"kind":"number","nativeSrc":"1987:2:2","nodeType":"YulLiteral","src":"1987:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1972:3:2","nodeType":"YulIdentifier","src":"1972:3:2"},"nativeSrc":"1972:18:2","nodeType":"YulFunctionCall","src":"1972:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"1959:12:2","nodeType":"YulIdentifier","src":"1959:12:2"},"nativeSrc":"1959:32:2","nodeType":"YulFunctionCall","src":"1959:32:2"},"variables":[{"name":"offset_1","nativeSrc":"1947:8:2","nodeType":"YulTypedName","src":"1947:8:2","type":""}]},{"body":{"nativeSrc":"2020:16:2","nodeType":"YulBlock","src":"2020:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2029:1:2","nodeType":"YulLiteral","src":"2029:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"2032:1:2","nodeType":"YulLiteral","src":"2032:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2022:6:2","nodeType":"YulIdentifier","src":"2022:6:2"},"nativeSrc":"2022:12:2","nodeType":"YulFunctionCall","src":"2022:12:2"},"nativeSrc":"2022:12:2","nodeType":"YulExpressionStatement","src":"2022:12:2"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"2006:8:2","nodeType":"YulIdentifier","src":"2006:8:2"},{"name":"_1","nativeSrc":"2016:2:2","nodeType":"YulIdentifier","src":"2016:2:2"}],"functionName":{"name":"gt","nativeSrc":"2003:2:2","nodeType":"YulIdentifier","src":"2003:2:2"},"nativeSrc":"2003:16:2","nodeType":"YulFunctionCall","src":"2003:16:2"},"nativeSrc":"2000:36:2","nodeType":"YulIf","src":"2000:36:2"},{"nativeSrc":"2045:61:2","nodeType":"YulAssignment","src":"2045:61:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2076:9:2","nodeType":"YulIdentifier","src":"2076:9:2"},{"name":"offset_1","nativeSrc":"2087:8:2","nodeType":"YulIdentifier","src":"2087:8:2"}],"functionName":{"name":"add","nativeSrc":"2072:3:2","nodeType":"YulIdentifier","src":"2072:3:2"},"nativeSrc":"2072:24:2","nodeType":"YulFunctionCall","src":"2072:24:2"},{"name":"dataEnd","nativeSrc":"2098:7:2","nodeType":"YulIdentifier","src":"2098:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"2055:16:2","nodeType":"YulIdentifier","src":"2055:16:2"},"nativeSrc":"2055:51:2","nodeType":"YulFunctionCall","src":"2055:51:2"},"variableNames":[{"name":"value2","nativeSrc":"2045:6:2","nodeType":"YulIdentifier","src":"2045:6:2"}]},{"nativeSrc":"2115:63:2","nodeType":"YulAssignment","src":"2115:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2154:9:2","nodeType":"YulIdentifier","src":"2154:9:2"},{"kind":"number","nativeSrc":"2165:2:2","nodeType":"YulLiteral","src":"2165:2:2","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2150:3:2","nodeType":"YulIdentifier","src":"2150:3:2"},"nativeSrc":"2150:18:2","nodeType":"YulFunctionCall","src":"2150:18:2"},{"name":"dataEnd","nativeSrc":"2170:7:2","nodeType":"YulIdentifier","src":"2170:7:2"}],"functionName":{"name":"abi_decode_struct_Values","nativeSrc":"2125:24:2","nodeType":"YulIdentifier","src":"2125:24:2"},"nativeSrc":"2125:53:2","nodeType":"YulFunctionCall","src":"2125:53:2"},"variableNames":[{"name":"value3","nativeSrc":"2115:6:2","nodeType":"YulIdentifier","src":"2115:6:2"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptr","nativeSrc":"1465:719:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1568:9:2","nodeType":"YulTypedName","src":"1568:9:2","type":""},{"name":"dataEnd","nativeSrc":"1579:7:2","nodeType":"YulTypedName","src":"1579:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1591:6:2","nodeType":"YulTypedName","src":"1591:6:2","type":""},{"name":"value1","nativeSrc":"1599:6:2","nodeType":"YulTypedName","src":"1599:6:2","type":""},{"name":"value2","nativeSrc":"1607:6:2","nodeType":"YulTypedName","src":"1607:6:2","type":""},{"name":"value3","nativeSrc":"1615:6:2","nodeType":"YulTypedName","src":"1615:6:2","type":""}],"src":"1465:719:2"},{"body":{"nativeSrc":"2290:125:2","nodeType":"YulBlock","src":"2290:125:2","statements":[{"nativeSrc":"2300:26:2","nodeType":"YulAssignment","src":"2300:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"2312:9:2","nodeType":"YulIdentifier","src":"2312:9:2"},{"kind":"number","nativeSrc":"2323:2:2","nodeType":"YulLiteral","src":"2323:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2308:3:2","nodeType":"YulIdentifier","src":"2308:3:2"},"nativeSrc":"2308:18:2","nodeType":"YulFunctionCall","src":"2308:18:2"},"variableNames":[{"name":"tail","nativeSrc":"2300:4:2","nodeType":"YulIdentifier","src":"2300:4:2"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2342:9:2","nodeType":"YulIdentifier","src":"2342:9:2"},{"arguments":[{"name":"value0","nativeSrc":"2357:6:2","nodeType":"YulIdentifier","src":"2357:6:2"},{"kind":"number","nativeSrc":"2365:42:2","nodeType":"YulLiteral","src":"2365:42:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"2353:3:2","nodeType":"YulIdentifier","src":"2353:3:2"},"nativeSrc":"2353:55:2","nodeType":"YulFunctionCall","src":"2353:55:2"}],"functionName":{"name":"mstore","nativeSrc":"2335:6:2","nodeType":"YulIdentifier","src":"2335:6:2"},"nativeSrc":"2335:74:2","nodeType":"YulFunctionCall","src":"2335:74:2"},"nativeSrc":"2335:74:2","nodeType":"YulExpressionStatement","src":"2335:74:2"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2189:226:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2259:9:2","nodeType":"YulTypedName","src":"2259:9:2","type":""},{"name":"value0","nativeSrc":"2270:6:2","nodeType":"YulTypedName","src":"2270:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2281:4:2","nodeType":"YulTypedName","src":"2281:4:2","type":""}],"src":"2189:226:2"},{"body":{"nativeSrc":"2516:292:2","nodeType":"YulBlock","src":"2516:292:2","statements":[{"body":{"nativeSrc":"2562:16:2","nodeType":"YulBlock","src":"2562:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2571:1:2","nodeType":"YulLiteral","src":"2571:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"2574:1:2","nodeType":"YulLiteral","src":"2574:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2564:6:2","nodeType":"YulIdentifier","src":"2564:6:2"},"nativeSrc":"2564:12:2","nodeType":"YulFunctionCall","src":"2564:12:2"},"nativeSrc":"2564:12:2","nodeType":"YulExpressionStatement","src":"2564:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2537:7:2","nodeType":"YulIdentifier","src":"2537:7:2"},{"name":"headStart","nativeSrc":"2546:9:2","nodeType":"YulIdentifier","src":"2546:9:2"}],"functionName":{"name":"sub","nativeSrc":"2533:3:2","nodeType":"YulIdentifier","src":"2533:3:2"},"nativeSrc":"2533:23:2","nodeType":"YulFunctionCall","src":"2533:23:2"},{"kind":"number","nativeSrc":"2558:2:2","nodeType":"YulLiteral","src":"2558:2:2","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2529:3:2","nodeType":"YulIdentifier","src":"2529:3:2"},"nativeSrc":"2529:32:2","nodeType":"YulFunctionCall","src":"2529:32:2"},"nativeSrc":"2526:52:2","nodeType":"YulIf","src":"2526:52:2"},{"nativeSrc":"2587:33:2","nodeType":"YulAssignment","src":"2587:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"2610:9:2","nodeType":"YulIdentifier","src":"2610:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"2597:12:2","nodeType":"YulIdentifier","src":"2597:12:2"},"nativeSrc":"2597:23:2","nodeType":"YulFunctionCall","src":"2597:23:2"},"variableNames":[{"name":"value0","nativeSrc":"2587:6:2","nodeType":"YulIdentifier","src":"2587:6:2"}]},{"nativeSrc":"2629:46:2","nodeType":"YulVariableDeclaration","src":"2629:46:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2660:9:2","nodeType":"YulIdentifier","src":"2660:9:2"},{"kind":"number","nativeSrc":"2671:2:2","nodeType":"YulLiteral","src":"2671:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2656:3:2","nodeType":"YulIdentifier","src":"2656:3:2"},"nativeSrc":"2656:18:2","nodeType":"YulFunctionCall","src":"2656:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"2643:12:2","nodeType":"YulIdentifier","src":"2643:12:2"},"nativeSrc":"2643:32:2","nodeType":"YulFunctionCall","src":"2643:32:2"},"variables":[{"name":"offset","nativeSrc":"2633:6:2","nodeType":"YulTypedName","src":"2633:6:2","type":""}]},{"body":{"nativeSrc":"2718:16:2","nodeType":"YulBlock","src":"2718:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2727:1:2","nodeType":"YulLiteral","src":"2727:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"2730:1:2","nodeType":"YulLiteral","src":"2730:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2720:6:2","nodeType":"YulIdentifier","src":"2720:6:2"},"nativeSrc":"2720:12:2","nodeType":"YulFunctionCall","src":"2720:12:2"},"nativeSrc":"2720:12:2","nodeType":"YulExpressionStatement","src":"2720:12:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2690:6:2","nodeType":"YulIdentifier","src":"2690:6:2"},{"kind":"number","nativeSrc":"2698:18:2","nodeType":"YulLiteral","src":"2698:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2687:2:2","nodeType":"YulIdentifier","src":"2687:2:2"},"nativeSrc":"2687:30:2","nodeType":"YulFunctionCall","src":"2687:30:2"},"nativeSrc":"2684:50:2","nodeType":"YulIf","src":"2684:50:2"},{"nativeSrc":"2743:59:2","nodeType":"YulAssignment","src":"2743:59:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2774:9:2","nodeType":"YulIdentifier","src":"2774:9:2"},{"name":"offset","nativeSrc":"2785:6:2","nodeType":"YulIdentifier","src":"2785:6:2"}],"functionName":{"name":"add","nativeSrc":"2770:3:2","nodeType":"YulIdentifier","src":"2770:3:2"},"nativeSrc":"2770:22:2","nodeType":"YulFunctionCall","src":"2770:22:2"},{"name":"dataEnd","nativeSrc":"2794:7:2","nodeType":"YulIdentifier","src":"2794:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"2753:16:2","nodeType":"YulIdentifier","src":"2753:16:2"},"nativeSrc":"2753:49:2","nodeType":"YulFunctionCall","src":"2753:49:2"},"variableNames":[{"name":"value1","nativeSrc":"2743:6:2","nodeType":"YulIdentifier","src":"2743:6:2"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes_memory_ptr","nativeSrc":"2420:388:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2474:9:2","nodeType":"YulTypedName","src":"2474:9:2","type":""},{"name":"dataEnd","nativeSrc":"2485:7:2","nodeType":"YulTypedName","src":"2485:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2497:6:2","nodeType":"YulTypedName","src":"2497:6:2","type":""},{"name":"value1","nativeSrc":"2505:6:2","nodeType":"YulTypedName","src":"2505:6:2","type":""}],"src":"2420:388:2"},{"body":{"nativeSrc":"2892:241:2","nodeType":"YulBlock","src":"2892:241:2","statements":[{"body":{"nativeSrc":"2938:16:2","nodeType":"YulBlock","src":"2938:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2947:1:2","nodeType":"YulLiteral","src":"2947:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"2950:1:2","nodeType":"YulLiteral","src":"2950:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2940:6:2","nodeType":"YulIdentifier","src":"2940:6:2"},"nativeSrc":"2940:12:2","nodeType":"YulFunctionCall","src":"2940:12:2"},"nativeSrc":"2940:12:2","nodeType":"YulExpressionStatement","src":"2940:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2913:7:2","nodeType":"YulIdentifier","src":"2913:7:2"},{"name":"headStart","nativeSrc":"2922:9:2","nodeType":"YulIdentifier","src":"2922:9:2"}],"functionName":{"name":"sub","nativeSrc":"2909:3:2","nodeType":"YulIdentifier","src":"2909:3:2"},"nativeSrc":"2909:23:2","nodeType":"YulFunctionCall","src":"2909:23:2"},{"kind":"number","nativeSrc":"2934:2:2","nodeType":"YulLiteral","src":"2934:2:2","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2905:3:2","nodeType":"YulIdentifier","src":"2905:3:2"},"nativeSrc":"2905:32:2","nodeType":"YulFunctionCall","src":"2905:32:2"},"nativeSrc":"2902:52:2","nodeType":"YulIf","src":"2902:52:2"},{"nativeSrc":"2963:37:2","nodeType":"YulVariableDeclaration","src":"2963:37:2","value":{"arguments":[{"name":"headStart","nativeSrc":"2990:9:2","nodeType":"YulIdentifier","src":"2990:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"2977:12:2","nodeType":"YulIdentifier","src":"2977:12:2"},"nativeSrc":"2977:23:2","nodeType":"YulFunctionCall","src":"2977:23:2"},"variables":[{"name":"offset","nativeSrc":"2967:6:2","nodeType":"YulTypedName","src":"2967:6:2","type":""}]},{"body":{"nativeSrc":"3043:16:2","nodeType":"YulBlock","src":"3043:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3052:1:2","nodeType":"YulLiteral","src":"3052:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"3055:1:2","nodeType":"YulLiteral","src":"3055:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3045:6:2","nodeType":"YulIdentifier","src":"3045:6:2"},"nativeSrc":"3045:12:2","nodeType":"YulFunctionCall","src":"3045:12:2"},"nativeSrc":"3045:12:2","nodeType":"YulExpressionStatement","src":"3045:12:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3015:6:2","nodeType":"YulIdentifier","src":"3015:6:2"},{"kind":"number","nativeSrc":"3023:18:2","nodeType":"YulLiteral","src":"3023:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3012:2:2","nodeType":"YulIdentifier","src":"3012:2:2"},"nativeSrc":"3012:30:2","nodeType":"YulFunctionCall","src":"3012:30:2"},"nativeSrc":"3009:50:2","nodeType":"YulIf","src":"3009:50:2"},{"nativeSrc":"3068:59:2","nodeType":"YulAssignment","src":"3068:59:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3099:9:2","nodeType":"YulIdentifier","src":"3099:9:2"},{"name":"offset","nativeSrc":"3110:6:2","nodeType":"YulIdentifier","src":"3110:6:2"}],"functionName":{"name":"add","nativeSrc":"3095:3:2","nodeType":"YulIdentifier","src":"3095:3:2"},"nativeSrc":"3095:22:2","nodeType":"YulFunctionCall","src":"3095:22:2"},{"name":"dataEnd","nativeSrc":"3119:7:2","nodeType":"YulIdentifier","src":"3119:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"3078:16:2","nodeType":"YulIdentifier","src":"3078:16:2"},"nativeSrc":"3078:49:2","nodeType":"YulFunctionCall","src":"3078:49:2"},"variableNames":[{"name":"value0","nativeSrc":"3068:6:2","nodeType":"YulIdentifier","src":"3068:6:2"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"2813:320:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2858:9:2","nodeType":"YulTypedName","src":"2858:9:2","type":""},{"name":"dataEnd","nativeSrc":"2869:7:2","nodeType":"YulTypedName","src":"2869:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2881:6:2","nodeType":"YulTypedName","src":"2881:6:2","type":""}],"src":"2813:320:2"},{"body":{"nativeSrc":"3187:147:2","nodeType":"YulBlock","src":"3187:147:2","statements":[{"nativeSrc":"3197:29:2","nodeType":"YulAssignment","src":"3197:29:2","value":{"arguments":[{"name":"offset","nativeSrc":"3219:6:2","nodeType":"YulIdentifier","src":"3219:6:2"}],"functionName":{"name":"calldataload","nativeSrc":"3206:12:2","nodeType":"YulIdentifier","src":"3206:12:2"},"nativeSrc":"3206:20:2","nodeType":"YulFunctionCall","src":"3206:20:2"},"variableNames":[{"name":"value","nativeSrc":"3197:5:2","nodeType":"YulIdentifier","src":"3197:5:2"}]},{"body":{"nativeSrc":"3312:16:2","nodeType":"YulBlock","src":"3312:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3321:1:2","nodeType":"YulLiteral","src":"3321:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"3324:1:2","nodeType":"YulLiteral","src":"3324:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3314:6:2","nodeType":"YulIdentifier","src":"3314:6:2"},"nativeSrc":"3314:12:2","nodeType":"YulFunctionCall","src":"3314:12:2"},"nativeSrc":"3314:12:2","nodeType":"YulExpressionStatement","src":"3314:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3248:5:2","nodeType":"YulIdentifier","src":"3248:5:2"},{"arguments":[{"name":"value","nativeSrc":"3259:5:2","nodeType":"YulIdentifier","src":"3259:5:2"},{"kind":"number","nativeSrc":"3266:42:2","nodeType":"YulLiteral","src":"3266:42:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3255:3:2","nodeType":"YulIdentifier","src":"3255:3:2"},"nativeSrc":"3255:54:2","nodeType":"YulFunctionCall","src":"3255:54:2"}],"functionName":{"name":"eq","nativeSrc":"3245:2:2","nodeType":"YulIdentifier","src":"3245:2:2"},"nativeSrc":"3245:65:2","nodeType":"YulFunctionCall","src":"3245:65:2"}],"functionName":{"name":"iszero","nativeSrc":"3238:6:2","nodeType":"YulIdentifier","src":"3238:6:2"},"nativeSrc":"3238:73:2","nodeType":"YulFunctionCall","src":"3238:73:2"},"nativeSrc":"3235:93:2","nodeType":"YulIf","src":"3235:93:2"}]},"name":"abi_decode_address","nativeSrc":"3138:196:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3166:6:2","nodeType":"YulTypedName","src":"3166:6:2","type":""}],"returnVariables":[{"name":"value","nativeSrc":"3177:5:2","nodeType":"YulTypedName","src":"3177:5:2","type":""}],"src":"3138:196:2"},{"body":{"nativeSrc":"3452:349:2","nodeType":"YulBlock","src":"3452:349:2","statements":[{"body":{"nativeSrc":"3498:16:2","nodeType":"YulBlock","src":"3498:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3507:1:2","nodeType":"YulLiteral","src":"3507:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"3510:1:2","nodeType":"YulLiteral","src":"3510:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3500:6:2","nodeType":"YulIdentifier","src":"3500:6:2"},"nativeSrc":"3500:12:2","nodeType":"YulFunctionCall","src":"3500:12:2"},"nativeSrc":"3500:12:2","nodeType":"YulExpressionStatement","src":"3500:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3473:7:2","nodeType":"YulIdentifier","src":"3473:7:2"},{"name":"headStart","nativeSrc":"3482:9:2","nodeType":"YulIdentifier","src":"3482:9:2"}],"functionName":{"name":"sub","nativeSrc":"3469:3:2","nodeType":"YulIdentifier","src":"3469:3:2"},"nativeSrc":"3469:23:2","nodeType":"YulFunctionCall","src":"3469:23:2"},{"kind":"number","nativeSrc":"3494:2:2","nodeType":"YulLiteral","src":"3494:2:2","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3465:3:2","nodeType":"YulIdentifier","src":"3465:3:2"},"nativeSrc":"3465:32:2","nodeType":"YulFunctionCall","src":"3465:32:2"},"nativeSrc":"3462:52:2","nodeType":"YulIf","src":"3462:52:2"},{"nativeSrc":"3523:33:2","nodeType":"YulAssignment","src":"3523:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"3546:9:2","nodeType":"YulIdentifier","src":"3546:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"3533:12:2","nodeType":"YulIdentifier","src":"3533:12:2"},"nativeSrc":"3533:23:2","nodeType":"YulFunctionCall","src":"3533:23:2"},"variableNames":[{"name":"value0","nativeSrc":"3523:6:2","nodeType":"YulIdentifier","src":"3523:6:2"}]},{"nativeSrc":"3565:48:2","nodeType":"YulAssignment","src":"3565:48:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3598:9:2","nodeType":"YulIdentifier","src":"3598:9:2"},{"kind":"number","nativeSrc":"3609:2:2","nodeType":"YulLiteral","src":"3609:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3594:3:2","nodeType":"YulIdentifier","src":"3594:3:2"},"nativeSrc":"3594:18:2","nodeType":"YulFunctionCall","src":"3594:18:2"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3575:18:2","nodeType":"YulIdentifier","src":"3575:18:2"},"nativeSrc":"3575:38:2","nodeType":"YulFunctionCall","src":"3575:38:2"},"variableNames":[{"name":"value1","nativeSrc":"3565:6:2","nodeType":"YulIdentifier","src":"3565:6:2"}]},{"nativeSrc":"3622:46:2","nodeType":"YulVariableDeclaration","src":"3622:46:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3653:9:2","nodeType":"YulIdentifier","src":"3653:9:2"},{"kind":"number","nativeSrc":"3664:2:2","nodeType":"YulLiteral","src":"3664:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3649:3:2","nodeType":"YulIdentifier","src":"3649:3:2"},"nativeSrc":"3649:18:2","nodeType":"YulFunctionCall","src":"3649:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"3636:12:2","nodeType":"YulIdentifier","src":"3636:12:2"},"nativeSrc":"3636:32:2","nodeType":"YulFunctionCall","src":"3636:32:2"},"variables":[{"name":"offset","nativeSrc":"3626:6:2","nodeType":"YulTypedName","src":"3626:6:2","type":""}]},{"body":{"nativeSrc":"3711:16:2","nodeType":"YulBlock","src":"3711:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3720:1:2","nodeType":"YulLiteral","src":"3720:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"3723:1:2","nodeType":"YulLiteral","src":"3723:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3713:6:2","nodeType":"YulIdentifier","src":"3713:6:2"},"nativeSrc":"3713:12:2","nodeType":"YulFunctionCall","src":"3713:12:2"},"nativeSrc":"3713:12:2","nodeType":"YulExpressionStatement","src":"3713:12:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3683:6:2","nodeType":"YulIdentifier","src":"3683:6:2"},{"kind":"number","nativeSrc":"3691:18:2","nodeType":"YulLiteral","src":"3691:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3680:2:2","nodeType":"YulIdentifier","src":"3680:2:2"},"nativeSrc":"3680:30:2","nodeType":"YulFunctionCall","src":"3680:30:2"},"nativeSrc":"3677:50:2","nodeType":"YulIf","src":"3677:50:2"},{"nativeSrc":"3736:59:2","nodeType":"YulAssignment","src":"3736:59:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3767:9:2","nodeType":"YulIdentifier","src":"3767:9:2"},{"name":"offset","nativeSrc":"3778:6:2","nodeType":"YulIdentifier","src":"3778:6:2"}],"functionName":{"name":"add","nativeSrc":"3763:3:2","nodeType":"YulIdentifier","src":"3763:3:2"},"nativeSrc":"3763:22:2","nodeType":"YulFunctionCall","src":"3763:22:2"},{"name":"dataEnd","nativeSrc":"3787:7:2","nodeType":"YulIdentifier","src":"3787:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"3746:16:2","nodeType":"YulIdentifier","src":"3746:16:2"},"nativeSrc":"3746:49:2","nodeType":"YulFunctionCall","src":"3746:49:2"},"variableNames":[{"name":"value2","nativeSrc":"3736:6:2","nodeType":"YulIdentifier","src":"3736:6:2"}]}]},"name":"abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr","nativeSrc":"3339:462:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3402:9:2","nodeType":"YulTypedName","src":"3402:9:2","type":""},{"name":"dataEnd","nativeSrc":"3413:7:2","nodeType":"YulTypedName","src":"3413:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3425:6:2","nodeType":"YulTypedName","src":"3425:6:2","type":""},{"name":"value1","nativeSrc":"3433:6:2","nodeType":"YulTypedName","src":"3433:6:2","type":""},{"name":"value2","nativeSrc":"3441:6:2","nodeType":"YulTypedName","src":"3441:6:2","type":""}],"src":"3339:462:2"},{"body":{"nativeSrc":"3876:110:2","nodeType":"YulBlock","src":"3876:110:2","statements":[{"body":{"nativeSrc":"3922:16:2","nodeType":"YulBlock","src":"3922:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3931:1:2","nodeType":"YulLiteral","src":"3931:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"3934:1:2","nodeType":"YulLiteral","src":"3934:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3924:6:2","nodeType":"YulIdentifier","src":"3924:6:2"},"nativeSrc":"3924:12:2","nodeType":"YulFunctionCall","src":"3924:12:2"},"nativeSrc":"3924:12:2","nodeType":"YulExpressionStatement","src":"3924:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3897:7:2","nodeType":"YulIdentifier","src":"3897:7:2"},{"name":"headStart","nativeSrc":"3906:9:2","nodeType":"YulIdentifier","src":"3906:9:2"}],"functionName":{"name":"sub","nativeSrc":"3893:3:2","nodeType":"YulIdentifier","src":"3893:3:2"},"nativeSrc":"3893:23:2","nodeType":"YulFunctionCall","src":"3893:23:2"},{"kind":"number","nativeSrc":"3918:2:2","nodeType":"YulLiteral","src":"3918:2:2","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3889:3:2","nodeType":"YulIdentifier","src":"3889:3:2"},"nativeSrc":"3889:32:2","nodeType":"YulFunctionCall","src":"3889:32:2"},"nativeSrc":"3886:52:2","nodeType":"YulIf","src":"3886:52:2"},{"nativeSrc":"3947:33:2","nodeType":"YulAssignment","src":"3947:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"3970:9:2","nodeType":"YulIdentifier","src":"3970:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"3957:12:2","nodeType":"YulIdentifier","src":"3957:12:2"},"nativeSrc":"3957:23:2","nodeType":"YulFunctionCall","src":"3957:23:2"},"variableNames":[{"name":"value0","nativeSrc":"3947:6:2","nodeType":"YulIdentifier","src":"3947:6:2"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"3806:180:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3842:9:2","nodeType":"YulTypedName","src":"3842:9:2","type":""},{"name":"dataEnd","nativeSrc":"3853:7:2","nodeType":"YulTypedName","src":"3853:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3865:6:2","nodeType":"YulTypedName","src":"3865:6:2","type":""}],"src":"3806:180:2"},{"body":{"nativeSrc":"4135:507:2","nodeType":"YulBlock","src":"4135:507:2","statements":[{"body":{"nativeSrc":"4182:16:2","nodeType":"YulBlock","src":"4182:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4191:1:2","nodeType":"YulLiteral","src":"4191:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"4194:1:2","nodeType":"YulLiteral","src":"4194:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4184:6:2","nodeType":"YulIdentifier","src":"4184:6:2"},"nativeSrc":"4184:12:2","nodeType":"YulFunctionCall","src":"4184:12:2"},"nativeSrc":"4184:12:2","nodeType":"YulExpressionStatement","src":"4184:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4156:7:2","nodeType":"YulIdentifier","src":"4156:7:2"},{"name":"headStart","nativeSrc":"4165:9:2","nodeType":"YulIdentifier","src":"4165:9:2"}],"functionName":{"name":"sub","nativeSrc":"4152:3:2","nodeType":"YulIdentifier","src":"4152:3:2"},"nativeSrc":"4152:23:2","nodeType":"YulFunctionCall","src":"4152:23:2"},{"kind":"number","nativeSrc":"4177:3:2","nodeType":"YulLiteral","src":"4177:3:2","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"4148:3:2","nodeType":"YulIdentifier","src":"4148:3:2"},"nativeSrc":"4148:33:2","nodeType":"YulFunctionCall","src":"4148:33:2"},"nativeSrc":"4145:53:2","nodeType":"YulIf","src":"4145:53:2"},{"nativeSrc":"4207:37:2","nodeType":"YulVariableDeclaration","src":"4207:37:2","value":{"arguments":[{"name":"headStart","nativeSrc":"4234:9:2","nodeType":"YulIdentifier","src":"4234:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"4221:12:2","nodeType":"YulIdentifier","src":"4221:12:2"},"nativeSrc":"4221:23:2","nodeType":"YulFunctionCall","src":"4221:23:2"},"variables":[{"name":"offset","nativeSrc":"4211:6:2","nodeType":"YulTypedName","src":"4211:6:2","type":""}]},{"nativeSrc":"4253:28:2","nodeType":"YulVariableDeclaration","src":"4253:28:2","value":{"kind":"number","nativeSrc":"4263:18:2","nodeType":"YulLiteral","src":"4263:18:2","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"4257:2:2","nodeType":"YulTypedName","src":"4257:2:2","type":""}]},{"body":{"nativeSrc":"4308:16:2","nodeType":"YulBlock","src":"4308:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4317:1:2","nodeType":"YulLiteral","src":"4317:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"4320:1:2","nodeType":"YulLiteral","src":"4320:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4310:6:2","nodeType":"YulIdentifier","src":"4310:6:2"},"nativeSrc":"4310:12:2","nodeType":"YulFunctionCall","src":"4310:12:2"},"nativeSrc":"4310:12:2","nodeType":"YulExpressionStatement","src":"4310:12:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4296:6:2","nodeType":"YulIdentifier","src":"4296:6:2"},{"name":"_1","nativeSrc":"4304:2:2","nodeType":"YulIdentifier","src":"4304:2:2"}],"functionName":{"name":"gt","nativeSrc":"4293:2:2","nodeType":"YulIdentifier","src":"4293:2:2"},"nativeSrc":"4293:14:2","nodeType":"YulFunctionCall","src":"4293:14:2"},"nativeSrc":"4290:34:2","nodeType":"YulIf","src":"4290:34:2"},{"nativeSrc":"4333:59:2","nodeType":"YulAssignment","src":"4333:59:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4364:9:2","nodeType":"YulIdentifier","src":"4364:9:2"},{"name":"offset","nativeSrc":"4375:6:2","nodeType":"YulIdentifier","src":"4375:6:2"}],"functionName":{"name":"add","nativeSrc":"4360:3:2","nodeType":"YulIdentifier","src":"4360:3:2"},"nativeSrc":"4360:22:2","nodeType":"YulFunctionCall","src":"4360:22:2"},{"name":"dataEnd","nativeSrc":"4384:7:2","nodeType":"YulIdentifier","src":"4384:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4343:16:2","nodeType":"YulIdentifier","src":"4343:16:2"},"nativeSrc":"4343:49:2","nodeType":"YulFunctionCall","src":"4343:49:2"},"variableNames":[{"name":"value0","nativeSrc":"4333:6:2","nodeType":"YulIdentifier","src":"4333:6:2"}]},{"nativeSrc":"4401:48:2","nodeType":"YulVariableDeclaration","src":"4401:48:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4434:9:2","nodeType":"YulIdentifier","src":"4434:9:2"},{"kind":"number","nativeSrc":"4445:2:2","nodeType":"YulLiteral","src":"4445:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4430:3:2","nodeType":"YulIdentifier","src":"4430:3:2"},"nativeSrc":"4430:18:2","nodeType":"YulFunctionCall","src":"4430:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"4417:12:2","nodeType":"YulIdentifier","src":"4417:12:2"},"nativeSrc":"4417:32:2","nodeType":"YulFunctionCall","src":"4417:32:2"},"variables":[{"name":"offset_1","nativeSrc":"4405:8:2","nodeType":"YulTypedName","src":"4405:8:2","type":""}]},{"body":{"nativeSrc":"4478:16:2","nodeType":"YulBlock","src":"4478:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4487:1:2","nodeType":"YulLiteral","src":"4487:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"4490:1:2","nodeType":"YulLiteral","src":"4490:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4480:6:2","nodeType":"YulIdentifier","src":"4480:6:2"},"nativeSrc":"4480:12:2","nodeType":"YulFunctionCall","src":"4480:12:2"},"nativeSrc":"4480:12:2","nodeType":"YulExpressionStatement","src":"4480:12:2"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"4464:8:2","nodeType":"YulIdentifier","src":"4464:8:2"},{"name":"_1","nativeSrc":"4474:2:2","nodeType":"YulIdentifier","src":"4474:2:2"}],"functionName":{"name":"gt","nativeSrc":"4461:2:2","nodeType":"YulIdentifier","src":"4461:2:2"},"nativeSrc":"4461:16:2","nodeType":"YulFunctionCall","src":"4461:16:2"},"nativeSrc":"4458:36:2","nodeType":"YulIf","src":"4458:36:2"},{"nativeSrc":"4503:61:2","nodeType":"YulAssignment","src":"4503:61:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4534:9:2","nodeType":"YulIdentifier","src":"4534:9:2"},{"name":"offset_1","nativeSrc":"4545:8:2","nodeType":"YulIdentifier","src":"4545:8:2"}],"functionName":{"name":"add","nativeSrc":"4530:3:2","nodeType":"YulIdentifier","src":"4530:3:2"},"nativeSrc":"4530:24:2","nodeType":"YulFunctionCall","src":"4530:24:2"},{"name":"dataEnd","nativeSrc":"4556:7:2","nodeType":"YulIdentifier","src":"4556:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4513:16:2","nodeType":"YulIdentifier","src":"4513:16:2"},"nativeSrc":"4513:51:2","nodeType":"YulFunctionCall","src":"4513:51:2"},"variableNames":[{"name":"value1","nativeSrc":"4503:6:2","nodeType":"YulIdentifier","src":"4503:6:2"}]},{"nativeSrc":"4573:63:2","nodeType":"YulAssignment","src":"4573:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4612:9:2","nodeType":"YulIdentifier","src":"4612:9:2"},{"kind":"number","nativeSrc":"4623:2:2","nodeType":"YulLiteral","src":"4623:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4608:3:2","nodeType":"YulIdentifier","src":"4608:3:2"},"nativeSrc":"4608:18:2","nodeType":"YulFunctionCall","src":"4608:18:2"},{"name":"dataEnd","nativeSrc":"4628:7:2","nodeType":"YulIdentifier","src":"4628:7:2"}],"functionName":{"name":"abi_decode_struct_Values","nativeSrc":"4583:24:2","nodeType":"YulIdentifier","src":"4583:24:2"},"nativeSrc":"4583:53:2","nodeType":"YulFunctionCall","src":"4583:53:2"},"variableNames":[{"name":"value2","nativeSrc":"4573:6:2","nodeType":"YulIdentifier","src":"4573:6:2"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptr","nativeSrc":"3991:651:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4085:9:2","nodeType":"YulTypedName","src":"4085:9:2","type":""},{"name":"dataEnd","nativeSrc":"4096:7:2","nodeType":"YulTypedName","src":"4096:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4108:6:2","nodeType":"YulTypedName","src":"4108:6:2","type":""},{"name":"value1","nativeSrc":"4116:6:2","nodeType":"YulTypedName","src":"4116:6:2","type":""},{"name":"value2","nativeSrc":"4124:6:2","nodeType":"YulTypedName","src":"4124:6:2","type":""}],"src":"3991:651:2"},{"body":{"nativeSrc":"4734:167:2","nodeType":"YulBlock","src":"4734:167:2","statements":[{"body":{"nativeSrc":"4780:16:2","nodeType":"YulBlock","src":"4780:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4789:1:2","nodeType":"YulLiteral","src":"4789:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"4792:1:2","nodeType":"YulLiteral","src":"4792:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4782:6:2","nodeType":"YulIdentifier","src":"4782:6:2"},"nativeSrc":"4782:12:2","nodeType":"YulFunctionCall","src":"4782:12:2"},"nativeSrc":"4782:12:2","nodeType":"YulExpressionStatement","src":"4782:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4755:7:2","nodeType":"YulIdentifier","src":"4755:7:2"},{"name":"headStart","nativeSrc":"4764:9:2","nodeType":"YulIdentifier","src":"4764:9:2"}],"functionName":{"name":"sub","nativeSrc":"4751:3:2","nodeType":"YulIdentifier","src":"4751:3:2"},"nativeSrc":"4751:23:2","nodeType":"YulFunctionCall","src":"4751:23:2"},{"kind":"number","nativeSrc":"4776:2:2","nodeType":"YulLiteral","src":"4776:2:2","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4747:3:2","nodeType":"YulIdentifier","src":"4747:3:2"},"nativeSrc":"4747:32:2","nodeType":"YulFunctionCall","src":"4747:32:2"},"nativeSrc":"4744:52:2","nodeType":"YulIf","src":"4744:52:2"},{"nativeSrc":"4805:33:2","nodeType":"YulAssignment","src":"4805:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"4828:9:2","nodeType":"YulIdentifier","src":"4828:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"4815:12:2","nodeType":"YulIdentifier","src":"4815:12:2"},"nativeSrc":"4815:23:2","nodeType":"YulFunctionCall","src":"4815:23:2"},"variableNames":[{"name":"value0","nativeSrc":"4805:6:2","nodeType":"YulIdentifier","src":"4805:6:2"}]},{"nativeSrc":"4847:48:2","nodeType":"YulAssignment","src":"4847:48:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4880:9:2","nodeType":"YulIdentifier","src":"4880:9:2"},{"kind":"number","nativeSrc":"4891:2:2","nodeType":"YulLiteral","src":"4891:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4876:3:2","nodeType":"YulIdentifier","src":"4876:3:2"},"nativeSrc":"4876:18:2","nodeType":"YulFunctionCall","src":"4876:18:2"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4857:18:2","nodeType":"YulIdentifier","src":"4857:18:2"},"nativeSrc":"4857:38:2","nodeType":"YulFunctionCall","src":"4857:38:2"},"variableNames":[{"name":"value1","nativeSrc":"4847:6:2","nodeType":"YulIdentifier","src":"4847:6:2"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"4647:254:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4692:9:2","nodeType":"YulTypedName","src":"4692:9:2","type":""},{"name":"dataEnd","nativeSrc":"4703:7:2","nodeType":"YulTypedName","src":"4703:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4715:6:2","nodeType":"YulTypedName","src":"4715:6:2","type":""},{"name":"value1","nativeSrc":"4723:6:2","nodeType":"YulTypedName","src":"4723:6:2","type":""}],"src":"4647:254:2"},{"body":{"nativeSrc":"4976:110:2","nodeType":"YulBlock","src":"4976:110:2","statements":[{"body":{"nativeSrc":"5022:16:2","nodeType":"YulBlock","src":"5022:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5031:1:2","nodeType":"YulLiteral","src":"5031:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5034:1:2","nodeType":"YulLiteral","src":"5034:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5024:6:2","nodeType":"YulIdentifier","src":"5024:6:2"},"nativeSrc":"5024:12:2","nodeType":"YulFunctionCall","src":"5024:12:2"},"nativeSrc":"5024:12:2","nodeType":"YulExpressionStatement","src":"5024:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4997:7:2","nodeType":"YulIdentifier","src":"4997:7:2"},{"name":"headStart","nativeSrc":"5006:9:2","nodeType":"YulIdentifier","src":"5006:9:2"}],"functionName":{"name":"sub","nativeSrc":"4993:3:2","nodeType":"YulIdentifier","src":"4993:3:2"},"nativeSrc":"4993:23:2","nodeType":"YulFunctionCall","src":"4993:23:2"},{"kind":"number","nativeSrc":"5018:2:2","nodeType":"YulLiteral","src":"5018:2:2","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4989:3:2","nodeType":"YulIdentifier","src":"4989:3:2"},"nativeSrc":"4989:32:2","nodeType":"YulFunctionCall","src":"4989:32:2"},"nativeSrc":"4986:52:2","nodeType":"YulIf","src":"4986:52:2"},{"nativeSrc":"5047:33:2","nodeType":"YulAssignment","src":"5047:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"5070:9:2","nodeType":"YulIdentifier","src":"5070:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"5057:12:2","nodeType":"YulIdentifier","src":"5057:12:2"},"nativeSrc":"5057:23:2","nodeType":"YulFunctionCall","src":"5057:23:2"},"variableNames":[{"name":"value0","nativeSrc":"5047:6:2","nodeType":"YulIdentifier","src":"5047:6:2"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"4906:180:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4942:9:2","nodeType":"YulTypedName","src":"4942:9:2","type":""},{"name":"dataEnd","nativeSrc":"4953:7:2","nodeType":"YulTypedName","src":"4953:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4965:6:2","nodeType":"YulTypedName","src":"4965:6:2","type":""}],"src":"4906:180:2"},{"body":{"nativeSrc":"5178:167:2","nodeType":"YulBlock","src":"5178:167:2","statements":[{"body":{"nativeSrc":"5224:16:2","nodeType":"YulBlock","src":"5224:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5233:1:2","nodeType":"YulLiteral","src":"5233:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5236:1:2","nodeType":"YulLiteral","src":"5236:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5226:6:2","nodeType":"YulIdentifier","src":"5226:6:2"},"nativeSrc":"5226:12:2","nodeType":"YulFunctionCall","src":"5226:12:2"},"nativeSrc":"5226:12:2","nodeType":"YulExpressionStatement","src":"5226:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5199:7:2","nodeType":"YulIdentifier","src":"5199:7:2"},{"name":"headStart","nativeSrc":"5208:9:2","nodeType":"YulIdentifier","src":"5208:9:2"}],"functionName":{"name":"sub","nativeSrc":"5195:3:2","nodeType":"YulIdentifier","src":"5195:3:2"},"nativeSrc":"5195:23:2","nodeType":"YulFunctionCall","src":"5195:23:2"},{"kind":"number","nativeSrc":"5220:2:2","nodeType":"YulLiteral","src":"5220:2:2","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5191:3:2","nodeType":"YulIdentifier","src":"5191:3:2"},"nativeSrc":"5191:32:2","nodeType":"YulFunctionCall","src":"5191:32:2"},"nativeSrc":"5188:52:2","nodeType":"YulIf","src":"5188:52:2"},{"nativeSrc":"5249:39:2","nodeType":"YulAssignment","src":"5249:39:2","value":{"arguments":[{"name":"headStart","nativeSrc":"5278:9:2","nodeType":"YulIdentifier","src":"5278:9:2"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5259:18:2","nodeType":"YulIdentifier","src":"5259:18:2"},"nativeSrc":"5259:29:2","nodeType":"YulFunctionCall","src":"5259:29:2"},"variableNames":[{"name":"value0","nativeSrc":"5249:6:2","nodeType":"YulIdentifier","src":"5249:6:2"}]},{"nativeSrc":"5297:42:2","nodeType":"YulAssignment","src":"5297:42:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5324:9:2","nodeType":"YulIdentifier","src":"5324:9:2"},{"kind":"number","nativeSrc":"5335:2:2","nodeType":"YulLiteral","src":"5335:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5320:3:2","nodeType":"YulIdentifier","src":"5320:3:2"},"nativeSrc":"5320:18:2","nodeType":"YulFunctionCall","src":"5320:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"5307:12:2","nodeType":"YulIdentifier","src":"5307:12:2"},"nativeSrc":"5307:32:2","nodeType":"YulFunctionCall","src":"5307:32:2"},"variableNames":[{"name":"value1","nativeSrc":"5297:6:2","nodeType":"YulIdentifier","src":"5297:6:2"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"5091:254:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5136:9:2","nodeType":"YulTypedName","src":"5136:9:2","type":""},{"name":"dataEnd","nativeSrc":"5147:7:2","nodeType":"YulTypedName","src":"5147:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5159:6:2","nodeType":"YulTypedName","src":"5159:6:2","type":""},{"name":"value1","nativeSrc":"5167:6:2","nodeType":"YulTypedName","src":"5167:6:2","type":""}],"src":"5091:254:2"},{"body":{"nativeSrc":"5446:298:2","nodeType":"YulBlock","src":"5446:298:2","statements":[{"body":{"nativeSrc":"5492:16:2","nodeType":"YulBlock","src":"5492:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5501:1:2","nodeType":"YulLiteral","src":"5501:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5504:1:2","nodeType":"YulLiteral","src":"5504:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5494:6:2","nodeType":"YulIdentifier","src":"5494:6:2"},"nativeSrc":"5494:12:2","nodeType":"YulFunctionCall","src":"5494:12:2"},"nativeSrc":"5494:12:2","nodeType":"YulExpressionStatement","src":"5494:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5467:7:2","nodeType":"YulIdentifier","src":"5467:7:2"},{"name":"headStart","nativeSrc":"5476:9:2","nodeType":"YulIdentifier","src":"5476:9:2"}],"functionName":{"name":"sub","nativeSrc":"5463:3:2","nodeType":"YulIdentifier","src":"5463:3:2"},"nativeSrc":"5463:23:2","nodeType":"YulFunctionCall","src":"5463:23:2"},{"kind":"number","nativeSrc":"5488:2:2","nodeType":"YulLiteral","src":"5488:2:2","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5459:3:2","nodeType":"YulIdentifier","src":"5459:3:2"},"nativeSrc":"5459:32:2","nodeType":"YulFunctionCall","src":"5459:32:2"},"nativeSrc":"5456:52:2","nodeType":"YulIf","src":"5456:52:2"},{"nativeSrc":"5517:39:2","nodeType":"YulAssignment","src":"5517:39:2","value":{"arguments":[{"name":"headStart","nativeSrc":"5546:9:2","nodeType":"YulIdentifier","src":"5546:9:2"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5527:18:2","nodeType":"YulIdentifier","src":"5527:18:2"},"nativeSrc":"5527:29:2","nodeType":"YulFunctionCall","src":"5527:29:2"},"variableNames":[{"name":"value0","nativeSrc":"5517:6:2","nodeType":"YulIdentifier","src":"5517:6:2"}]},{"nativeSrc":"5565:46:2","nodeType":"YulVariableDeclaration","src":"5565:46:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5596:9:2","nodeType":"YulIdentifier","src":"5596:9:2"},{"kind":"number","nativeSrc":"5607:2:2","nodeType":"YulLiteral","src":"5607:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5592:3:2","nodeType":"YulIdentifier","src":"5592:3:2"},"nativeSrc":"5592:18:2","nodeType":"YulFunctionCall","src":"5592:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"5579:12:2","nodeType":"YulIdentifier","src":"5579:12:2"},"nativeSrc":"5579:32:2","nodeType":"YulFunctionCall","src":"5579:32:2"},"variables":[{"name":"offset","nativeSrc":"5569:6:2","nodeType":"YulTypedName","src":"5569:6:2","type":""}]},{"body":{"nativeSrc":"5654:16:2","nodeType":"YulBlock","src":"5654:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5663:1:2","nodeType":"YulLiteral","src":"5663:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5666:1:2","nodeType":"YulLiteral","src":"5666:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5656:6:2","nodeType":"YulIdentifier","src":"5656:6:2"},"nativeSrc":"5656:12:2","nodeType":"YulFunctionCall","src":"5656:12:2"},"nativeSrc":"5656:12:2","nodeType":"YulExpressionStatement","src":"5656:12:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5626:6:2","nodeType":"YulIdentifier","src":"5626:6:2"},{"kind":"number","nativeSrc":"5634:18:2","nodeType":"YulLiteral","src":"5634:18:2","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5623:2:2","nodeType":"YulIdentifier","src":"5623:2:2"},"nativeSrc":"5623:30:2","nodeType":"YulFunctionCall","src":"5623:30:2"},"nativeSrc":"5620:50:2","nodeType":"YulIf","src":"5620:50:2"},{"nativeSrc":"5679:59:2","nodeType":"YulAssignment","src":"5679:59:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5710:9:2","nodeType":"YulIdentifier","src":"5710:9:2"},{"name":"offset","nativeSrc":"5721:6:2","nodeType":"YulIdentifier","src":"5721:6:2"}],"functionName":{"name":"add","nativeSrc":"5706:3:2","nodeType":"YulIdentifier","src":"5706:3:2"},"nativeSrc":"5706:22:2","nodeType":"YulFunctionCall","src":"5706:22:2"},{"name":"dataEnd","nativeSrc":"5730:7:2","nodeType":"YulIdentifier","src":"5730:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5689:16:2","nodeType":"YulIdentifier","src":"5689:16:2"},"nativeSrc":"5689:49:2","nodeType":"YulFunctionCall","src":"5689:49:2"},"variableNames":[{"name":"value1","nativeSrc":"5679:6:2","nodeType":"YulIdentifier","src":"5679:6:2"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"5350:394:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5404:9:2","nodeType":"YulTypedName","src":"5404:9:2","type":""},{"name":"dataEnd","nativeSrc":"5415:7:2","nodeType":"YulTypedName","src":"5415:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5427:6:2","nodeType":"YulTypedName","src":"5427:6:2","type":""},{"name":"value1","nativeSrc":"5435:6:2","nodeType":"YulTypedName","src":"5435:6:2","type":""}],"src":"5350:394:2"},{"body":{"nativeSrc":"5836:161:2","nodeType":"YulBlock","src":"5836:161:2","statements":[{"body":{"nativeSrc":"5882:16:2","nodeType":"YulBlock","src":"5882:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5891:1:2","nodeType":"YulLiteral","src":"5891:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5894:1:2","nodeType":"YulLiteral","src":"5894:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5884:6:2","nodeType":"YulIdentifier","src":"5884:6:2"},"nativeSrc":"5884:12:2","nodeType":"YulFunctionCall","src":"5884:12:2"},"nativeSrc":"5884:12:2","nodeType":"YulExpressionStatement","src":"5884:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5857:7:2","nodeType":"YulIdentifier","src":"5857:7:2"},{"name":"headStart","nativeSrc":"5866:9:2","nodeType":"YulIdentifier","src":"5866:9:2"}],"functionName":{"name":"sub","nativeSrc":"5853:3:2","nodeType":"YulIdentifier","src":"5853:3:2"},"nativeSrc":"5853:23:2","nodeType":"YulFunctionCall","src":"5853:23:2"},{"kind":"number","nativeSrc":"5878:2:2","nodeType":"YulLiteral","src":"5878:2:2","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5849:3:2","nodeType":"YulIdentifier","src":"5849:3:2"},"nativeSrc":"5849:32:2","nodeType":"YulFunctionCall","src":"5849:32:2"},"nativeSrc":"5846:52:2","nodeType":"YulIf","src":"5846:52:2"},{"nativeSrc":"5907:33:2","nodeType":"YulAssignment","src":"5907:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"5930:9:2","nodeType":"YulIdentifier","src":"5930:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"5917:12:2","nodeType":"YulIdentifier","src":"5917:12:2"},"nativeSrc":"5917:23:2","nodeType":"YulFunctionCall","src":"5917:23:2"},"variableNames":[{"name":"value0","nativeSrc":"5907:6:2","nodeType":"YulIdentifier","src":"5907:6:2"}]},{"nativeSrc":"5949:42:2","nodeType":"YulAssignment","src":"5949:42:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5976:9:2","nodeType":"YulIdentifier","src":"5976:9:2"},{"kind":"number","nativeSrc":"5987:2:2","nodeType":"YulLiteral","src":"5987:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5972:3:2","nodeType":"YulIdentifier","src":"5972:3:2"},"nativeSrc":"5972:18:2","nodeType":"YulFunctionCall","src":"5972:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"5959:12:2","nodeType":"YulIdentifier","src":"5959:12:2"},"nativeSrc":"5959:32:2","nodeType":"YulFunctionCall","src":"5959:32:2"},"variableNames":[{"name":"value1","nativeSrc":"5949:6:2","nodeType":"YulIdentifier","src":"5949:6:2"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nativeSrc":"5749:248:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5794:9:2","nodeType":"YulTypedName","src":"5794:9:2","type":""},{"name":"dataEnd","nativeSrc":"5805:7:2","nodeType":"YulTypedName","src":"5805:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5817:6:2","nodeType":"YulTypedName","src":"5817:6:2","type":""},{"name":"value1","nativeSrc":"5825:6:2","nodeType":"YulTypedName","src":"5825:6:2","type":""}],"src":"5749:248:2"},{"body":{"nativeSrc":"6163:565:2","nodeType":"YulBlock","src":"6163:565:2","statements":[{"body":{"nativeSrc":"6210:16:2","nodeType":"YulBlock","src":"6210:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6219:1:2","nodeType":"YulLiteral","src":"6219:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"6222:1:2","nodeType":"YulLiteral","src":"6222:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6212:6:2","nodeType":"YulIdentifier","src":"6212:6:2"},"nativeSrc":"6212:12:2","nodeType":"YulFunctionCall","src":"6212:12:2"},"nativeSrc":"6212:12:2","nodeType":"YulExpressionStatement","src":"6212:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6184:7:2","nodeType":"YulIdentifier","src":"6184:7:2"},{"name":"headStart","nativeSrc":"6193:9:2","nodeType":"YulIdentifier","src":"6193:9:2"}],"functionName":{"name":"sub","nativeSrc":"6180:3:2","nodeType":"YulIdentifier","src":"6180:3:2"},"nativeSrc":"6180:23:2","nodeType":"YulFunctionCall","src":"6180:23:2"},{"kind":"number","nativeSrc":"6205:3:2","nodeType":"YulLiteral","src":"6205:3:2","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"6176:3:2","nodeType":"YulIdentifier","src":"6176:3:2"},"nativeSrc":"6176:33:2","nodeType":"YulFunctionCall","src":"6176:33:2"},"nativeSrc":"6173:53:2","nodeType":"YulIf","src":"6173:53:2"},{"nativeSrc":"6235:37:2","nodeType":"YulVariableDeclaration","src":"6235:37:2","value":{"arguments":[{"name":"headStart","nativeSrc":"6262:9:2","nodeType":"YulIdentifier","src":"6262:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"6249:12:2","nodeType":"YulIdentifier","src":"6249:12:2"},"nativeSrc":"6249:23:2","nodeType":"YulFunctionCall","src":"6249:23:2"},"variables":[{"name":"offset","nativeSrc":"6239:6:2","nodeType":"YulTypedName","src":"6239:6:2","type":""}]},{"nativeSrc":"6281:28:2","nodeType":"YulVariableDeclaration","src":"6281:28:2","value":{"kind":"number","nativeSrc":"6291:18:2","nodeType":"YulLiteral","src":"6291:18:2","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"6285:2:2","nodeType":"YulTypedName","src":"6285:2:2","type":""}]},{"body":{"nativeSrc":"6336:16:2","nodeType":"YulBlock","src":"6336:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6345:1:2","nodeType":"YulLiteral","src":"6345:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"6348:1:2","nodeType":"YulLiteral","src":"6348:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6338:6:2","nodeType":"YulIdentifier","src":"6338:6:2"},"nativeSrc":"6338:12:2","nodeType":"YulFunctionCall","src":"6338:12:2"},"nativeSrc":"6338:12:2","nodeType":"YulExpressionStatement","src":"6338:12:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6324:6:2","nodeType":"YulIdentifier","src":"6324:6:2"},{"name":"_1","nativeSrc":"6332:2:2","nodeType":"YulIdentifier","src":"6332:2:2"}],"functionName":{"name":"gt","nativeSrc":"6321:2:2","nodeType":"YulIdentifier","src":"6321:2:2"},"nativeSrc":"6321:14:2","nodeType":"YulFunctionCall","src":"6321:14:2"},"nativeSrc":"6318:34:2","nodeType":"YulIf","src":"6318:34:2"},{"nativeSrc":"6361:59:2","nodeType":"YulAssignment","src":"6361:59:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6392:9:2","nodeType":"YulIdentifier","src":"6392:9:2"},{"name":"offset","nativeSrc":"6403:6:2","nodeType":"YulIdentifier","src":"6403:6:2"}],"functionName":{"name":"add","nativeSrc":"6388:3:2","nodeType":"YulIdentifier","src":"6388:3:2"},"nativeSrc":"6388:22:2","nodeType":"YulFunctionCall","src":"6388:22:2"},{"name":"dataEnd","nativeSrc":"6412:7:2","nodeType":"YulIdentifier","src":"6412:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"6371:16:2","nodeType":"YulIdentifier","src":"6371:16:2"},"nativeSrc":"6371:49:2","nodeType":"YulFunctionCall","src":"6371:49:2"},"variableNames":[{"name":"value0","nativeSrc":"6361:6:2","nodeType":"YulIdentifier","src":"6361:6:2"}]},{"nativeSrc":"6429:48:2","nodeType":"YulVariableDeclaration","src":"6429:48:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6462:9:2","nodeType":"YulIdentifier","src":"6462:9:2"},{"kind":"number","nativeSrc":"6473:2:2","nodeType":"YulLiteral","src":"6473:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6458:3:2","nodeType":"YulIdentifier","src":"6458:3:2"},"nativeSrc":"6458:18:2","nodeType":"YulFunctionCall","src":"6458:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"6445:12:2","nodeType":"YulIdentifier","src":"6445:12:2"},"nativeSrc":"6445:32:2","nodeType":"YulFunctionCall","src":"6445:32:2"},"variables":[{"name":"offset_1","nativeSrc":"6433:8:2","nodeType":"YulTypedName","src":"6433:8:2","type":""}]},{"body":{"nativeSrc":"6506:16:2","nodeType":"YulBlock","src":"6506:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6515:1:2","nodeType":"YulLiteral","src":"6515:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"6518:1:2","nodeType":"YulLiteral","src":"6518:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6508:6:2","nodeType":"YulIdentifier","src":"6508:6:2"},"nativeSrc":"6508:12:2","nodeType":"YulFunctionCall","src":"6508:12:2"},"nativeSrc":"6508:12:2","nodeType":"YulExpressionStatement","src":"6508:12:2"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"6492:8:2","nodeType":"YulIdentifier","src":"6492:8:2"},{"name":"_1","nativeSrc":"6502:2:2","nodeType":"YulIdentifier","src":"6502:2:2"}],"functionName":{"name":"gt","nativeSrc":"6489:2:2","nodeType":"YulIdentifier","src":"6489:2:2"},"nativeSrc":"6489:16:2","nodeType":"YulFunctionCall","src":"6489:16:2"},"nativeSrc":"6486:36:2","nodeType":"YulIf","src":"6486:36:2"},{"nativeSrc":"6531:61:2","nodeType":"YulAssignment","src":"6531:61:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6562:9:2","nodeType":"YulIdentifier","src":"6562:9:2"},{"name":"offset_1","nativeSrc":"6573:8:2","nodeType":"YulIdentifier","src":"6573:8:2"}],"functionName":{"name":"add","nativeSrc":"6558:3:2","nodeType":"YulIdentifier","src":"6558:3:2"},"nativeSrc":"6558:24:2","nodeType":"YulFunctionCall","src":"6558:24:2"},{"name":"dataEnd","nativeSrc":"6584:7:2","nodeType":"YulIdentifier","src":"6584:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"6541:16:2","nodeType":"YulIdentifier","src":"6541:16:2"},"nativeSrc":"6541:51:2","nodeType":"YulFunctionCall","src":"6541:51:2"},"variableNames":[{"name":"value1","nativeSrc":"6531:6:2","nodeType":"YulIdentifier","src":"6531:6:2"}]},{"nativeSrc":"6601:63:2","nodeType":"YulAssignment","src":"6601:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6640:9:2","nodeType":"YulIdentifier","src":"6640:9:2"},{"kind":"number","nativeSrc":"6651:2:2","nodeType":"YulLiteral","src":"6651:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6636:3:2","nodeType":"YulIdentifier","src":"6636:3:2"},"nativeSrc":"6636:18:2","nodeType":"YulFunctionCall","src":"6636:18:2"},{"name":"dataEnd","nativeSrc":"6656:7:2","nodeType":"YulIdentifier","src":"6656:7:2"}],"functionName":{"name":"abi_decode_struct_Values","nativeSrc":"6611:24:2","nodeType":"YulIdentifier","src":"6611:24:2"},"nativeSrc":"6611:53:2","nodeType":"YulFunctionCall","src":"6611:53:2"},"variableNames":[{"name":"value2","nativeSrc":"6601:6:2","nodeType":"YulIdentifier","src":"6601:6:2"}]},{"nativeSrc":"6673:49:2","nodeType":"YulAssignment","src":"6673:49:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6706:9:2","nodeType":"YulIdentifier","src":"6706:9:2"},{"kind":"number","nativeSrc":"6717:3:2","nodeType":"YulLiteral","src":"6717:3:2","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"6702:3:2","nodeType":"YulIdentifier","src":"6702:3:2"},"nativeSrc":"6702:19:2","nodeType":"YulFunctionCall","src":"6702:19:2"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6683:18:2","nodeType":"YulIdentifier","src":"6683:18:2"},"nativeSrc":"6683:39:2","nodeType":"YulFunctionCall","src":"6683:39:2"},"variableNames":[{"name":"value3","nativeSrc":"6673:6:2","nodeType":"YulIdentifier","src":"6673:6:2"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptrt_address","nativeSrc":"6002:726:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6105:9:2","nodeType":"YulTypedName","src":"6105:9:2","type":""},{"name":"dataEnd","nativeSrc":"6116:7:2","nodeType":"YulTypedName","src":"6116:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6128:6:2","nodeType":"YulTypedName","src":"6128:6:2","type":""},{"name":"value1","nativeSrc":"6136:6:2","nodeType":"YulTypedName","src":"6136:6:2","type":""},{"name":"value2","nativeSrc":"6144:6:2","nodeType":"YulTypedName","src":"6144:6:2","type":""},{"name":"value3","nativeSrc":"6152:6:2","nodeType":"YulTypedName","src":"6152:6:2","type":""}],"src":"6002:726:2"},{"body":{"nativeSrc":"6911:616:2","nodeType":"YulBlock","src":"6911:616:2","statements":[{"body":{"nativeSrc":"6958:16:2","nodeType":"YulBlock","src":"6958:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6967:1:2","nodeType":"YulLiteral","src":"6967:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"6970:1:2","nodeType":"YulLiteral","src":"6970:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6960:6:2","nodeType":"YulIdentifier","src":"6960:6:2"},"nativeSrc":"6960:12:2","nodeType":"YulFunctionCall","src":"6960:12:2"},"nativeSrc":"6960:12:2","nodeType":"YulExpressionStatement","src":"6960:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6932:7:2","nodeType":"YulIdentifier","src":"6932:7:2"},{"name":"headStart","nativeSrc":"6941:9:2","nodeType":"YulIdentifier","src":"6941:9:2"}],"functionName":{"name":"sub","nativeSrc":"6928:3:2","nodeType":"YulIdentifier","src":"6928:3:2"},"nativeSrc":"6928:23:2","nodeType":"YulFunctionCall","src":"6928:23:2"},{"kind":"number","nativeSrc":"6953:3:2","nodeType":"YulLiteral","src":"6953:3:2","type":"","value":"192"}],"functionName":{"name":"slt","nativeSrc":"6924:3:2","nodeType":"YulIdentifier","src":"6924:3:2"},"nativeSrc":"6924:33:2","nodeType":"YulFunctionCall","src":"6924:33:2"},"nativeSrc":"6921:53:2","nodeType":"YulIf","src":"6921:53:2"},{"nativeSrc":"6983:33:2","nodeType":"YulAssignment","src":"6983:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"7006:9:2","nodeType":"YulIdentifier","src":"7006:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"6993:12:2","nodeType":"YulIdentifier","src":"6993:12:2"},"nativeSrc":"6993:23:2","nodeType":"YulFunctionCall","src":"6993:23:2"},"variableNames":[{"name":"value0","nativeSrc":"6983:6:2","nodeType":"YulIdentifier","src":"6983:6:2"}]},{"nativeSrc":"7025:46:2","nodeType":"YulVariableDeclaration","src":"7025:46:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7056:9:2","nodeType":"YulIdentifier","src":"7056:9:2"},{"kind":"number","nativeSrc":"7067:2:2","nodeType":"YulLiteral","src":"7067:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7052:3:2","nodeType":"YulIdentifier","src":"7052:3:2"},"nativeSrc":"7052:18:2","nodeType":"YulFunctionCall","src":"7052:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"7039:12:2","nodeType":"YulIdentifier","src":"7039:12:2"},"nativeSrc":"7039:32:2","nodeType":"YulFunctionCall","src":"7039:32:2"},"variables":[{"name":"offset","nativeSrc":"7029:6:2","nodeType":"YulTypedName","src":"7029:6:2","type":""}]},{"nativeSrc":"7080:28:2","nodeType":"YulVariableDeclaration","src":"7080:28:2","value":{"kind":"number","nativeSrc":"7090:18:2","nodeType":"YulLiteral","src":"7090:18:2","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"7084:2:2","nodeType":"YulTypedName","src":"7084:2:2","type":""}]},{"body":{"nativeSrc":"7135:16:2","nodeType":"YulBlock","src":"7135:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7144:1:2","nodeType":"YulLiteral","src":"7144:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"7147:1:2","nodeType":"YulLiteral","src":"7147:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7137:6:2","nodeType":"YulIdentifier","src":"7137:6:2"},"nativeSrc":"7137:12:2","nodeType":"YulFunctionCall","src":"7137:12:2"},"nativeSrc":"7137:12:2","nodeType":"YulExpressionStatement","src":"7137:12:2"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7123:6:2","nodeType":"YulIdentifier","src":"7123:6:2"},{"name":"_1","nativeSrc":"7131:2:2","nodeType":"YulIdentifier","src":"7131:2:2"}],"functionName":{"name":"gt","nativeSrc":"7120:2:2","nodeType":"YulIdentifier","src":"7120:2:2"},"nativeSrc":"7120:14:2","nodeType":"YulFunctionCall","src":"7120:14:2"},"nativeSrc":"7117:34:2","nodeType":"YulIf","src":"7117:34:2"},{"nativeSrc":"7160:59:2","nodeType":"YulAssignment","src":"7160:59:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7191:9:2","nodeType":"YulIdentifier","src":"7191:9:2"},{"name":"offset","nativeSrc":"7202:6:2","nodeType":"YulIdentifier","src":"7202:6:2"}],"functionName":{"name":"add","nativeSrc":"7187:3:2","nodeType":"YulIdentifier","src":"7187:3:2"},"nativeSrc":"7187:22:2","nodeType":"YulFunctionCall","src":"7187:22:2"},{"name":"dataEnd","nativeSrc":"7211:7:2","nodeType":"YulIdentifier","src":"7211:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7170:16:2","nodeType":"YulIdentifier","src":"7170:16:2"},"nativeSrc":"7170:49:2","nodeType":"YulFunctionCall","src":"7170:49:2"},"variableNames":[{"name":"value1","nativeSrc":"7160:6:2","nodeType":"YulIdentifier","src":"7160:6:2"}]},{"nativeSrc":"7228:48:2","nodeType":"YulVariableDeclaration","src":"7228:48:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7261:9:2","nodeType":"YulIdentifier","src":"7261:9:2"},{"kind":"number","nativeSrc":"7272:2:2","nodeType":"YulLiteral","src":"7272:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7257:3:2","nodeType":"YulIdentifier","src":"7257:3:2"},"nativeSrc":"7257:18:2","nodeType":"YulFunctionCall","src":"7257:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"7244:12:2","nodeType":"YulIdentifier","src":"7244:12:2"},"nativeSrc":"7244:32:2","nodeType":"YulFunctionCall","src":"7244:32:2"},"variables":[{"name":"offset_1","nativeSrc":"7232:8:2","nodeType":"YulTypedName","src":"7232:8:2","type":""}]},{"body":{"nativeSrc":"7305:16:2","nodeType":"YulBlock","src":"7305:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7314:1:2","nodeType":"YulLiteral","src":"7314:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"7317:1:2","nodeType":"YulLiteral","src":"7317:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7307:6:2","nodeType":"YulIdentifier","src":"7307:6:2"},"nativeSrc":"7307:12:2","nodeType":"YulFunctionCall","src":"7307:12:2"},"nativeSrc":"7307:12:2","nodeType":"YulExpressionStatement","src":"7307:12:2"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"7291:8:2","nodeType":"YulIdentifier","src":"7291:8:2"},{"name":"_1","nativeSrc":"7301:2:2","nodeType":"YulIdentifier","src":"7301:2:2"}],"functionName":{"name":"gt","nativeSrc":"7288:2:2","nodeType":"YulIdentifier","src":"7288:2:2"},"nativeSrc":"7288:16:2","nodeType":"YulFunctionCall","src":"7288:16:2"},"nativeSrc":"7285:36:2","nodeType":"YulIf","src":"7285:36:2"},{"nativeSrc":"7330:61:2","nodeType":"YulAssignment","src":"7330:61:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7361:9:2","nodeType":"YulIdentifier","src":"7361:9:2"},{"name":"offset_1","nativeSrc":"7372:8:2","nodeType":"YulIdentifier","src":"7372:8:2"}],"functionName":{"name":"add","nativeSrc":"7357:3:2","nodeType":"YulIdentifier","src":"7357:3:2"},"nativeSrc":"7357:24:2","nodeType":"YulFunctionCall","src":"7357:24:2"},{"name":"dataEnd","nativeSrc":"7383:7:2","nodeType":"YulIdentifier","src":"7383:7:2"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7340:16:2","nodeType":"YulIdentifier","src":"7340:16:2"},"nativeSrc":"7340:51:2","nodeType":"YulFunctionCall","src":"7340:51:2"},"variableNames":[{"name":"value2","nativeSrc":"7330:6:2","nodeType":"YulIdentifier","src":"7330:6:2"}]},{"nativeSrc":"7400:63:2","nodeType":"YulAssignment","src":"7400:63:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7439:9:2","nodeType":"YulIdentifier","src":"7439:9:2"},{"kind":"number","nativeSrc":"7450:2:2","nodeType":"YulLiteral","src":"7450:2:2","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7435:3:2","nodeType":"YulIdentifier","src":"7435:3:2"},"nativeSrc":"7435:18:2","nodeType":"YulFunctionCall","src":"7435:18:2"},{"name":"dataEnd","nativeSrc":"7455:7:2","nodeType":"YulIdentifier","src":"7455:7:2"}],"functionName":{"name":"abi_decode_struct_Values","nativeSrc":"7410:24:2","nodeType":"YulIdentifier","src":"7410:24:2"},"nativeSrc":"7410:53:2","nodeType":"YulFunctionCall","src":"7410:53:2"},"variableNames":[{"name":"value3","nativeSrc":"7400:6:2","nodeType":"YulIdentifier","src":"7400:6:2"}]},{"nativeSrc":"7472:49:2","nodeType":"YulAssignment","src":"7472:49:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7505:9:2","nodeType":"YulIdentifier","src":"7505:9:2"},{"kind":"number","nativeSrc":"7516:3:2","nodeType":"YulLiteral","src":"7516:3:2","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"7501:3:2","nodeType":"YulIdentifier","src":"7501:3:2"},"nativeSrc":"7501:19:2","nodeType":"YulFunctionCall","src":"7501:19:2"}],"functionName":{"name":"abi_decode_address","nativeSrc":"7482:18:2","nodeType":"YulIdentifier","src":"7482:18:2"},"nativeSrc":"7482:39:2","nodeType":"YulFunctionCall","src":"7482:39:2"},"variableNames":[{"name":"value4","nativeSrc":"7472:6:2","nodeType":"YulIdentifier","src":"7472:6:2"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptrt_address","nativeSrc":"6733:794:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6845:9:2","nodeType":"YulTypedName","src":"6845:9:2","type":""},{"name":"dataEnd","nativeSrc":"6856:7:2","nodeType":"YulTypedName","src":"6856:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6868:6:2","nodeType":"YulTypedName","src":"6868:6:2","type":""},{"name":"value1","nativeSrc":"6876:6:2","nodeType":"YulTypedName","src":"6876:6:2","type":""},{"name":"value2","nativeSrc":"6884:6:2","nodeType":"YulTypedName","src":"6884:6:2","type":""},{"name":"value3","nativeSrc":"6892:6:2","nodeType":"YulTypedName","src":"6892:6:2","type":""},{"name":"value4","nativeSrc":"6900:6:2","nodeType":"YulTypedName","src":"6900:6:2","type":""}],"src":"6733:794:2"},{"body":{"nativeSrc":"7636:218:2","nodeType":"YulBlock","src":"7636:218:2","statements":[{"body":{"nativeSrc":"7682:16:2","nodeType":"YulBlock","src":"7682:16:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7691:1:2","nodeType":"YulLiteral","src":"7691:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"7694:1:2","nodeType":"YulLiteral","src":"7694:1:2","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7684:6:2","nodeType":"YulIdentifier","src":"7684:6:2"},"nativeSrc":"7684:12:2","nodeType":"YulFunctionCall","src":"7684:12:2"},"nativeSrc":"7684:12:2","nodeType":"YulExpressionStatement","src":"7684:12:2"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7657:7:2","nodeType":"YulIdentifier","src":"7657:7:2"},{"name":"headStart","nativeSrc":"7666:9:2","nodeType":"YulIdentifier","src":"7666:9:2"}],"functionName":{"name":"sub","nativeSrc":"7653:3:2","nodeType":"YulIdentifier","src":"7653:3:2"},"nativeSrc":"7653:23:2","nodeType":"YulFunctionCall","src":"7653:23:2"},{"kind":"number","nativeSrc":"7678:2:2","nodeType":"YulLiteral","src":"7678:2:2","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"7649:3:2","nodeType":"YulIdentifier","src":"7649:3:2"},"nativeSrc":"7649:32:2","nodeType":"YulFunctionCall","src":"7649:32:2"},"nativeSrc":"7646:52:2","nodeType":"YulIf","src":"7646:52:2"},{"nativeSrc":"7707:33:2","nodeType":"YulAssignment","src":"7707:33:2","value":{"arguments":[{"name":"headStart","nativeSrc":"7730:9:2","nodeType":"YulIdentifier","src":"7730:9:2"}],"functionName":{"name":"calldataload","nativeSrc":"7717:12:2","nodeType":"YulIdentifier","src":"7717:12:2"},"nativeSrc":"7717:23:2","nodeType":"YulFunctionCall","src":"7717:23:2"},"variableNames":[{"name":"value0","nativeSrc":"7707:6:2","nodeType":"YulIdentifier","src":"7707:6:2"}]},{"nativeSrc":"7749:42:2","nodeType":"YulAssignment","src":"7749:42:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7776:9:2","nodeType":"YulIdentifier","src":"7776:9:2"},{"kind":"number","nativeSrc":"7787:2:2","nodeType":"YulLiteral","src":"7787:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7772:3:2","nodeType":"YulIdentifier","src":"7772:3:2"},"nativeSrc":"7772:18:2","nodeType":"YulFunctionCall","src":"7772:18:2"}],"functionName":{"name":"calldataload","nativeSrc":"7759:12:2","nodeType":"YulIdentifier","src":"7759:12:2"},"nativeSrc":"7759:32:2","nodeType":"YulFunctionCall","src":"7759:32:2"},"variableNames":[{"name":"value1","nativeSrc":"7749:6:2","nodeType":"YulIdentifier","src":"7749:6:2"}]},{"nativeSrc":"7800:48:2","nodeType":"YulAssignment","src":"7800:48:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7833:9:2","nodeType":"YulIdentifier","src":"7833:9:2"},{"kind":"number","nativeSrc":"7844:2:2","nodeType":"YulLiteral","src":"7844:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7829:3:2","nodeType":"YulIdentifier","src":"7829:3:2"},"nativeSrc":"7829:18:2","nodeType":"YulFunctionCall","src":"7829:18:2"}],"functionName":{"name":"abi_decode_address","nativeSrc":"7810:18:2","nodeType":"YulIdentifier","src":"7810:18:2"},"nativeSrc":"7810:38:2","nodeType":"YulFunctionCall","src":"7810:38:2"},"variableNames":[{"name":"value2","nativeSrc":"7800:6:2","nodeType":"YulIdentifier","src":"7800:6:2"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32t_address","nativeSrc":"7532:322:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7586:9:2","nodeType":"YulTypedName","src":"7586:9:2","type":""},{"name":"dataEnd","nativeSrc":"7597:7:2","nodeType":"YulTypedName","src":"7597:7:2","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7609:6:2","nodeType":"YulTypedName","src":"7609:6:2","type":""},{"name":"value1","nativeSrc":"7617:6:2","nodeType":"YulTypedName","src":"7617:6:2","type":""},{"name":"value2","nativeSrc":"7625:6:2","nodeType":"YulTypedName","src":"7625:6:2","type":""}],"src":"7532:322:2"},{"body":{"nativeSrc":"7925:184:2","nodeType":"YulBlock","src":"7925:184:2","statements":[{"nativeSrc":"7935:10:2","nodeType":"YulVariableDeclaration","src":"7935:10:2","value":{"kind":"number","nativeSrc":"7944:1:2","nodeType":"YulLiteral","src":"7944:1:2","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7939:1:2","nodeType":"YulTypedName","src":"7939:1:2","type":""}]},{"body":{"nativeSrc":"8004:63:2","nodeType":"YulBlock","src":"8004:63:2","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"8029:3:2","nodeType":"YulIdentifier","src":"8029:3:2"},{"name":"i","nativeSrc":"8034:1:2","nodeType":"YulIdentifier","src":"8034:1:2"}],"functionName":{"name":"add","nativeSrc":"8025:3:2","nodeType":"YulIdentifier","src":"8025:3:2"},"nativeSrc":"8025:11:2","nodeType":"YulFunctionCall","src":"8025:11:2"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"8048:3:2","nodeType":"YulIdentifier","src":"8048:3:2"},{"name":"i","nativeSrc":"8053:1:2","nodeType":"YulIdentifier","src":"8053:1:2"}],"functionName":{"name":"add","nativeSrc":"8044:3:2","nodeType":"YulIdentifier","src":"8044:3:2"},"nativeSrc":"8044:11:2","nodeType":"YulFunctionCall","src":"8044:11:2"}],"functionName":{"name":"mload","nativeSrc":"8038:5:2","nodeType":"YulIdentifier","src":"8038:5:2"},"nativeSrc":"8038:18:2","nodeType":"YulFunctionCall","src":"8038:18:2"}],"functionName":{"name":"mstore","nativeSrc":"8018:6:2","nodeType":"YulIdentifier","src":"8018:6:2"},"nativeSrc":"8018:39:2","nodeType":"YulFunctionCall","src":"8018:39:2"},"nativeSrc":"8018:39:2","nodeType":"YulExpressionStatement","src":"8018:39:2"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7965:1:2","nodeType":"YulIdentifier","src":"7965:1:2"},{"name":"length","nativeSrc":"7968:6:2","nodeType":"YulIdentifier","src":"7968:6:2"}],"functionName":{"name":"lt","nativeSrc":"7962:2:2","nodeType":"YulIdentifier","src":"7962:2:2"},"nativeSrc":"7962:13:2","nodeType":"YulFunctionCall","src":"7962:13:2"},"nativeSrc":"7954:113:2","nodeType":"YulForLoop","post":{"nativeSrc":"7976:19:2","nodeType":"YulBlock","src":"7976:19:2","statements":[{"nativeSrc":"7978:15:2","nodeType":"YulAssignment","src":"7978:15:2","value":{"arguments":[{"name":"i","nativeSrc":"7987:1:2","nodeType":"YulIdentifier","src":"7987:1:2"},{"kind":"number","nativeSrc":"7990:2:2","nodeType":"YulLiteral","src":"7990:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7983:3:2","nodeType":"YulIdentifier","src":"7983:3:2"},"nativeSrc":"7983:10:2","nodeType":"YulFunctionCall","src":"7983:10:2"},"variableNames":[{"name":"i","nativeSrc":"7978:1:2","nodeType":"YulIdentifier","src":"7978:1:2"}]}]},"pre":{"nativeSrc":"7958:3:2","nodeType":"YulBlock","src":"7958:3:2","statements":[]},"src":"7954:113:2"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"8087:3:2","nodeType":"YulIdentifier","src":"8087:3:2"},{"name":"length","nativeSrc":"8092:6:2","nodeType":"YulIdentifier","src":"8092:6:2"}],"functionName":{"name":"add","nativeSrc":"8083:3:2","nodeType":"YulIdentifier","src":"8083:3:2"},"nativeSrc":"8083:16:2","nodeType":"YulFunctionCall","src":"8083:16:2"},{"kind":"number","nativeSrc":"8101:1:2","nodeType":"YulLiteral","src":"8101:1:2","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"8076:6:2","nodeType":"YulIdentifier","src":"8076:6:2"},"nativeSrc":"8076:27:2","nodeType":"YulFunctionCall","src":"8076:27:2"},"nativeSrc":"8076:27:2","nodeType":"YulExpressionStatement","src":"8076:27:2"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"7859:250:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"7903:3:2","nodeType":"YulTypedName","src":"7903:3:2","type":""},{"name":"dst","nativeSrc":"7908:3:2","nodeType":"YulTypedName","src":"7908:3:2","type":""},{"name":"length","nativeSrc":"7913:6:2","nodeType":"YulTypedName","src":"7913:6:2","type":""}],"src":"7859:250:2"},{"body":{"nativeSrc":"8251:150:2","nodeType":"YulBlock","src":"8251:150:2","statements":[{"nativeSrc":"8261:27:2","nodeType":"YulVariableDeclaration","src":"8261:27:2","value":{"arguments":[{"name":"value0","nativeSrc":"8281:6:2","nodeType":"YulIdentifier","src":"8281:6:2"}],"functionName":{"name":"mload","nativeSrc":"8275:5:2","nodeType":"YulIdentifier","src":"8275:5:2"},"nativeSrc":"8275:13:2","nodeType":"YulFunctionCall","src":"8275:13:2"},"variables":[{"name":"length","nativeSrc":"8265:6:2","nodeType":"YulTypedName","src":"8265:6:2","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"8336:6:2","nodeType":"YulIdentifier","src":"8336:6:2"},{"kind":"number","nativeSrc":"8344:4:2","nodeType":"YulLiteral","src":"8344:4:2","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8332:3:2","nodeType":"YulIdentifier","src":"8332:3:2"},"nativeSrc":"8332:17:2","nodeType":"YulFunctionCall","src":"8332:17:2"},{"name":"pos","nativeSrc":"8351:3:2","nodeType":"YulIdentifier","src":"8351:3:2"},{"name":"length","nativeSrc":"8356:6:2","nodeType":"YulIdentifier","src":"8356:6:2"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"8297:34:2","nodeType":"YulIdentifier","src":"8297:34:2"},"nativeSrc":"8297:66:2","nodeType":"YulFunctionCall","src":"8297:66:2"},"nativeSrc":"8297:66:2","nodeType":"YulExpressionStatement","src":"8297:66:2"},{"nativeSrc":"8372:23:2","nodeType":"YulAssignment","src":"8372:23:2","value":{"arguments":[{"name":"pos","nativeSrc":"8383:3:2","nodeType":"YulIdentifier","src":"8383:3:2"},{"name":"length","nativeSrc":"8388:6:2","nodeType":"YulIdentifier","src":"8388:6:2"}],"functionName":{"name":"add","nativeSrc":"8379:3:2","nodeType":"YulIdentifier","src":"8379:3:2"},"nativeSrc":"8379:16:2","nodeType":"YulFunctionCall","src":"8379:16:2"},"variableNames":[{"name":"end","nativeSrc":"8372:3:2","nodeType":"YulIdentifier","src":"8372:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"8114:287:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8227:3:2","nodeType":"YulTypedName","src":"8227:3:2","type":""},{"name":"value0","nativeSrc":"8232:6:2","nodeType":"YulTypedName","src":"8232:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8243:3:2","nodeType":"YulTypedName","src":"8243:3:2","type":""}],"src":"8114:287:2"},{"body":{"nativeSrc":"8454:289:2","nodeType":"YulBlock","src":"8454:289:2","statements":[{"nativeSrc":"8464:28:2","nodeType":"YulVariableDeclaration","src":"8464:28:2","value":{"kind":"number","nativeSrc":"8474:18:2","nodeType":"YulLiteral","src":"8474:18:2","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"8468:2:2","nodeType":"YulTypedName","src":"8468:2:2","type":""}]},{"nativeSrc":"8501:35:2","nodeType":"YulAssignment","src":"8501:35:2","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"8517:1:2","nodeType":"YulIdentifier","src":"8517:1:2"},{"name":"_1","nativeSrc":"8520:2:2","nodeType":"YulIdentifier","src":"8520:2:2"}],"functionName":{"name":"and","nativeSrc":"8513:3:2","nodeType":"YulIdentifier","src":"8513:3:2"},"nativeSrc":"8513:10:2","nodeType":"YulFunctionCall","src":"8513:10:2"},{"arguments":[{"name":"y","nativeSrc":"8529:1:2","nodeType":"YulIdentifier","src":"8529:1:2"},{"name":"_1","nativeSrc":"8532:2:2","nodeType":"YulIdentifier","src":"8532:2:2"}],"functionName":{"name":"and","nativeSrc":"8525:3:2","nodeType":"YulIdentifier","src":"8525:3:2"},"nativeSrc":"8525:10:2","nodeType":"YulFunctionCall","src":"8525:10:2"}],"functionName":{"name":"sub","nativeSrc":"8509:3:2","nodeType":"YulIdentifier","src":"8509:3:2"},"nativeSrc":"8509:27:2","nodeType":"YulFunctionCall","src":"8509:27:2"},"variableNames":[{"name":"diff","nativeSrc":"8501:4:2","nodeType":"YulIdentifier","src":"8501:4:2"}]},{"body":{"nativeSrc":"8569:168:2","nodeType":"YulBlock","src":"8569:168:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8590:1:2","nodeType":"YulLiteral","src":"8590:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"8593:77:2","nodeType":"YulLiteral","src":"8593:77:2","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"8583:6:2","nodeType":"YulIdentifier","src":"8583:6:2"},"nativeSrc":"8583:88:2","nodeType":"YulFunctionCall","src":"8583:88:2"},"nativeSrc":"8583:88:2","nodeType":"YulExpressionStatement","src":"8583:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8691:1:2","nodeType":"YulLiteral","src":"8691:1:2","type":"","value":"4"},{"kind":"number","nativeSrc":"8694:4:2","nodeType":"YulLiteral","src":"8694:4:2","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"8684:6:2","nodeType":"YulIdentifier","src":"8684:6:2"},"nativeSrc":"8684:15:2","nodeType":"YulFunctionCall","src":"8684:15:2"},"nativeSrc":"8684:15:2","nodeType":"YulExpressionStatement","src":"8684:15:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8719:1:2","nodeType":"YulLiteral","src":"8719:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"8722:4:2","nodeType":"YulLiteral","src":"8722:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8712:6:2","nodeType":"YulIdentifier","src":"8712:6:2"},"nativeSrc":"8712:15:2","nodeType":"YulFunctionCall","src":"8712:15:2"},"nativeSrc":"8712:15:2","nodeType":"YulExpressionStatement","src":"8712:15:2"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"8551:4:2","nodeType":"YulIdentifier","src":"8551:4:2"},{"name":"_1","nativeSrc":"8557:2:2","nodeType":"YulIdentifier","src":"8557:2:2"}],"functionName":{"name":"gt","nativeSrc":"8548:2:2","nodeType":"YulIdentifier","src":"8548:2:2"},"nativeSrc":"8548:12:2","nodeType":"YulFunctionCall","src":"8548:12:2"},"nativeSrc":"8545:192:2","nodeType":"YulIf","src":"8545:192:2"}]},"name":"checked_sub_t_uint64","nativeSrc":"8406:337:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"8436:1:2","nodeType":"YulTypedName","src":"8436:1:2","type":""},{"name":"y","nativeSrc":"8439:1:2","nodeType":"YulTypedName","src":"8439:1:2","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"8445:4:2","nodeType":"YulTypedName","src":"8445:4:2","type":""}],"src":"8406:337:2"},{"body":{"nativeSrc":"8945:366:2","nodeType":"YulBlock","src":"8945:366:2","statements":[{"nativeSrc":"8955:76:2","nodeType":"YulVariableDeclaration","src":"8955:76:2","value":{"kind":"number","nativeSrc":"8965:66:2","nodeType":"YulLiteral","src":"8965:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"8959:2:2","nodeType":"YulTypedName","src":"8959:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"9047:3:2","nodeType":"YulIdentifier","src":"9047:3:2"},{"arguments":[{"name":"value0","nativeSrc":"9056:6:2","nodeType":"YulIdentifier","src":"9056:6:2"},{"name":"_1","nativeSrc":"9064:2:2","nodeType":"YulIdentifier","src":"9064:2:2"}],"functionName":{"name":"and","nativeSrc":"9052:3:2","nodeType":"YulIdentifier","src":"9052:3:2"},"nativeSrc":"9052:15:2","nodeType":"YulFunctionCall","src":"9052:15:2"}],"functionName":{"name":"mstore","nativeSrc":"9040:6:2","nodeType":"YulIdentifier","src":"9040:6:2"},"nativeSrc":"9040:28:2","nodeType":"YulFunctionCall","src":"9040:28:2"},"nativeSrc":"9040:28:2","nodeType":"YulExpressionStatement","src":"9040:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"9088:3:2","nodeType":"YulIdentifier","src":"9088:3:2"},{"kind":"number","nativeSrc":"9093:1:2","nodeType":"YulLiteral","src":"9093:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9084:3:2","nodeType":"YulIdentifier","src":"9084:3:2"},"nativeSrc":"9084:11:2","nodeType":"YulFunctionCall","src":"9084:11:2"},{"arguments":[{"name":"value1","nativeSrc":"9101:6:2","nodeType":"YulIdentifier","src":"9101:6:2"},{"name":"_1","nativeSrc":"9109:2:2","nodeType":"YulIdentifier","src":"9109:2:2"}],"functionName":{"name":"and","nativeSrc":"9097:3:2","nodeType":"YulIdentifier","src":"9097:3:2"},"nativeSrc":"9097:15:2","nodeType":"YulFunctionCall","src":"9097:15:2"}],"functionName":{"name":"mstore","nativeSrc":"9077:6:2","nodeType":"YulIdentifier","src":"9077:6:2"},"nativeSrc":"9077:36:2","nodeType":"YulFunctionCall","src":"9077:36:2"},"nativeSrc":"9077:36:2","nodeType":"YulExpressionStatement","src":"9077:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"9133:3:2","nodeType":"YulIdentifier","src":"9133:3:2"},{"kind":"number","nativeSrc":"9138:1:2","nodeType":"YulLiteral","src":"9138:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"9129:3:2","nodeType":"YulIdentifier","src":"9129:3:2"},"nativeSrc":"9129:11:2","nodeType":"YulFunctionCall","src":"9129:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9150:2:2","nodeType":"YulLiteral","src":"9150:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"9154:6:2","nodeType":"YulIdentifier","src":"9154:6:2"}],"functionName":{"name":"shl","nativeSrc":"9146:3:2","nodeType":"YulIdentifier","src":"9146:3:2"},"nativeSrc":"9146:15:2","nodeType":"YulFunctionCall","src":"9146:15:2"},{"kind":"number","nativeSrc":"9163:66:2","nodeType":"YulLiteral","src":"9163:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"9142:3:2","nodeType":"YulIdentifier","src":"9142:3:2"},"nativeSrc":"9142:88:2","nodeType":"YulFunctionCall","src":"9142:88:2"}],"functionName":{"name":"mstore","nativeSrc":"9122:6:2","nodeType":"YulIdentifier","src":"9122:6:2"},"nativeSrc":"9122:109:2","nodeType":"YulFunctionCall","src":"9122:109:2"},"nativeSrc":"9122:109:2","nodeType":"YulExpressionStatement","src":"9122:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"9251:3:2","nodeType":"YulIdentifier","src":"9251:3:2"},{"kind":"number","nativeSrc":"9256:2:2","nodeType":"YulLiteral","src":"9256:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"9247:3:2","nodeType":"YulIdentifier","src":"9247:3:2"},"nativeSrc":"9247:12:2","nodeType":"YulFunctionCall","src":"9247:12:2"},{"arguments":[{"name":"value3","nativeSrc":"9265:6:2","nodeType":"YulIdentifier","src":"9265:6:2"},{"name":"_1","nativeSrc":"9273:2:2","nodeType":"YulIdentifier","src":"9273:2:2"}],"functionName":{"name":"and","nativeSrc":"9261:3:2","nodeType":"YulIdentifier","src":"9261:3:2"},"nativeSrc":"9261:15:2","nodeType":"YulFunctionCall","src":"9261:15:2"}],"functionName":{"name":"mstore","nativeSrc":"9240:6:2","nodeType":"YulIdentifier","src":"9240:6:2"},"nativeSrc":"9240:37:2","nodeType":"YulFunctionCall","src":"9240:37:2"},"nativeSrc":"9240:37:2","nodeType":"YulExpressionStatement","src":"9240:37:2"},{"nativeSrc":"9286:19:2","nodeType":"YulAssignment","src":"9286:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"9297:3:2","nodeType":"YulIdentifier","src":"9297:3:2"},{"kind":"number","nativeSrc":"9302:2:2","nodeType":"YulLiteral","src":"9302:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"9293:3:2","nodeType":"YulIdentifier","src":"9293:3:2"},"nativeSrc":"9293:12:2","nodeType":"YulFunctionCall","src":"9293:12:2"},"variableNames":[{"name":"end","nativeSrc":"9286:3:2","nodeType":"YulIdentifier","src":"9286:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1__to_t_bytes1_t_bytes1_t_address_t_bytes1__nonPadded_inplace_fromStack_reversed","nativeSrc":"8748:563:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8897:3:2","nodeType":"YulTypedName","src":"8897:3:2","type":""},{"name":"value3","nativeSrc":"8902:6:2","nodeType":"YulTypedName","src":"8902:6:2","type":""},{"name":"value2","nativeSrc":"8910:6:2","nodeType":"YulTypedName","src":"8910:6:2","type":""},{"name":"value1","nativeSrc":"8918:6:2","nodeType":"YulTypedName","src":"8918:6:2","type":""},{"name":"value0","nativeSrc":"8926:6:2","nodeType":"YulTypedName","src":"8926:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8937:3:2","nodeType":"YulTypedName","src":"8937:3:2","type":""}],"src":"8748:563:2"},{"body":{"nativeSrc":"9511:376:2","nodeType":"YulBlock","src":"9511:376:2","statements":[{"nativeSrc":"9521:76:2","nodeType":"YulVariableDeclaration","src":"9521:76:2","value":{"kind":"number","nativeSrc":"9531:66:2","nodeType":"YulLiteral","src":"9531:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"9525:2:2","nodeType":"YulTypedName","src":"9525:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"9613:3:2","nodeType":"YulIdentifier","src":"9613:3:2"},{"arguments":[{"name":"value0","nativeSrc":"9622:6:2","nodeType":"YulIdentifier","src":"9622:6:2"},{"name":"_1","nativeSrc":"9630:2:2","nodeType":"YulIdentifier","src":"9630:2:2"}],"functionName":{"name":"and","nativeSrc":"9618:3:2","nodeType":"YulIdentifier","src":"9618:3:2"},"nativeSrc":"9618:15:2","nodeType":"YulFunctionCall","src":"9618:15:2"}],"functionName":{"name":"mstore","nativeSrc":"9606:6:2","nodeType":"YulIdentifier","src":"9606:6:2"},"nativeSrc":"9606:28:2","nodeType":"YulFunctionCall","src":"9606:28:2"},"nativeSrc":"9606:28:2","nodeType":"YulExpressionStatement","src":"9606:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"9654:3:2","nodeType":"YulIdentifier","src":"9654:3:2"},{"kind":"number","nativeSrc":"9659:1:2","nodeType":"YulLiteral","src":"9659:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9650:3:2","nodeType":"YulIdentifier","src":"9650:3:2"},"nativeSrc":"9650:11:2","nodeType":"YulFunctionCall","src":"9650:11:2"},{"arguments":[{"name":"value1","nativeSrc":"9667:6:2","nodeType":"YulIdentifier","src":"9667:6:2"},{"name":"_1","nativeSrc":"9675:2:2","nodeType":"YulIdentifier","src":"9675:2:2"}],"functionName":{"name":"and","nativeSrc":"9663:3:2","nodeType":"YulIdentifier","src":"9663:3:2"},"nativeSrc":"9663:15:2","nodeType":"YulFunctionCall","src":"9663:15:2"}],"functionName":{"name":"mstore","nativeSrc":"9643:6:2","nodeType":"YulIdentifier","src":"9643:6:2"},"nativeSrc":"9643:36:2","nodeType":"YulFunctionCall","src":"9643:36:2"},"nativeSrc":"9643:36:2","nodeType":"YulExpressionStatement","src":"9643:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"9699:3:2","nodeType":"YulIdentifier","src":"9699:3:2"},{"kind":"number","nativeSrc":"9704:1:2","nodeType":"YulLiteral","src":"9704:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"9695:3:2","nodeType":"YulIdentifier","src":"9695:3:2"},"nativeSrc":"9695:11:2","nodeType":"YulFunctionCall","src":"9695:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9716:2:2","nodeType":"YulLiteral","src":"9716:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"9720:6:2","nodeType":"YulIdentifier","src":"9720:6:2"}],"functionName":{"name":"shl","nativeSrc":"9712:3:2","nodeType":"YulIdentifier","src":"9712:3:2"},"nativeSrc":"9712:15:2","nodeType":"YulFunctionCall","src":"9712:15:2"},{"kind":"number","nativeSrc":"9729:66:2","nodeType":"YulLiteral","src":"9729:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"9708:3:2","nodeType":"YulIdentifier","src":"9708:3:2"},"nativeSrc":"9708:88:2","nodeType":"YulFunctionCall","src":"9708:88:2"}],"functionName":{"name":"mstore","nativeSrc":"9688:6:2","nodeType":"YulIdentifier","src":"9688:6:2"},"nativeSrc":"9688:109:2","nodeType":"YulFunctionCall","src":"9688:109:2"},"nativeSrc":"9688:109:2","nodeType":"YulExpressionStatement","src":"9688:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"9817:3:2","nodeType":"YulIdentifier","src":"9817:3:2"},{"kind":"number","nativeSrc":"9822:2:2","nodeType":"YulLiteral","src":"9822:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"9813:3:2","nodeType":"YulIdentifier","src":"9813:3:2"},"nativeSrc":"9813:12:2","nodeType":"YulFunctionCall","src":"9813:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9835:3:2","nodeType":"YulLiteral","src":"9835:3:2","type":"","value":"248"},{"name":"value3","nativeSrc":"9840:6:2","nodeType":"YulIdentifier","src":"9840:6:2"}],"functionName":{"name":"shl","nativeSrc":"9831:3:2","nodeType":"YulIdentifier","src":"9831:3:2"},"nativeSrc":"9831:16:2","nodeType":"YulFunctionCall","src":"9831:16:2"},{"name":"_1","nativeSrc":"9849:2:2","nodeType":"YulIdentifier","src":"9849:2:2"}],"functionName":{"name":"and","nativeSrc":"9827:3:2","nodeType":"YulIdentifier","src":"9827:3:2"},"nativeSrc":"9827:25:2","nodeType":"YulFunctionCall","src":"9827:25:2"}],"functionName":{"name":"mstore","nativeSrc":"9806:6:2","nodeType":"YulIdentifier","src":"9806:6:2"},"nativeSrc":"9806:47:2","nodeType":"YulFunctionCall","src":"9806:47:2"},"nativeSrc":"9806:47:2","nodeType":"YulExpressionStatement","src":"9806:47:2"},{"nativeSrc":"9862:19:2","nodeType":"YulAssignment","src":"9862:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"9873:3:2","nodeType":"YulIdentifier","src":"9873:3:2"},{"kind":"number","nativeSrc":"9878:2:2","nodeType":"YulLiteral","src":"9878:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"9869:3:2","nodeType":"YulIdentifier","src":"9869:3:2"},"nativeSrc":"9869:12:2","nodeType":"YulFunctionCall","src":"9869:12:2"},"variableNames":[{"name":"end","nativeSrc":"9862:3:2","nodeType":"YulIdentifier","src":"9862:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_uint8__to_t_bytes1_t_bytes1_t_address_t_uint8__nonPadded_inplace_fromStack_reversed","nativeSrc":"9316:571:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"9463:3:2","nodeType":"YulTypedName","src":"9463:3:2","type":""},{"name":"value3","nativeSrc":"9468:6:2","nodeType":"YulTypedName","src":"9468:6:2","type":""},{"name":"value2","nativeSrc":"9476:6:2","nodeType":"YulTypedName","src":"9476:6:2","type":""},{"name":"value1","nativeSrc":"9484:6:2","nodeType":"YulTypedName","src":"9484:6:2","type":""},{"name":"value0","nativeSrc":"9492:6:2","nodeType":"YulTypedName","src":"9492:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9503:3:2","nodeType":"YulTypedName","src":"9503:3:2","type":""}],"src":"9316:571:2"},{"body":{"nativeSrc":"10113:422:2","nodeType":"YulBlock","src":"10113:422:2","statements":[{"nativeSrc":"10123:76:2","nodeType":"YulVariableDeclaration","src":"10123:76:2","value":{"kind":"number","nativeSrc":"10133:66:2","nodeType":"YulLiteral","src":"10133:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"10127:2:2","nodeType":"YulTypedName","src":"10127:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"10215:3:2","nodeType":"YulIdentifier","src":"10215:3:2"},{"arguments":[{"name":"value0","nativeSrc":"10224:6:2","nodeType":"YulIdentifier","src":"10224:6:2"},{"name":"_1","nativeSrc":"10232:2:2","nodeType":"YulIdentifier","src":"10232:2:2"}],"functionName":{"name":"and","nativeSrc":"10220:3:2","nodeType":"YulIdentifier","src":"10220:3:2"},"nativeSrc":"10220:15:2","nodeType":"YulFunctionCall","src":"10220:15:2"}],"functionName":{"name":"mstore","nativeSrc":"10208:6:2","nodeType":"YulIdentifier","src":"10208:6:2"},"nativeSrc":"10208:28:2","nodeType":"YulFunctionCall","src":"10208:28:2"},"nativeSrc":"10208:28:2","nodeType":"YulExpressionStatement","src":"10208:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10256:3:2","nodeType":"YulIdentifier","src":"10256:3:2"},{"kind":"number","nativeSrc":"10261:1:2","nodeType":"YulLiteral","src":"10261:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10252:3:2","nodeType":"YulIdentifier","src":"10252:3:2"},"nativeSrc":"10252:11:2","nodeType":"YulFunctionCall","src":"10252:11:2"},{"arguments":[{"name":"value1","nativeSrc":"10269:6:2","nodeType":"YulIdentifier","src":"10269:6:2"},{"name":"_1","nativeSrc":"10277:2:2","nodeType":"YulIdentifier","src":"10277:2:2"}],"functionName":{"name":"and","nativeSrc":"10265:3:2","nodeType":"YulIdentifier","src":"10265:3:2"},"nativeSrc":"10265:15:2","nodeType":"YulFunctionCall","src":"10265:15:2"}],"functionName":{"name":"mstore","nativeSrc":"10245:6:2","nodeType":"YulIdentifier","src":"10245:6:2"},"nativeSrc":"10245:36:2","nodeType":"YulFunctionCall","src":"10245:36:2"},"nativeSrc":"10245:36:2","nodeType":"YulExpressionStatement","src":"10245:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10301:3:2","nodeType":"YulIdentifier","src":"10301:3:2"},{"kind":"number","nativeSrc":"10306:1:2","nodeType":"YulLiteral","src":"10306:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"10297:3:2","nodeType":"YulIdentifier","src":"10297:3:2"},"nativeSrc":"10297:11:2","nodeType":"YulFunctionCall","src":"10297:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10318:2:2","nodeType":"YulLiteral","src":"10318:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"10322:6:2","nodeType":"YulIdentifier","src":"10322:6:2"}],"functionName":{"name":"shl","nativeSrc":"10314:3:2","nodeType":"YulIdentifier","src":"10314:3:2"},"nativeSrc":"10314:15:2","nodeType":"YulFunctionCall","src":"10314:15:2"},{"kind":"number","nativeSrc":"10331:66:2","nodeType":"YulLiteral","src":"10331:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"10310:3:2","nodeType":"YulIdentifier","src":"10310:3:2"},"nativeSrc":"10310:88:2","nodeType":"YulFunctionCall","src":"10310:88:2"}],"functionName":{"name":"mstore","nativeSrc":"10290:6:2","nodeType":"YulIdentifier","src":"10290:6:2"},"nativeSrc":"10290:109:2","nodeType":"YulFunctionCall","src":"10290:109:2"},"nativeSrc":"10290:109:2","nodeType":"YulExpressionStatement","src":"10290:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10419:3:2","nodeType":"YulIdentifier","src":"10419:3:2"},{"kind":"number","nativeSrc":"10424:2:2","nodeType":"YulLiteral","src":"10424:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"10415:3:2","nodeType":"YulIdentifier","src":"10415:3:2"},"nativeSrc":"10415:12:2","nodeType":"YulFunctionCall","src":"10415:12:2"},{"arguments":[{"name":"value3","nativeSrc":"10433:6:2","nodeType":"YulIdentifier","src":"10433:6:2"},{"name":"_1","nativeSrc":"10441:2:2","nodeType":"YulIdentifier","src":"10441:2:2"}],"functionName":{"name":"and","nativeSrc":"10429:3:2","nodeType":"YulIdentifier","src":"10429:3:2"},"nativeSrc":"10429:15:2","nodeType":"YulFunctionCall","src":"10429:15:2"}],"functionName":{"name":"mstore","nativeSrc":"10408:6:2","nodeType":"YulIdentifier","src":"10408:6:2"},"nativeSrc":"10408:37:2","nodeType":"YulFunctionCall","src":"10408:37:2"},"nativeSrc":"10408:37:2","nodeType":"YulExpressionStatement","src":"10408:37:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10465:3:2","nodeType":"YulIdentifier","src":"10465:3:2"},{"kind":"number","nativeSrc":"10470:2:2","nodeType":"YulLiteral","src":"10470:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"10461:3:2","nodeType":"YulIdentifier","src":"10461:3:2"},"nativeSrc":"10461:12:2","nodeType":"YulFunctionCall","src":"10461:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10483:3:2","nodeType":"YulLiteral","src":"10483:3:2","type":"","value":"248"},{"name":"value4","nativeSrc":"10488:6:2","nodeType":"YulIdentifier","src":"10488:6:2"}],"functionName":{"name":"shl","nativeSrc":"10479:3:2","nodeType":"YulIdentifier","src":"10479:3:2"},"nativeSrc":"10479:16:2","nodeType":"YulFunctionCall","src":"10479:16:2"},{"name":"_1","nativeSrc":"10497:2:2","nodeType":"YulIdentifier","src":"10497:2:2"}],"functionName":{"name":"and","nativeSrc":"10475:3:2","nodeType":"YulIdentifier","src":"10475:3:2"},"nativeSrc":"10475:25:2","nodeType":"YulFunctionCall","src":"10475:25:2"}],"functionName":{"name":"mstore","nativeSrc":"10454:6:2","nodeType":"YulIdentifier","src":"10454:6:2"},"nativeSrc":"10454:47:2","nodeType":"YulFunctionCall","src":"10454:47:2"},"nativeSrc":"10454:47:2","nodeType":"YulExpressionStatement","src":"10454:47:2"},{"nativeSrc":"10510:19:2","nodeType":"YulAssignment","src":"10510:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"10521:3:2","nodeType":"YulIdentifier","src":"10521:3:2"},{"kind":"number","nativeSrc":"10526:2:2","nodeType":"YulLiteral","src":"10526:2:2","type":"","value":"24"}],"functionName":{"name":"add","nativeSrc":"10517:3:2","nodeType":"YulIdentifier","src":"10517:3:2"},"nativeSrc":"10517:12:2","nodeType":"YulFunctionCall","src":"10517:12:2"},"variableNames":[{"name":"end","nativeSrc":"10510:3:2","nodeType":"YulIdentifier","src":"10510:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint8__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint8__nonPadded_inplace_fromStack_reversed","nativeSrc":"9892:643:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"10057:3:2","nodeType":"YulTypedName","src":"10057:3:2","type":""},{"name":"value4","nativeSrc":"10062:6:2","nodeType":"YulTypedName","src":"10062:6:2","type":""},{"name":"value3","nativeSrc":"10070:6:2","nodeType":"YulTypedName","src":"10070:6:2","type":""},{"name":"value2","nativeSrc":"10078:6:2","nodeType":"YulTypedName","src":"10078:6:2","type":""},{"name":"value1","nativeSrc":"10086:6:2","nodeType":"YulTypedName","src":"10086:6:2","type":""},{"name":"value0","nativeSrc":"10094:6:2","nodeType":"YulTypedName","src":"10094:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"10105:3:2","nodeType":"YulTypedName","src":"10105:3:2","type":""}],"src":"9892:643:2"},{"body":{"nativeSrc":"10763:486:2","nodeType":"YulBlock","src":"10763:486:2","statements":[{"nativeSrc":"10773:76:2","nodeType":"YulVariableDeclaration","src":"10773:76:2","value":{"kind":"number","nativeSrc":"10783:66:2","nodeType":"YulLiteral","src":"10783:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"10777:2:2","nodeType":"YulTypedName","src":"10777:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"10865:3:2","nodeType":"YulIdentifier","src":"10865:3:2"},{"arguments":[{"name":"value0","nativeSrc":"10874:6:2","nodeType":"YulIdentifier","src":"10874:6:2"},{"name":"_1","nativeSrc":"10882:2:2","nodeType":"YulIdentifier","src":"10882:2:2"}],"functionName":{"name":"and","nativeSrc":"10870:3:2","nodeType":"YulIdentifier","src":"10870:3:2"},"nativeSrc":"10870:15:2","nodeType":"YulFunctionCall","src":"10870:15:2"}],"functionName":{"name":"mstore","nativeSrc":"10858:6:2","nodeType":"YulIdentifier","src":"10858:6:2"},"nativeSrc":"10858:28:2","nodeType":"YulFunctionCall","src":"10858:28:2"},"nativeSrc":"10858:28:2","nodeType":"YulExpressionStatement","src":"10858:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10906:3:2","nodeType":"YulIdentifier","src":"10906:3:2"},{"kind":"number","nativeSrc":"10911:1:2","nodeType":"YulLiteral","src":"10911:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10902:3:2","nodeType":"YulIdentifier","src":"10902:3:2"},"nativeSrc":"10902:11:2","nodeType":"YulFunctionCall","src":"10902:11:2"},{"arguments":[{"name":"value1","nativeSrc":"10919:6:2","nodeType":"YulIdentifier","src":"10919:6:2"},{"name":"_1","nativeSrc":"10927:2:2","nodeType":"YulIdentifier","src":"10927:2:2"}],"functionName":{"name":"and","nativeSrc":"10915:3:2","nodeType":"YulIdentifier","src":"10915:3:2"},"nativeSrc":"10915:15:2","nodeType":"YulFunctionCall","src":"10915:15:2"}],"functionName":{"name":"mstore","nativeSrc":"10895:6:2","nodeType":"YulIdentifier","src":"10895:6:2"},"nativeSrc":"10895:36:2","nodeType":"YulFunctionCall","src":"10895:36:2"},"nativeSrc":"10895:36:2","nodeType":"YulExpressionStatement","src":"10895:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10951:3:2","nodeType":"YulIdentifier","src":"10951:3:2"},{"kind":"number","nativeSrc":"10956:1:2","nodeType":"YulLiteral","src":"10956:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"10947:3:2","nodeType":"YulIdentifier","src":"10947:3:2"},"nativeSrc":"10947:11:2","nodeType":"YulFunctionCall","src":"10947:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10968:2:2","nodeType":"YulLiteral","src":"10968:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"10972:6:2","nodeType":"YulIdentifier","src":"10972:6:2"}],"functionName":{"name":"shl","nativeSrc":"10964:3:2","nodeType":"YulIdentifier","src":"10964:3:2"},"nativeSrc":"10964:15:2","nodeType":"YulFunctionCall","src":"10964:15:2"},{"kind":"number","nativeSrc":"10981:66:2","nodeType":"YulLiteral","src":"10981:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"10960:3:2","nodeType":"YulIdentifier","src":"10960:3:2"},"nativeSrc":"10960:88:2","nodeType":"YulFunctionCall","src":"10960:88:2"}],"functionName":{"name":"mstore","nativeSrc":"10940:6:2","nodeType":"YulIdentifier","src":"10940:6:2"},"nativeSrc":"10940:109:2","nodeType":"YulFunctionCall","src":"10940:109:2"},"nativeSrc":"10940:109:2","nodeType":"YulExpressionStatement","src":"10940:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11069:3:2","nodeType":"YulIdentifier","src":"11069:3:2"},{"kind":"number","nativeSrc":"11074:2:2","nodeType":"YulLiteral","src":"11074:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"11065:3:2","nodeType":"YulIdentifier","src":"11065:3:2"},"nativeSrc":"11065:12:2","nodeType":"YulFunctionCall","src":"11065:12:2"},{"arguments":[{"name":"value3","nativeSrc":"11083:6:2","nodeType":"YulIdentifier","src":"11083:6:2"},{"name":"_1","nativeSrc":"11091:2:2","nodeType":"YulIdentifier","src":"11091:2:2"}],"functionName":{"name":"and","nativeSrc":"11079:3:2","nodeType":"YulIdentifier","src":"11079:3:2"},"nativeSrc":"11079:15:2","nodeType":"YulFunctionCall","src":"11079:15:2"}],"functionName":{"name":"mstore","nativeSrc":"11058:6:2","nodeType":"YulIdentifier","src":"11058:6:2"},"nativeSrc":"11058:37:2","nodeType":"YulFunctionCall","src":"11058:37:2"},"nativeSrc":"11058:37:2","nodeType":"YulExpressionStatement","src":"11058:37:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11115:3:2","nodeType":"YulIdentifier","src":"11115:3:2"},{"kind":"number","nativeSrc":"11120:2:2","nodeType":"YulLiteral","src":"11120:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"11111:3:2","nodeType":"YulIdentifier","src":"11111:3:2"},"nativeSrc":"11111:12:2","nodeType":"YulFunctionCall","src":"11111:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11133:3:2","nodeType":"YulLiteral","src":"11133:3:2","type":"","value":"240"},{"name":"value4","nativeSrc":"11138:6:2","nodeType":"YulIdentifier","src":"11138:6:2"}],"functionName":{"name":"shl","nativeSrc":"11129:3:2","nodeType":"YulIdentifier","src":"11129:3:2"},"nativeSrc":"11129:16:2","nodeType":"YulFunctionCall","src":"11129:16:2"},{"kind":"number","nativeSrc":"11147:66:2","nodeType":"YulLiteral","src":"11147:66:2","type":"","value":"0xffff000000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"11125:3:2","nodeType":"YulIdentifier","src":"11125:3:2"},"nativeSrc":"11125:89:2","nodeType":"YulFunctionCall","src":"11125:89:2"}],"functionName":{"name":"mstore","nativeSrc":"11104:6:2","nodeType":"YulIdentifier","src":"11104:6:2"},"nativeSrc":"11104:111:2","nodeType":"YulFunctionCall","src":"11104:111:2"},"nativeSrc":"11104:111:2","nodeType":"YulExpressionStatement","src":"11104:111:2"},{"nativeSrc":"11224:19:2","nodeType":"YulAssignment","src":"11224:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"11235:3:2","nodeType":"YulIdentifier","src":"11235:3:2"},{"kind":"number","nativeSrc":"11240:2:2","nodeType":"YulLiteral","src":"11240:2:2","type":"","value":"25"}],"functionName":{"name":"add","nativeSrc":"11231:3:2","nodeType":"YulIdentifier","src":"11231:3:2"},"nativeSrc":"11231:12:2","nodeType":"YulFunctionCall","src":"11231:12:2"},"variableNames":[{"name":"end","nativeSrc":"11224:3:2","nodeType":"YulIdentifier","src":"11224:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint16__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint16__nonPadded_inplace_fromStack_reversed","nativeSrc":"10540:709:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"10707:3:2","nodeType":"YulTypedName","src":"10707:3:2","type":""},{"name":"value4","nativeSrc":"10712:6:2","nodeType":"YulTypedName","src":"10712:6:2","type":""},{"name":"value3","nativeSrc":"10720:6:2","nodeType":"YulTypedName","src":"10720:6:2","type":""},{"name":"value2","nativeSrc":"10728:6:2","nodeType":"YulTypedName","src":"10728:6:2","type":""},{"name":"value1","nativeSrc":"10736:6:2","nodeType":"YulTypedName","src":"10736:6:2","type":""},{"name":"value0","nativeSrc":"10744:6:2","nodeType":"YulTypedName","src":"10744:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"10755:3:2","nodeType":"YulTypedName","src":"10755:3:2","type":""}],"src":"10540:709:2"},{"body":{"nativeSrc":"11477:486:2","nodeType":"YulBlock","src":"11477:486:2","statements":[{"nativeSrc":"11487:76:2","nodeType":"YulVariableDeclaration","src":"11487:76:2","value":{"kind":"number","nativeSrc":"11497:66:2","nodeType":"YulLiteral","src":"11497:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"11491:2:2","nodeType":"YulTypedName","src":"11491:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"11579:3:2","nodeType":"YulIdentifier","src":"11579:3:2"},{"arguments":[{"name":"value0","nativeSrc":"11588:6:2","nodeType":"YulIdentifier","src":"11588:6:2"},{"name":"_1","nativeSrc":"11596:2:2","nodeType":"YulIdentifier","src":"11596:2:2"}],"functionName":{"name":"and","nativeSrc":"11584:3:2","nodeType":"YulIdentifier","src":"11584:3:2"},"nativeSrc":"11584:15:2","nodeType":"YulFunctionCall","src":"11584:15:2"}],"functionName":{"name":"mstore","nativeSrc":"11572:6:2","nodeType":"YulIdentifier","src":"11572:6:2"},"nativeSrc":"11572:28:2","nodeType":"YulFunctionCall","src":"11572:28:2"},"nativeSrc":"11572:28:2","nodeType":"YulExpressionStatement","src":"11572:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11620:3:2","nodeType":"YulIdentifier","src":"11620:3:2"},{"kind":"number","nativeSrc":"11625:1:2","nodeType":"YulLiteral","src":"11625:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"11616:3:2","nodeType":"YulIdentifier","src":"11616:3:2"},"nativeSrc":"11616:11:2","nodeType":"YulFunctionCall","src":"11616:11:2"},{"arguments":[{"name":"value1","nativeSrc":"11633:6:2","nodeType":"YulIdentifier","src":"11633:6:2"},{"name":"_1","nativeSrc":"11641:2:2","nodeType":"YulIdentifier","src":"11641:2:2"}],"functionName":{"name":"and","nativeSrc":"11629:3:2","nodeType":"YulIdentifier","src":"11629:3:2"},"nativeSrc":"11629:15:2","nodeType":"YulFunctionCall","src":"11629:15:2"}],"functionName":{"name":"mstore","nativeSrc":"11609:6:2","nodeType":"YulIdentifier","src":"11609:6:2"},"nativeSrc":"11609:36:2","nodeType":"YulFunctionCall","src":"11609:36:2"},"nativeSrc":"11609:36:2","nodeType":"YulExpressionStatement","src":"11609:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11665:3:2","nodeType":"YulIdentifier","src":"11665:3:2"},{"kind":"number","nativeSrc":"11670:1:2","nodeType":"YulLiteral","src":"11670:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"11661:3:2","nodeType":"YulIdentifier","src":"11661:3:2"},"nativeSrc":"11661:11:2","nodeType":"YulFunctionCall","src":"11661:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11682:2:2","nodeType":"YulLiteral","src":"11682:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"11686:6:2","nodeType":"YulIdentifier","src":"11686:6:2"}],"functionName":{"name":"shl","nativeSrc":"11678:3:2","nodeType":"YulIdentifier","src":"11678:3:2"},"nativeSrc":"11678:15:2","nodeType":"YulFunctionCall","src":"11678:15:2"},{"kind":"number","nativeSrc":"11695:66:2","nodeType":"YulLiteral","src":"11695:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"11674:3:2","nodeType":"YulIdentifier","src":"11674:3:2"},"nativeSrc":"11674:88:2","nodeType":"YulFunctionCall","src":"11674:88:2"}],"functionName":{"name":"mstore","nativeSrc":"11654:6:2","nodeType":"YulIdentifier","src":"11654:6:2"},"nativeSrc":"11654:109:2","nodeType":"YulFunctionCall","src":"11654:109:2"},"nativeSrc":"11654:109:2","nodeType":"YulExpressionStatement","src":"11654:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11783:3:2","nodeType":"YulIdentifier","src":"11783:3:2"},{"kind":"number","nativeSrc":"11788:2:2","nodeType":"YulLiteral","src":"11788:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"11779:3:2","nodeType":"YulIdentifier","src":"11779:3:2"},"nativeSrc":"11779:12:2","nodeType":"YulFunctionCall","src":"11779:12:2"},{"arguments":[{"name":"value3","nativeSrc":"11797:6:2","nodeType":"YulIdentifier","src":"11797:6:2"},{"name":"_1","nativeSrc":"11805:2:2","nodeType":"YulIdentifier","src":"11805:2:2"}],"functionName":{"name":"and","nativeSrc":"11793:3:2","nodeType":"YulIdentifier","src":"11793:3:2"},"nativeSrc":"11793:15:2","nodeType":"YulFunctionCall","src":"11793:15:2"}],"functionName":{"name":"mstore","nativeSrc":"11772:6:2","nodeType":"YulIdentifier","src":"11772:6:2"},"nativeSrc":"11772:37:2","nodeType":"YulFunctionCall","src":"11772:37:2"},"nativeSrc":"11772:37:2","nodeType":"YulExpressionStatement","src":"11772:37:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11829:3:2","nodeType":"YulIdentifier","src":"11829:3:2"},{"kind":"number","nativeSrc":"11834:2:2","nodeType":"YulLiteral","src":"11834:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"11825:3:2","nodeType":"YulIdentifier","src":"11825:3:2"},"nativeSrc":"11825:12:2","nodeType":"YulFunctionCall","src":"11825:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11847:3:2","nodeType":"YulLiteral","src":"11847:3:2","type":"","value":"232"},{"name":"value4","nativeSrc":"11852:6:2","nodeType":"YulIdentifier","src":"11852:6:2"}],"functionName":{"name":"shl","nativeSrc":"11843:3:2","nodeType":"YulIdentifier","src":"11843:3:2"},"nativeSrc":"11843:16:2","nodeType":"YulFunctionCall","src":"11843:16:2"},{"kind":"number","nativeSrc":"11861:66:2","nodeType":"YulLiteral","src":"11861:66:2","type":"","value":"0xffffff0000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"11839:3:2","nodeType":"YulIdentifier","src":"11839:3:2"},"nativeSrc":"11839:89:2","nodeType":"YulFunctionCall","src":"11839:89:2"}],"functionName":{"name":"mstore","nativeSrc":"11818:6:2","nodeType":"YulIdentifier","src":"11818:6:2"},"nativeSrc":"11818:111:2","nodeType":"YulFunctionCall","src":"11818:111:2"},"nativeSrc":"11818:111:2","nodeType":"YulExpressionStatement","src":"11818:111:2"},{"nativeSrc":"11938:19:2","nodeType":"YulAssignment","src":"11938:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"11949:3:2","nodeType":"YulIdentifier","src":"11949:3:2"},{"kind":"number","nativeSrc":"11954:2:2","nodeType":"YulLiteral","src":"11954:2:2","type":"","value":"26"}],"functionName":{"name":"add","nativeSrc":"11945:3:2","nodeType":"YulIdentifier","src":"11945:3:2"},"nativeSrc":"11945:12:2","nodeType":"YulFunctionCall","src":"11945:12:2"},"variableNames":[{"name":"end","nativeSrc":"11938:3:2","nodeType":"YulIdentifier","src":"11938:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint24__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint24__nonPadded_inplace_fromStack_reversed","nativeSrc":"11254:709:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"11421:3:2","nodeType":"YulTypedName","src":"11421:3:2","type":""},{"name":"value4","nativeSrc":"11426:6:2","nodeType":"YulTypedName","src":"11426:6:2","type":""},{"name":"value3","nativeSrc":"11434:6:2","nodeType":"YulTypedName","src":"11434:6:2","type":""},{"name":"value2","nativeSrc":"11442:6:2","nodeType":"YulTypedName","src":"11442:6:2","type":""},{"name":"value1","nativeSrc":"11450:6:2","nodeType":"YulTypedName","src":"11450:6:2","type":""},{"name":"value0","nativeSrc":"11458:6:2","nodeType":"YulTypedName","src":"11458:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"11469:3:2","nodeType":"YulTypedName","src":"11469:3:2","type":""}],"src":"11254:709:2"},{"body":{"nativeSrc":"12191:486:2","nodeType":"YulBlock","src":"12191:486:2","statements":[{"nativeSrc":"12201:76:2","nodeType":"YulVariableDeclaration","src":"12201:76:2","value":{"kind":"number","nativeSrc":"12211:66:2","nodeType":"YulLiteral","src":"12211:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"12205:2:2","nodeType":"YulTypedName","src":"12205:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"12293:3:2","nodeType":"YulIdentifier","src":"12293:3:2"},{"arguments":[{"name":"value0","nativeSrc":"12302:6:2","nodeType":"YulIdentifier","src":"12302:6:2"},{"name":"_1","nativeSrc":"12310:2:2","nodeType":"YulIdentifier","src":"12310:2:2"}],"functionName":{"name":"and","nativeSrc":"12298:3:2","nodeType":"YulIdentifier","src":"12298:3:2"},"nativeSrc":"12298:15:2","nodeType":"YulFunctionCall","src":"12298:15:2"}],"functionName":{"name":"mstore","nativeSrc":"12286:6:2","nodeType":"YulIdentifier","src":"12286:6:2"},"nativeSrc":"12286:28:2","nodeType":"YulFunctionCall","src":"12286:28:2"},"nativeSrc":"12286:28:2","nodeType":"YulExpressionStatement","src":"12286:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"12334:3:2","nodeType":"YulIdentifier","src":"12334:3:2"},{"kind":"number","nativeSrc":"12339:1:2","nodeType":"YulLiteral","src":"12339:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"12330:3:2","nodeType":"YulIdentifier","src":"12330:3:2"},"nativeSrc":"12330:11:2","nodeType":"YulFunctionCall","src":"12330:11:2"},{"arguments":[{"name":"value1","nativeSrc":"12347:6:2","nodeType":"YulIdentifier","src":"12347:6:2"},{"name":"_1","nativeSrc":"12355:2:2","nodeType":"YulIdentifier","src":"12355:2:2"}],"functionName":{"name":"and","nativeSrc":"12343:3:2","nodeType":"YulIdentifier","src":"12343:3:2"},"nativeSrc":"12343:15:2","nodeType":"YulFunctionCall","src":"12343:15:2"}],"functionName":{"name":"mstore","nativeSrc":"12323:6:2","nodeType":"YulIdentifier","src":"12323:6:2"},"nativeSrc":"12323:36:2","nodeType":"YulFunctionCall","src":"12323:36:2"},"nativeSrc":"12323:36:2","nodeType":"YulExpressionStatement","src":"12323:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"12379:3:2","nodeType":"YulIdentifier","src":"12379:3:2"},{"kind":"number","nativeSrc":"12384:1:2","nodeType":"YulLiteral","src":"12384:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"12375:3:2","nodeType":"YulIdentifier","src":"12375:3:2"},"nativeSrc":"12375:11:2","nodeType":"YulFunctionCall","src":"12375:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12396:2:2","nodeType":"YulLiteral","src":"12396:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"12400:6:2","nodeType":"YulIdentifier","src":"12400:6:2"}],"functionName":{"name":"shl","nativeSrc":"12392:3:2","nodeType":"YulIdentifier","src":"12392:3:2"},"nativeSrc":"12392:15:2","nodeType":"YulFunctionCall","src":"12392:15:2"},{"kind":"number","nativeSrc":"12409:66:2","nodeType":"YulLiteral","src":"12409:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"12388:3:2","nodeType":"YulIdentifier","src":"12388:3:2"},"nativeSrc":"12388:88:2","nodeType":"YulFunctionCall","src":"12388:88:2"}],"functionName":{"name":"mstore","nativeSrc":"12368:6:2","nodeType":"YulIdentifier","src":"12368:6:2"},"nativeSrc":"12368:109:2","nodeType":"YulFunctionCall","src":"12368:109:2"},"nativeSrc":"12368:109:2","nodeType":"YulExpressionStatement","src":"12368:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"12497:3:2","nodeType":"YulIdentifier","src":"12497:3:2"},{"kind":"number","nativeSrc":"12502:2:2","nodeType":"YulLiteral","src":"12502:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"12493:3:2","nodeType":"YulIdentifier","src":"12493:3:2"},"nativeSrc":"12493:12:2","nodeType":"YulFunctionCall","src":"12493:12:2"},{"arguments":[{"name":"value3","nativeSrc":"12511:6:2","nodeType":"YulIdentifier","src":"12511:6:2"},{"name":"_1","nativeSrc":"12519:2:2","nodeType":"YulIdentifier","src":"12519:2:2"}],"functionName":{"name":"and","nativeSrc":"12507:3:2","nodeType":"YulIdentifier","src":"12507:3:2"},"nativeSrc":"12507:15:2","nodeType":"YulFunctionCall","src":"12507:15:2"}],"functionName":{"name":"mstore","nativeSrc":"12486:6:2","nodeType":"YulIdentifier","src":"12486:6:2"},"nativeSrc":"12486:37:2","nodeType":"YulFunctionCall","src":"12486:37:2"},"nativeSrc":"12486:37:2","nodeType":"YulExpressionStatement","src":"12486:37:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"12543:3:2","nodeType":"YulIdentifier","src":"12543:3:2"},{"kind":"number","nativeSrc":"12548:2:2","nodeType":"YulLiteral","src":"12548:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"12539:3:2","nodeType":"YulIdentifier","src":"12539:3:2"},"nativeSrc":"12539:12:2","nodeType":"YulFunctionCall","src":"12539:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12561:3:2","nodeType":"YulLiteral","src":"12561:3:2","type":"","value":"224"},{"name":"value4","nativeSrc":"12566:6:2","nodeType":"YulIdentifier","src":"12566:6:2"}],"functionName":{"name":"shl","nativeSrc":"12557:3:2","nodeType":"YulIdentifier","src":"12557:3:2"},"nativeSrc":"12557:16:2","nodeType":"YulFunctionCall","src":"12557:16:2"},{"kind":"number","nativeSrc":"12575:66:2","nodeType":"YulLiteral","src":"12575:66:2","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"12553:3:2","nodeType":"YulIdentifier","src":"12553:3:2"},"nativeSrc":"12553:89:2","nodeType":"YulFunctionCall","src":"12553:89:2"}],"functionName":{"name":"mstore","nativeSrc":"12532:6:2","nodeType":"YulIdentifier","src":"12532:6:2"},"nativeSrc":"12532:111:2","nodeType":"YulFunctionCall","src":"12532:111:2"},"nativeSrc":"12532:111:2","nodeType":"YulExpressionStatement","src":"12532:111:2"},{"nativeSrc":"12652:19:2","nodeType":"YulAssignment","src":"12652:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"12663:3:2","nodeType":"YulIdentifier","src":"12663:3:2"},{"kind":"number","nativeSrc":"12668:2:2","nodeType":"YulLiteral","src":"12668:2:2","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"12659:3:2","nodeType":"YulIdentifier","src":"12659:3:2"},"nativeSrc":"12659:12:2","nodeType":"YulFunctionCall","src":"12659:12:2"},"variableNames":[{"name":"end","nativeSrc":"12652:3:2","nodeType":"YulIdentifier","src":"12652:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint32__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint32__nonPadded_inplace_fromStack_reversed","nativeSrc":"11968:709:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12135:3:2","nodeType":"YulTypedName","src":"12135:3:2","type":""},{"name":"value4","nativeSrc":"12140:6:2","nodeType":"YulTypedName","src":"12140:6:2","type":""},{"name":"value3","nativeSrc":"12148:6:2","nodeType":"YulTypedName","src":"12148:6:2","type":""},{"name":"value2","nativeSrc":"12156:6:2","nodeType":"YulTypedName","src":"12156:6:2","type":""},{"name":"value1","nativeSrc":"12164:6:2","nodeType":"YulTypedName","src":"12164:6:2","type":""},{"name":"value0","nativeSrc":"12172:6:2","nodeType":"YulTypedName","src":"12172:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12183:3:2","nodeType":"YulTypedName","src":"12183:3:2","type":""}],"src":"11968:709:2"},{"body":{"nativeSrc":"12905:486:2","nodeType":"YulBlock","src":"12905:486:2","statements":[{"nativeSrc":"12915:76:2","nodeType":"YulVariableDeclaration","src":"12915:76:2","value":{"kind":"number","nativeSrc":"12925:66:2","nodeType":"YulLiteral","src":"12925:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"12919:2:2","nodeType":"YulTypedName","src":"12919:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"13007:3:2","nodeType":"YulIdentifier","src":"13007:3:2"},{"arguments":[{"name":"value0","nativeSrc":"13016:6:2","nodeType":"YulIdentifier","src":"13016:6:2"},{"name":"_1","nativeSrc":"13024:2:2","nodeType":"YulIdentifier","src":"13024:2:2"}],"functionName":{"name":"and","nativeSrc":"13012:3:2","nodeType":"YulIdentifier","src":"13012:3:2"},"nativeSrc":"13012:15:2","nodeType":"YulFunctionCall","src":"13012:15:2"}],"functionName":{"name":"mstore","nativeSrc":"13000:6:2","nodeType":"YulIdentifier","src":"13000:6:2"},"nativeSrc":"13000:28:2","nodeType":"YulFunctionCall","src":"13000:28:2"},"nativeSrc":"13000:28:2","nodeType":"YulExpressionStatement","src":"13000:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13048:3:2","nodeType":"YulIdentifier","src":"13048:3:2"},{"kind":"number","nativeSrc":"13053:1:2","nodeType":"YulLiteral","src":"13053:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13044:3:2","nodeType":"YulIdentifier","src":"13044:3:2"},"nativeSrc":"13044:11:2","nodeType":"YulFunctionCall","src":"13044:11:2"},{"arguments":[{"name":"value1","nativeSrc":"13061:6:2","nodeType":"YulIdentifier","src":"13061:6:2"},{"name":"_1","nativeSrc":"13069:2:2","nodeType":"YulIdentifier","src":"13069:2:2"}],"functionName":{"name":"and","nativeSrc":"13057:3:2","nodeType":"YulIdentifier","src":"13057:3:2"},"nativeSrc":"13057:15:2","nodeType":"YulFunctionCall","src":"13057:15:2"}],"functionName":{"name":"mstore","nativeSrc":"13037:6:2","nodeType":"YulIdentifier","src":"13037:6:2"},"nativeSrc":"13037:36:2","nodeType":"YulFunctionCall","src":"13037:36:2"},"nativeSrc":"13037:36:2","nodeType":"YulExpressionStatement","src":"13037:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13093:3:2","nodeType":"YulIdentifier","src":"13093:3:2"},{"kind":"number","nativeSrc":"13098:1:2","nodeType":"YulLiteral","src":"13098:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"13089:3:2","nodeType":"YulIdentifier","src":"13089:3:2"},"nativeSrc":"13089:11:2","nodeType":"YulFunctionCall","src":"13089:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13110:2:2","nodeType":"YulLiteral","src":"13110:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"13114:6:2","nodeType":"YulIdentifier","src":"13114:6:2"}],"functionName":{"name":"shl","nativeSrc":"13106:3:2","nodeType":"YulIdentifier","src":"13106:3:2"},"nativeSrc":"13106:15:2","nodeType":"YulFunctionCall","src":"13106:15:2"},{"kind":"number","nativeSrc":"13123:66:2","nodeType":"YulLiteral","src":"13123:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"13102:3:2","nodeType":"YulIdentifier","src":"13102:3:2"},"nativeSrc":"13102:88:2","nodeType":"YulFunctionCall","src":"13102:88:2"}],"functionName":{"name":"mstore","nativeSrc":"13082:6:2","nodeType":"YulIdentifier","src":"13082:6:2"},"nativeSrc":"13082:109:2","nodeType":"YulFunctionCall","src":"13082:109:2"},"nativeSrc":"13082:109:2","nodeType":"YulExpressionStatement","src":"13082:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13211:3:2","nodeType":"YulIdentifier","src":"13211:3:2"},{"kind":"number","nativeSrc":"13216:2:2","nodeType":"YulLiteral","src":"13216:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"13207:3:2","nodeType":"YulIdentifier","src":"13207:3:2"},"nativeSrc":"13207:12:2","nodeType":"YulFunctionCall","src":"13207:12:2"},{"arguments":[{"name":"value3","nativeSrc":"13225:6:2","nodeType":"YulIdentifier","src":"13225:6:2"},{"name":"_1","nativeSrc":"13233:2:2","nodeType":"YulIdentifier","src":"13233:2:2"}],"functionName":{"name":"and","nativeSrc":"13221:3:2","nodeType":"YulIdentifier","src":"13221:3:2"},"nativeSrc":"13221:15:2","nodeType":"YulFunctionCall","src":"13221:15:2"}],"functionName":{"name":"mstore","nativeSrc":"13200:6:2","nodeType":"YulIdentifier","src":"13200:6:2"},"nativeSrc":"13200:37:2","nodeType":"YulFunctionCall","src":"13200:37:2"},"nativeSrc":"13200:37:2","nodeType":"YulExpressionStatement","src":"13200:37:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13257:3:2","nodeType":"YulIdentifier","src":"13257:3:2"},{"kind":"number","nativeSrc":"13262:2:2","nodeType":"YulLiteral","src":"13262:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"13253:3:2","nodeType":"YulIdentifier","src":"13253:3:2"},"nativeSrc":"13253:12:2","nodeType":"YulFunctionCall","src":"13253:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13275:3:2","nodeType":"YulLiteral","src":"13275:3:2","type":"","value":"216"},{"name":"value4","nativeSrc":"13280:6:2","nodeType":"YulIdentifier","src":"13280:6:2"}],"functionName":{"name":"shl","nativeSrc":"13271:3:2","nodeType":"YulIdentifier","src":"13271:3:2"},"nativeSrc":"13271:16:2","nodeType":"YulFunctionCall","src":"13271:16:2"},{"kind":"number","nativeSrc":"13289:66:2","nodeType":"YulLiteral","src":"13289:66:2","type":"","value":"0xffffffffff000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"13267:3:2","nodeType":"YulIdentifier","src":"13267:3:2"},"nativeSrc":"13267:89:2","nodeType":"YulFunctionCall","src":"13267:89:2"}],"functionName":{"name":"mstore","nativeSrc":"13246:6:2","nodeType":"YulIdentifier","src":"13246:6:2"},"nativeSrc":"13246:111:2","nodeType":"YulFunctionCall","src":"13246:111:2"},"nativeSrc":"13246:111:2","nodeType":"YulExpressionStatement","src":"13246:111:2"},{"nativeSrc":"13366:19:2","nodeType":"YulAssignment","src":"13366:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"13377:3:2","nodeType":"YulIdentifier","src":"13377:3:2"},{"kind":"number","nativeSrc":"13382:2:2","nodeType":"YulLiteral","src":"13382:2:2","type":"","value":"28"}],"functionName":{"name":"add","nativeSrc":"13373:3:2","nodeType":"YulIdentifier","src":"13373:3:2"},"nativeSrc":"13373:12:2","nodeType":"YulFunctionCall","src":"13373:12:2"},"variableNames":[{"name":"end","nativeSrc":"13366:3:2","nodeType":"YulIdentifier","src":"13366:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint40__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint40__nonPadded_inplace_fromStack_reversed","nativeSrc":"12682:709:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12849:3:2","nodeType":"YulTypedName","src":"12849:3:2","type":""},{"name":"value4","nativeSrc":"12854:6:2","nodeType":"YulTypedName","src":"12854:6:2","type":""},{"name":"value3","nativeSrc":"12862:6:2","nodeType":"YulTypedName","src":"12862:6:2","type":""},{"name":"value2","nativeSrc":"12870:6:2","nodeType":"YulTypedName","src":"12870:6:2","type":""},{"name":"value1","nativeSrc":"12878:6:2","nodeType":"YulTypedName","src":"12878:6:2","type":""},{"name":"value0","nativeSrc":"12886:6:2","nodeType":"YulTypedName","src":"12886:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12897:3:2","nodeType":"YulTypedName","src":"12897:3:2","type":""}],"src":"12682:709:2"},{"body":{"nativeSrc":"13619:486:2","nodeType":"YulBlock","src":"13619:486:2","statements":[{"nativeSrc":"13629:76:2","nodeType":"YulVariableDeclaration","src":"13629:76:2","value":{"kind":"number","nativeSrc":"13639:66:2","nodeType":"YulLiteral","src":"13639:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"13633:2:2","nodeType":"YulTypedName","src":"13633:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"13721:3:2","nodeType":"YulIdentifier","src":"13721:3:2"},{"arguments":[{"name":"value0","nativeSrc":"13730:6:2","nodeType":"YulIdentifier","src":"13730:6:2"},{"name":"_1","nativeSrc":"13738:2:2","nodeType":"YulIdentifier","src":"13738:2:2"}],"functionName":{"name":"and","nativeSrc":"13726:3:2","nodeType":"YulIdentifier","src":"13726:3:2"},"nativeSrc":"13726:15:2","nodeType":"YulFunctionCall","src":"13726:15:2"}],"functionName":{"name":"mstore","nativeSrc":"13714:6:2","nodeType":"YulIdentifier","src":"13714:6:2"},"nativeSrc":"13714:28:2","nodeType":"YulFunctionCall","src":"13714:28:2"},"nativeSrc":"13714:28:2","nodeType":"YulExpressionStatement","src":"13714:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13762:3:2","nodeType":"YulIdentifier","src":"13762:3:2"},{"kind":"number","nativeSrc":"13767:1:2","nodeType":"YulLiteral","src":"13767:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13758:3:2","nodeType":"YulIdentifier","src":"13758:3:2"},"nativeSrc":"13758:11:2","nodeType":"YulFunctionCall","src":"13758:11:2"},{"arguments":[{"name":"value1","nativeSrc":"13775:6:2","nodeType":"YulIdentifier","src":"13775:6:2"},{"name":"_1","nativeSrc":"13783:2:2","nodeType":"YulIdentifier","src":"13783:2:2"}],"functionName":{"name":"and","nativeSrc":"13771:3:2","nodeType":"YulIdentifier","src":"13771:3:2"},"nativeSrc":"13771:15:2","nodeType":"YulFunctionCall","src":"13771:15:2"}],"functionName":{"name":"mstore","nativeSrc":"13751:6:2","nodeType":"YulIdentifier","src":"13751:6:2"},"nativeSrc":"13751:36:2","nodeType":"YulFunctionCall","src":"13751:36:2"},"nativeSrc":"13751:36:2","nodeType":"YulExpressionStatement","src":"13751:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13807:3:2","nodeType":"YulIdentifier","src":"13807:3:2"},{"kind":"number","nativeSrc":"13812:1:2","nodeType":"YulLiteral","src":"13812:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"13803:3:2","nodeType":"YulIdentifier","src":"13803:3:2"},"nativeSrc":"13803:11:2","nodeType":"YulFunctionCall","src":"13803:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13824:2:2","nodeType":"YulLiteral","src":"13824:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"13828:6:2","nodeType":"YulIdentifier","src":"13828:6:2"}],"functionName":{"name":"shl","nativeSrc":"13820:3:2","nodeType":"YulIdentifier","src":"13820:3:2"},"nativeSrc":"13820:15:2","nodeType":"YulFunctionCall","src":"13820:15:2"},{"kind":"number","nativeSrc":"13837:66:2","nodeType":"YulLiteral","src":"13837:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"13816:3:2","nodeType":"YulIdentifier","src":"13816:3:2"},"nativeSrc":"13816:88:2","nodeType":"YulFunctionCall","src":"13816:88:2"}],"functionName":{"name":"mstore","nativeSrc":"13796:6:2","nodeType":"YulIdentifier","src":"13796:6:2"},"nativeSrc":"13796:109:2","nodeType":"YulFunctionCall","src":"13796:109:2"},"nativeSrc":"13796:109:2","nodeType":"YulExpressionStatement","src":"13796:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13925:3:2","nodeType":"YulIdentifier","src":"13925:3:2"},{"kind":"number","nativeSrc":"13930:2:2","nodeType":"YulLiteral","src":"13930:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"13921:3:2","nodeType":"YulIdentifier","src":"13921:3:2"},"nativeSrc":"13921:12:2","nodeType":"YulFunctionCall","src":"13921:12:2"},{"arguments":[{"name":"value3","nativeSrc":"13939:6:2","nodeType":"YulIdentifier","src":"13939:6:2"},{"name":"_1","nativeSrc":"13947:2:2","nodeType":"YulIdentifier","src":"13947:2:2"}],"functionName":{"name":"and","nativeSrc":"13935:3:2","nodeType":"YulIdentifier","src":"13935:3:2"},"nativeSrc":"13935:15:2","nodeType":"YulFunctionCall","src":"13935:15:2"}],"functionName":{"name":"mstore","nativeSrc":"13914:6:2","nodeType":"YulIdentifier","src":"13914:6:2"},"nativeSrc":"13914:37:2","nodeType":"YulFunctionCall","src":"13914:37:2"},"nativeSrc":"13914:37:2","nodeType":"YulExpressionStatement","src":"13914:37:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13971:3:2","nodeType":"YulIdentifier","src":"13971:3:2"},{"kind":"number","nativeSrc":"13976:2:2","nodeType":"YulLiteral","src":"13976:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"13967:3:2","nodeType":"YulIdentifier","src":"13967:3:2"},"nativeSrc":"13967:12:2","nodeType":"YulFunctionCall","src":"13967:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13989:3:2","nodeType":"YulLiteral","src":"13989:3:2","type":"","value":"208"},{"name":"value4","nativeSrc":"13994:6:2","nodeType":"YulIdentifier","src":"13994:6:2"}],"functionName":{"name":"shl","nativeSrc":"13985:3:2","nodeType":"YulIdentifier","src":"13985:3:2"},"nativeSrc":"13985:16:2","nodeType":"YulFunctionCall","src":"13985:16:2"},{"kind":"number","nativeSrc":"14003:66:2","nodeType":"YulLiteral","src":"14003:66:2","type":"","value":"0xffffffffffff0000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"13981:3:2","nodeType":"YulIdentifier","src":"13981:3:2"},"nativeSrc":"13981:89:2","nodeType":"YulFunctionCall","src":"13981:89:2"}],"functionName":{"name":"mstore","nativeSrc":"13960:6:2","nodeType":"YulIdentifier","src":"13960:6:2"},"nativeSrc":"13960:111:2","nodeType":"YulFunctionCall","src":"13960:111:2"},"nativeSrc":"13960:111:2","nodeType":"YulExpressionStatement","src":"13960:111:2"},{"nativeSrc":"14080:19:2","nodeType":"YulAssignment","src":"14080:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"14091:3:2","nodeType":"YulIdentifier","src":"14091:3:2"},{"kind":"number","nativeSrc":"14096:2:2","nodeType":"YulLiteral","src":"14096:2:2","type":"","value":"29"}],"functionName":{"name":"add","nativeSrc":"14087:3:2","nodeType":"YulIdentifier","src":"14087:3:2"},"nativeSrc":"14087:12:2","nodeType":"YulFunctionCall","src":"14087:12:2"},"variableNames":[{"name":"end","nativeSrc":"14080:3:2","nodeType":"YulIdentifier","src":"14080:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint48__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint48__nonPadded_inplace_fromStack_reversed","nativeSrc":"13396:709:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"13563:3:2","nodeType":"YulTypedName","src":"13563:3:2","type":""},{"name":"value4","nativeSrc":"13568:6:2","nodeType":"YulTypedName","src":"13568:6:2","type":""},{"name":"value3","nativeSrc":"13576:6:2","nodeType":"YulTypedName","src":"13576:6:2","type":""},{"name":"value2","nativeSrc":"13584:6:2","nodeType":"YulTypedName","src":"13584:6:2","type":""},{"name":"value1","nativeSrc":"13592:6:2","nodeType":"YulTypedName","src":"13592:6:2","type":""},{"name":"value0","nativeSrc":"13600:6:2","nodeType":"YulTypedName","src":"13600:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"13611:3:2","nodeType":"YulTypedName","src":"13611:3:2","type":""}],"src":"13396:709:2"},{"body":{"nativeSrc":"14333:486:2","nodeType":"YulBlock","src":"14333:486:2","statements":[{"nativeSrc":"14343:76:2","nodeType":"YulVariableDeclaration","src":"14343:76:2","value":{"kind":"number","nativeSrc":"14353:66:2","nodeType":"YulLiteral","src":"14353:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"14347:2:2","nodeType":"YulTypedName","src":"14347:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"14435:3:2","nodeType":"YulIdentifier","src":"14435:3:2"},{"arguments":[{"name":"value0","nativeSrc":"14444:6:2","nodeType":"YulIdentifier","src":"14444:6:2"},{"name":"_1","nativeSrc":"14452:2:2","nodeType":"YulIdentifier","src":"14452:2:2"}],"functionName":{"name":"and","nativeSrc":"14440:3:2","nodeType":"YulIdentifier","src":"14440:3:2"},"nativeSrc":"14440:15:2","nodeType":"YulFunctionCall","src":"14440:15:2"}],"functionName":{"name":"mstore","nativeSrc":"14428:6:2","nodeType":"YulIdentifier","src":"14428:6:2"},"nativeSrc":"14428:28:2","nodeType":"YulFunctionCall","src":"14428:28:2"},"nativeSrc":"14428:28:2","nodeType":"YulExpressionStatement","src":"14428:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"14476:3:2","nodeType":"YulIdentifier","src":"14476:3:2"},{"kind":"number","nativeSrc":"14481:1:2","nodeType":"YulLiteral","src":"14481:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14472:3:2","nodeType":"YulIdentifier","src":"14472:3:2"},"nativeSrc":"14472:11:2","nodeType":"YulFunctionCall","src":"14472:11:2"},{"arguments":[{"name":"value1","nativeSrc":"14489:6:2","nodeType":"YulIdentifier","src":"14489:6:2"},{"name":"_1","nativeSrc":"14497:2:2","nodeType":"YulIdentifier","src":"14497:2:2"}],"functionName":{"name":"and","nativeSrc":"14485:3:2","nodeType":"YulIdentifier","src":"14485:3:2"},"nativeSrc":"14485:15:2","nodeType":"YulFunctionCall","src":"14485:15:2"}],"functionName":{"name":"mstore","nativeSrc":"14465:6:2","nodeType":"YulIdentifier","src":"14465:6:2"},"nativeSrc":"14465:36:2","nodeType":"YulFunctionCall","src":"14465:36:2"},"nativeSrc":"14465:36:2","nodeType":"YulExpressionStatement","src":"14465:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"14521:3:2","nodeType":"YulIdentifier","src":"14521:3:2"},{"kind":"number","nativeSrc":"14526:1:2","nodeType":"YulLiteral","src":"14526:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"14517:3:2","nodeType":"YulIdentifier","src":"14517:3:2"},"nativeSrc":"14517:11:2","nodeType":"YulFunctionCall","src":"14517:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14538:2:2","nodeType":"YulLiteral","src":"14538:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"14542:6:2","nodeType":"YulIdentifier","src":"14542:6:2"}],"functionName":{"name":"shl","nativeSrc":"14534:3:2","nodeType":"YulIdentifier","src":"14534:3:2"},"nativeSrc":"14534:15:2","nodeType":"YulFunctionCall","src":"14534:15:2"},{"kind":"number","nativeSrc":"14551:66:2","nodeType":"YulLiteral","src":"14551:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"14530:3:2","nodeType":"YulIdentifier","src":"14530:3:2"},"nativeSrc":"14530:88:2","nodeType":"YulFunctionCall","src":"14530:88:2"}],"functionName":{"name":"mstore","nativeSrc":"14510:6:2","nodeType":"YulIdentifier","src":"14510:6:2"},"nativeSrc":"14510:109:2","nodeType":"YulFunctionCall","src":"14510:109:2"},"nativeSrc":"14510:109:2","nodeType":"YulExpressionStatement","src":"14510:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"14639:3:2","nodeType":"YulIdentifier","src":"14639:3:2"},{"kind":"number","nativeSrc":"14644:2:2","nodeType":"YulLiteral","src":"14644:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"14635:3:2","nodeType":"YulIdentifier","src":"14635:3:2"},"nativeSrc":"14635:12:2","nodeType":"YulFunctionCall","src":"14635:12:2"},{"arguments":[{"name":"value3","nativeSrc":"14653:6:2","nodeType":"YulIdentifier","src":"14653:6:2"},{"name":"_1","nativeSrc":"14661:2:2","nodeType":"YulIdentifier","src":"14661:2:2"}],"functionName":{"name":"and","nativeSrc":"14649:3:2","nodeType":"YulIdentifier","src":"14649:3:2"},"nativeSrc":"14649:15:2","nodeType":"YulFunctionCall","src":"14649:15:2"}],"functionName":{"name":"mstore","nativeSrc":"14628:6:2","nodeType":"YulIdentifier","src":"14628:6:2"},"nativeSrc":"14628:37:2","nodeType":"YulFunctionCall","src":"14628:37:2"},"nativeSrc":"14628:37:2","nodeType":"YulExpressionStatement","src":"14628:37:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"14685:3:2","nodeType":"YulIdentifier","src":"14685:3:2"},{"kind":"number","nativeSrc":"14690:2:2","nodeType":"YulLiteral","src":"14690:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"14681:3:2","nodeType":"YulIdentifier","src":"14681:3:2"},"nativeSrc":"14681:12:2","nodeType":"YulFunctionCall","src":"14681:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14703:3:2","nodeType":"YulLiteral","src":"14703:3:2","type":"","value":"200"},{"name":"value4","nativeSrc":"14708:6:2","nodeType":"YulIdentifier","src":"14708:6:2"}],"functionName":{"name":"shl","nativeSrc":"14699:3:2","nodeType":"YulIdentifier","src":"14699:3:2"},"nativeSrc":"14699:16:2","nodeType":"YulFunctionCall","src":"14699:16:2"},{"kind":"number","nativeSrc":"14717:66:2","nodeType":"YulLiteral","src":"14717:66:2","type":"","value":"0xffffffffffffff00000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"14695:3:2","nodeType":"YulIdentifier","src":"14695:3:2"},"nativeSrc":"14695:89:2","nodeType":"YulFunctionCall","src":"14695:89:2"}],"functionName":{"name":"mstore","nativeSrc":"14674:6:2","nodeType":"YulIdentifier","src":"14674:6:2"},"nativeSrc":"14674:111:2","nodeType":"YulFunctionCall","src":"14674:111:2"},"nativeSrc":"14674:111:2","nodeType":"YulExpressionStatement","src":"14674:111:2"},{"nativeSrc":"14794:19:2","nodeType":"YulAssignment","src":"14794:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"14805:3:2","nodeType":"YulIdentifier","src":"14805:3:2"},{"kind":"number","nativeSrc":"14810:2:2","nodeType":"YulLiteral","src":"14810:2:2","type":"","value":"30"}],"functionName":{"name":"add","nativeSrc":"14801:3:2","nodeType":"YulIdentifier","src":"14801:3:2"},"nativeSrc":"14801:12:2","nodeType":"YulFunctionCall","src":"14801:12:2"},"variableNames":[{"name":"end","nativeSrc":"14794:3:2","nodeType":"YulIdentifier","src":"14794:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint56__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint56__nonPadded_inplace_fromStack_reversed","nativeSrc":"14110:709:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"14277:3:2","nodeType":"YulTypedName","src":"14277:3:2","type":""},{"name":"value4","nativeSrc":"14282:6:2","nodeType":"YulTypedName","src":"14282:6:2","type":""},{"name":"value3","nativeSrc":"14290:6:2","nodeType":"YulTypedName","src":"14290:6:2","type":""},{"name":"value2","nativeSrc":"14298:6:2","nodeType":"YulTypedName","src":"14298:6:2","type":""},{"name":"value1","nativeSrc":"14306:6:2","nodeType":"YulTypedName","src":"14306:6:2","type":""},{"name":"value0","nativeSrc":"14314:6:2","nodeType":"YulTypedName","src":"14314:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"14325:3:2","nodeType":"YulTypedName","src":"14325:3:2","type":""}],"src":"14110:709:2"},{"body":{"nativeSrc":"15047:486:2","nodeType":"YulBlock","src":"15047:486:2","statements":[{"nativeSrc":"15057:76:2","nodeType":"YulVariableDeclaration","src":"15057:76:2","value":{"kind":"number","nativeSrc":"15067:66:2","nodeType":"YulLiteral","src":"15067:66:2","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"},"variables":[{"name":"_1","nativeSrc":"15061:2:2","nodeType":"YulTypedName","src":"15061:2:2","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"15149:3:2","nodeType":"YulIdentifier","src":"15149:3:2"},{"arguments":[{"name":"value0","nativeSrc":"15158:6:2","nodeType":"YulIdentifier","src":"15158:6:2"},{"name":"_1","nativeSrc":"15166:2:2","nodeType":"YulIdentifier","src":"15166:2:2"}],"functionName":{"name":"and","nativeSrc":"15154:3:2","nodeType":"YulIdentifier","src":"15154:3:2"},"nativeSrc":"15154:15:2","nodeType":"YulFunctionCall","src":"15154:15:2"}],"functionName":{"name":"mstore","nativeSrc":"15142:6:2","nodeType":"YulIdentifier","src":"15142:6:2"},"nativeSrc":"15142:28:2","nodeType":"YulFunctionCall","src":"15142:28:2"},"nativeSrc":"15142:28:2","nodeType":"YulExpressionStatement","src":"15142:28:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"15190:3:2","nodeType":"YulIdentifier","src":"15190:3:2"},{"kind":"number","nativeSrc":"15195:1:2","nodeType":"YulLiteral","src":"15195:1:2","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15186:3:2","nodeType":"YulIdentifier","src":"15186:3:2"},"nativeSrc":"15186:11:2","nodeType":"YulFunctionCall","src":"15186:11:2"},{"arguments":[{"name":"value1","nativeSrc":"15203:6:2","nodeType":"YulIdentifier","src":"15203:6:2"},{"name":"_1","nativeSrc":"15211:2:2","nodeType":"YulIdentifier","src":"15211:2:2"}],"functionName":{"name":"and","nativeSrc":"15199:3:2","nodeType":"YulIdentifier","src":"15199:3:2"},"nativeSrc":"15199:15:2","nodeType":"YulFunctionCall","src":"15199:15:2"}],"functionName":{"name":"mstore","nativeSrc":"15179:6:2","nodeType":"YulIdentifier","src":"15179:6:2"},"nativeSrc":"15179:36:2","nodeType":"YulFunctionCall","src":"15179:36:2"},"nativeSrc":"15179:36:2","nodeType":"YulExpressionStatement","src":"15179:36:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"15235:3:2","nodeType":"YulIdentifier","src":"15235:3:2"},{"kind":"number","nativeSrc":"15240:1:2","nodeType":"YulLiteral","src":"15240:1:2","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"15231:3:2","nodeType":"YulIdentifier","src":"15231:3:2"},"nativeSrc":"15231:11:2","nodeType":"YulFunctionCall","src":"15231:11:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15252:2:2","nodeType":"YulLiteral","src":"15252:2:2","type":"","value":"96"},{"name":"value2","nativeSrc":"15256:6:2","nodeType":"YulIdentifier","src":"15256:6:2"}],"functionName":{"name":"shl","nativeSrc":"15248:3:2","nodeType":"YulIdentifier","src":"15248:3:2"},"nativeSrc":"15248:15:2","nodeType":"YulFunctionCall","src":"15248:15:2"},{"kind":"number","nativeSrc":"15265:66:2","nodeType":"YulLiteral","src":"15265:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"15244:3:2","nodeType":"YulIdentifier","src":"15244:3:2"},"nativeSrc":"15244:88:2","nodeType":"YulFunctionCall","src":"15244:88:2"}],"functionName":{"name":"mstore","nativeSrc":"15224:6:2","nodeType":"YulIdentifier","src":"15224:6:2"},"nativeSrc":"15224:109:2","nodeType":"YulFunctionCall","src":"15224:109:2"},"nativeSrc":"15224:109:2","nodeType":"YulExpressionStatement","src":"15224:109:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"15353:3:2","nodeType":"YulIdentifier","src":"15353:3:2"},{"kind":"number","nativeSrc":"15358:2:2","nodeType":"YulLiteral","src":"15358:2:2","type":"","value":"22"}],"functionName":{"name":"add","nativeSrc":"15349:3:2","nodeType":"YulIdentifier","src":"15349:3:2"},"nativeSrc":"15349:12:2","nodeType":"YulFunctionCall","src":"15349:12:2"},{"arguments":[{"name":"value3","nativeSrc":"15367:6:2","nodeType":"YulIdentifier","src":"15367:6:2"},{"name":"_1","nativeSrc":"15375:2:2","nodeType":"YulIdentifier","src":"15375:2:2"}],"functionName":{"name":"and","nativeSrc":"15363:3:2","nodeType":"YulIdentifier","src":"15363:3:2"},"nativeSrc":"15363:15:2","nodeType":"YulFunctionCall","src":"15363:15:2"}],"functionName":{"name":"mstore","nativeSrc":"15342:6:2","nodeType":"YulIdentifier","src":"15342:6:2"},"nativeSrc":"15342:37:2","nodeType":"YulFunctionCall","src":"15342:37:2"},"nativeSrc":"15342:37:2","nodeType":"YulExpressionStatement","src":"15342:37:2"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"15399:3:2","nodeType":"YulIdentifier","src":"15399:3:2"},{"kind":"number","nativeSrc":"15404:2:2","nodeType":"YulLiteral","src":"15404:2:2","type":"","value":"23"}],"functionName":{"name":"add","nativeSrc":"15395:3:2","nodeType":"YulIdentifier","src":"15395:3:2"},"nativeSrc":"15395:12:2","nodeType":"YulFunctionCall","src":"15395:12:2"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15417:3:2","nodeType":"YulLiteral","src":"15417:3:2","type":"","value":"192"},{"name":"value4","nativeSrc":"15422:6:2","nodeType":"YulIdentifier","src":"15422:6:2"}],"functionName":{"name":"shl","nativeSrc":"15413:3:2","nodeType":"YulIdentifier","src":"15413:3:2"},"nativeSrc":"15413:16:2","nodeType":"YulFunctionCall","src":"15413:16:2"},{"kind":"number","nativeSrc":"15431:66:2","nodeType":"YulLiteral","src":"15431:66:2","type":"","value":"0xffffffffffffffff000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"15409:3:2","nodeType":"YulIdentifier","src":"15409:3:2"},"nativeSrc":"15409:89:2","nodeType":"YulFunctionCall","src":"15409:89:2"}],"functionName":{"name":"mstore","nativeSrc":"15388:6:2","nodeType":"YulIdentifier","src":"15388:6:2"},"nativeSrc":"15388:111:2","nodeType":"YulFunctionCall","src":"15388:111:2"},"nativeSrc":"15388:111:2","nodeType":"YulExpressionStatement","src":"15388:111:2"},{"nativeSrc":"15508:19:2","nodeType":"YulAssignment","src":"15508:19:2","value":{"arguments":[{"name":"pos","nativeSrc":"15519:3:2","nodeType":"YulIdentifier","src":"15519:3:2"},{"kind":"number","nativeSrc":"15524:2:2","nodeType":"YulLiteral","src":"15524:2:2","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"15515:3:2","nodeType":"YulIdentifier","src":"15515:3:2"},"nativeSrc":"15515:12:2","nodeType":"YulFunctionCall","src":"15515:12:2"},"variableNames":[{"name":"end","nativeSrc":"15508:3:2","nodeType":"YulIdentifier","src":"15508:3:2"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint64__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint64__nonPadded_inplace_fromStack_reversed","nativeSrc":"14824:709:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"14991:3:2","nodeType":"YulTypedName","src":"14991:3:2","type":""},{"name":"value4","nativeSrc":"14996:6:2","nodeType":"YulTypedName","src":"14996:6:2","type":""},{"name":"value3","nativeSrc":"15004:6:2","nodeType":"YulTypedName","src":"15004:6:2","type":""},{"name":"value2","nativeSrc":"15012:6:2","nodeType":"YulTypedName","src":"15012:6:2","type":""},{"name":"value1","nativeSrc":"15020:6:2","nodeType":"YulTypedName","src":"15020:6:2","type":""},{"name":"value0","nativeSrc":"15028:6:2","nodeType":"YulTypedName","src":"15028:6:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"15039:3:2","nodeType":"YulTypedName","src":"15039:3:2","type":""}],"src":"14824:709:2"},{"body":{"nativeSrc":"15685:426:2","nodeType":"YulBlock","src":"15685:426:2","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"15702:9:2","nodeType":"YulIdentifier","src":"15702:9:2"},{"arguments":[{"name":"value0","nativeSrc":"15717:6:2","nodeType":"YulIdentifier","src":"15717:6:2"},{"kind":"number","nativeSrc":"15725:42:2","nodeType":"YulLiteral","src":"15725:42:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"15713:3:2","nodeType":"YulIdentifier","src":"15713:3:2"},"nativeSrc":"15713:55:2","nodeType":"YulFunctionCall","src":"15713:55:2"}],"functionName":{"name":"mstore","nativeSrc":"15695:6:2","nodeType":"YulIdentifier","src":"15695:6:2"},"nativeSrc":"15695:74:2","nodeType":"YulFunctionCall","src":"15695:74:2"},"nativeSrc":"15695:74:2","nodeType":"YulExpressionStatement","src":"15695:74:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15789:9:2","nodeType":"YulIdentifier","src":"15789:9:2"},{"kind":"number","nativeSrc":"15800:2:2","nodeType":"YulLiteral","src":"15800:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15785:3:2","nodeType":"YulIdentifier","src":"15785:3:2"},"nativeSrc":"15785:18:2","nodeType":"YulFunctionCall","src":"15785:18:2"},{"kind":"number","nativeSrc":"15805:2:2","nodeType":"YulLiteral","src":"15805:2:2","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"15778:6:2","nodeType":"YulIdentifier","src":"15778:6:2"},"nativeSrc":"15778:30:2","nodeType":"YulFunctionCall","src":"15778:30:2"},"nativeSrc":"15778:30:2","nodeType":"YulExpressionStatement","src":"15778:30:2"},{"nativeSrc":"15817:27:2","nodeType":"YulVariableDeclaration","src":"15817:27:2","value":{"arguments":[{"name":"value1","nativeSrc":"15837:6:2","nodeType":"YulIdentifier","src":"15837:6:2"}],"functionName":{"name":"mload","nativeSrc":"15831:5:2","nodeType":"YulIdentifier","src":"15831:5:2"},"nativeSrc":"15831:13:2","nodeType":"YulFunctionCall","src":"15831:13:2"},"variables":[{"name":"length","nativeSrc":"15821:6:2","nodeType":"YulTypedName","src":"15821:6:2","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15864:9:2","nodeType":"YulIdentifier","src":"15864:9:2"},{"kind":"number","nativeSrc":"15875:2:2","nodeType":"YulLiteral","src":"15875:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15860:3:2","nodeType":"YulIdentifier","src":"15860:3:2"},"nativeSrc":"15860:18:2","nodeType":"YulFunctionCall","src":"15860:18:2"},{"name":"length","nativeSrc":"15880:6:2","nodeType":"YulIdentifier","src":"15880:6:2"}],"functionName":{"name":"mstore","nativeSrc":"15853:6:2","nodeType":"YulIdentifier","src":"15853:6:2"},"nativeSrc":"15853:34:2","nodeType":"YulFunctionCall","src":"15853:34:2"},"nativeSrc":"15853:34:2","nodeType":"YulExpressionStatement","src":"15853:34:2"},{"expression":{"arguments":[{"arguments":[{"name":"value1","nativeSrc":"15935:6:2","nodeType":"YulIdentifier","src":"15935:6:2"},{"kind":"number","nativeSrc":"15943:2:2","nodeType":"YulLiteral","src":"15943:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15931:3:2","nodeType":"YulIdentifier","src":"15931:3:2"},"nativeSrc":"15931:15:2","nodeType":"YulFunctionCall","src":"15931:15:2"},{"arguments":[{"name":"headStart","nativeSrc":"15952:9:2","nodeType":"YulIdentifier","src":"15952:9:2"},{"kind":"number","nativeSrc":"15963:2:2","nodeType":"YulLiteral","src":"15963:2:2","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"15948:3:2","nodeType":"YulIdentifier","src":"15948:3:2"},"nativeSrc":"15948:18:2","nodeType":"YulFunctionCall","src":"15948:18:2"},{"name":"length","nativeSrc":"15968:6:2","nodeType":"YulIdentifier","src":"15968:6:2"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"15896:34:2","nodeType":"YulIdentifier","src":"15896:34:2"},"nativeSrc":"15896:79:2","nodeType":"YulFunctionCall","src":"15896:79:2"},"nativeSrc":"15896:79:2","nodeType":"YulExpressionStatement","src":"15896:79:2"},{"nativeSrc":"15984:121:2","nodeType":"YulAssignment","src":"15984:121:2","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16000:9:2","nodeType":"YulIdentifier","src":"16000:9:2"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"16019:6:2","nodeType":"YulIdentifier","src":"16019:6:2"},{"kind":"number","nativeSrc":"16027:2:2","nodeType":"YulLiteral","src":"16027:2:2","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16015:3:2","nodeType":"YulIdentifier","src":"16015:3:2"},"nativeSrc":"16015:15:2","nodeType":"YulFunctionCall","src":"16015:15:2"},{"kind":"number","nativeSrc":"16032:66:2","nodeType":"YulLiteral","src":"16032:66:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nativeSrc":"16011:3:2","nodeType":"YulIdentifier","src":"16011:3:2"},"nativeSrc":"16011:88:2","nodeType":"YulFunctionCall","src":"16011:88:2"}],"functionName":{"name":"add","nativeSrc":"15996:3:2","nodeType":"YulIdentifier","src":"15996:3:2"},"nativeSrc":"15996:104:2","nodeType":"YulFunctionCall","src":"15996:104:2"},{"kind":"number","nativeSrc":"16102:2:2","nodeType":"YulLiteral","src":"16102:2:2","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"15992:3:2","nodeType":"YulIdentifier","src":"15992:3:2"},"nativeSrc":"15992:113:2","nodeType":"YulFunctionCall","src":"15992:113:2"},"variableNames":[{"name":"tail","nativeSrc":"15984:4:2","nodeType":"YulIdentifier","src":"15984:4:2"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"15538:573:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15646:9:2","nodeType":"YulTypedName","src":"15646:9:2","type":""},{"name":"value1","nativeSrc":"15657:6:2","nodeType":"YulTypedName","src":"15657:6:2","type":""},{"name":"value0","nativeSrc":"15665:6:2","nodeType":"YulTypedName","src":"15665:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15676:4:2","nodeType":"YulTypedName","src":"15676:4:2","type":""}],"src":"15538:573:2"},{"body":{"nativeSrc":"16307:14:2","nodeType":"YulBlock","src":"16307:14:2","statements":[{"nativeSrc":"16309:10:2","nodeType":"YulAssignment","src":"16309:10:2","value":{"name":"pos","nativeSrc":"16316:3:2","nodeType":"YulIdentifier","src":"16316:3:2"},"variableNames":[{"name":"end","nativeSrc":"16309:3:2","nodeType":"YulIdentifier","src":"16309:3:2"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"16116:205:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"16291:3:2","nodeType":"YulTypedName","src":"16291:3:2","type":""}],"returnVariables":[{"name":"end","nativeSrc":"16299:3:2","nodeType":"YulTypedName","src":"16299:3:2","type":""}],"src":"16116:205:2"},{"body":{"nativeSrc":"16358:152:2","nodeType":"YulBlock","src":"16358:152:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16375:1:2","nodeType":"YulLiteral","src":"16375:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"16378:77:2","nodeType":"YulLiteral","src":"16378:77:2","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"16368:6:2","nodeType":"YulIdentifier","src":"16368:6:2"},"nativeSrc":"16368:88:2","nodeType":"YulFunctionCall","src":"16368:88:2"},"nativeSrc":"16368:88:2","nodeType":"YulExpressionStatement","src":"16368:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16472:1:2","nodeType":"YulLiteral","src":"16472:1:2","type":"","value":"4"},{"kind":"number","nativeSrc":"16475:4:2","nodeType":"YulLiteral","src":"16475:4:2","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"16465:6:2","nodeType":"YulIdentifier","src":"16465:6:2"},"nativeSrc":"16465:15:2","nodeType":"YulFunctionCall","src":"16465:15:2"},"nativeSrc":"16465:15:2","nodeType":"YulExpressionStatement","src":"16465:15:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16496:1:2","nodeType":"YulLiteral","src":"16496:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"16499:4:2","nodeType":"YulLiteral","src":"16499:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16489:6:2","nodeType":"YulIdentifier","src":"16489:6:2"},"nativeSrc":"16489:15:2","nodeType":"YulFunctionCall","src":"16489:15:2"},"nativeSrc":"16489:15:2","nodeType":"YulExpressionStatement","src":"16489:15:2"}]},"name":"panic_error_0x21","nativeSrc":"16326:184:2","nodeType":"YulFunctionDefinition","src":"16326:184:2"},{"body":{"nativeSrc":"16672:211:2","nodeType":"YulBlock","src":"16672:211:2","statements":[{"nativeSrc":"16682:26:2","nodeType":"YulAssignment","src":"16682:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"16694:9:2","nodeType":"YulIdentifier","src":"16694:9:2"},{"kind":"number","nativeSrc":"16705:2:2","nodeType":"YulLiteral","src":"16705:2:2","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16690:3:2","nodeType":"YulIdentifier","src":"16690:3:2"},"nativeSrc":"16690:18:2","nodeType":"YulFunctionCall","src":"16690:18:2"},"variableNames":[{"name":"tail","nativeSrc":"16682:4:2","nodeType":"YulIdentifier","src":"16682:4:2"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16724:9:2","nodeType":"YulIdentifier","src":"16724:9:2"},{"arguments":[{"name":"value0","nativeSrc":"16739:6:2","nodeType":"YulIdentifier","src":"16739:6:2"},{"kind":"number","nativeSrc":"16747:42:2","nodeType":"YulLiteral","src":"16747:42:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"16735:3:2","nodeType":"YulIdentifier","src":"16735:3:2"},"nativeSrc":"16735:55:2","nodeType":"YulFunctionCall","src":"16735:55:2"}],"functionName":{"name":"mstore","nativeSrc":"16717:6:2","nodeType":"YulIdentifier","src":"16717:6:2"},"nativeSrc":"16717:74:2","nodeType":"YulFunctionCall","src":"16717:74:2"},"nativeSrc":"16717:74:2","nodeType":"YulExpressionStatement","src":"16717:74:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16811:9:2","nodeType":"YulIdentifier","src":"16811:9:2"},{"kind":"number","nativeSrc":"16822:2:2","nodeType":"YulLiteral","src":"16822:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16807:3:2","nodeType":"YulIdentifier","src":"16807:3:2"},"nativeSrc":"16807:18:2","nodeType":"YulFunctionCall","src":"16807:18:2"},{"name":"value1","nativeSrc":"16827:6:2","nodeType":"YulIdentifier","src":"16827:6:2"}],"functionName":{"name":"mstore","nativeSrc":"16800:6:2","nodeType":"YulIdentifier","src":"16800:6:2"},"nativeSrc":"16800:34:2","nodeType":"YulFunctionCall","src":"16800:34:2"},"nativeSrc":"16800:34:2","nodeType":"YulExpressionStatement","src":"16800:34:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16854:9:2","nodeType":"YulIdentifier","src":"16854:9:2"},{"kind":"number","nativeSrc":"16865:2:2","nodeType":"YulLiteral","src":"16865:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16850:3:2","nodeType":"YulIdentifier","src":"16850:3:2"},"nativeSrc":"16850:18:2","nodeType":"YulFunctionCall","src":"16850:18:2"},{"name":"value2","nativeSrc":"16870:6:2","nodeType":"YulIdentifier","src":"16870:6:2"}],"functionName":{"name":"mstore","nativeSrc":"16843:6:2","nodeType":"YulIdentifier","src":"16843:6:2"},"nativeSrc":"16843:34:2","nodeType":"YulFunctionCall","src":"16843:34:2"},"nativeSrc":"16843:34:2","nodeType":"YulExpressionStatement","src":"16843:34:2"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed","nativeSrc":"16515:368:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16625:9:2","nodeType":"YulTypedName","src":"16625:9:2","type":""},{"name":"value2","nativeSrc":"16636:6:2","nodeType":"YulTypedName","src":"16636:6:2","type":""},{"name":"value1","nativeSrc":"16644:6:2","nodeType":"YulTypedName","src":"16644:6:2","type":""},{"name":"value0","nativeSrc":"16652:6:2","nodeType":"YulTypedName","src":"16652:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16663:4:2","nodeType":"YulTypedName","src":"16663:4:2","type":""}],"src":"16515:368:2"},{"body":{"nativeSrc":"16989:76:2","nodeType":"YulBlock","src":"16989:76:2","statements":[{"nativeSrc":"16999:26:2","nodeType":"YulAssignment","src":"16999:26:2","value":{"arguments":[{"name":"headStart","nativeSrc":"17011:9:2","nodeType":"YulIdentifier","src":"17011:9:2"},{"kind":"number","nativeSrc":"17022:2:2","nodeType":"YulLiteral","src":"17022:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17007:3:2","nodeType":"YulIdentifier","src":"17007:3:2"},"nativeSrc":"17007:18:2","nodeType":"YulFunctionCall","src":"17007:18:2"},"variableNames":[{"name":"tail","nativeSrc":"16999:4:2","nodeType":"YulIdentifier","src":"16999:4:2"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17041:9:2","nodeType":"YulIdentifier","src":"17041:9:2"},{"name":"value0","nativeSrc":"17052:6:2","nodeType":"YulIdentifier","src":"17052:6:2"}],"functionName":{"name":"mstore","nativeSrc":"17034:6:2","nodeType":"YulIdentifier","src":"17034:6:2"},"nativeSrc":"17034:25:2","nodeType":"YulFunctionCall","src":"17034:25:2"},"nativeSrc":"17034:25:2","nodeType":"YulExpressionStatement","src":"17034:25:2"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"16888:177:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16958:9:2","nodeType":"YulTypedName","src":"16958:9:2","type":""},{"name":"value0","nativeSrc":"16969:6:2","nodeType":"YulTypedName","src":"16969:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16980:4:2","nodeType":"YulTypedName","src":"16980:4:2","type":""}],"src":"16888:177:2"},{"body":{"nativeSrc":"17355:417:2","nodeType":"YulBlock","src":"17355:417:2","statements":[{"nativeSrc":"17365:27:2","nodeType":"YulAssignment","src":"17365:27:2","value":{"arguments":[{"name":"headStart","nativeSrc":"17377:9:2","nodeType":"YulIdentifier","src":"17377:9:2"},{"kind":"number","nativeSrc":"17388:3:2","nodeType":"YulLiteral","src":"17388:3:2","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"17373:3:2","nodeType":"YulIdentifier","src":"17373:3:2"},"nativeSrc":"17373:19:2","nodeType":"YulFunctionCall","src":"17373:19:2"},"variableNames":[{"name":"tail","nativeSrc":"17365:4:2","nodeType":"YulIdentifier","src":"17365:4:2"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17408:9:2","nodeType":"YulIdentifier","src":"17408:9:2"},{"name":"value0","nativeSrc":"17419:6:2","nodeType":"YulIdentifier","src":"17419:6:2"}],"functionName":{"name":"mstore","nativeSrc":"17401:6:2","nodeType":"YulIdentifier","src":"17401:6:2"},"nativeSrc":"17401:25:2","nodeType":"YulFunctionCall","src":"17401:25:2"},"nativeSrc":"17401:25:2","nodeType":"YulExpressionStatement","src":"17401:25:2"},{"nativeSrc":"17435:52:2","nodeType":"YulVariableDeclaration","src":"17435:52:2","value":{"kind":"number","nativeSrc":"17445:42:2","nodeType":"YulLiteral","src":"17445:42:2","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"17439:2:2","nodeType":"YulTypedName","src":"17439:2:2","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17507:9:2","nodeType":"YulIdentifier","src":"17507:9:2"},{"kind":"number","nativeSrc":"17518:2:2","nodeType":"YulLiteral","src":"17518:2:2","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17503:3:2","nodeType":"YulIdentifier","src":"17503:3:2"},"nativeSrc":"17503:18:2","nodeType":"YulFunctionCall","src":"17503:18:2"},{"arguments":[{"name":"value1","nativeSrc":"17527:6:2","nodeType":"YulIdentifier","src":"17527:6:2"},{"name":"_1","nativeSrc":"17535:2:2","nodeType":"YulIdentifier","src":"17535:2:2"}],"functionName":{"name":"and","nativeSrc":"17523:3:2","nodeType":"YulIdentifier","src":"17523:3:2"},"nativeSrc":"17523:15:2","nodeType":"YulFunctionCall","src":"17523:15:2"}],"functionName":{"name":"mstore","nativeSrc":"17496:6:2","nodeType":"YulIdentifier","src":"17496:6:2"},"nativeSrc":"17496:43:2","nodeType":"YulFunctionCall","src":"17496:43:2"},"nativeSrc":"17496:43:2","nodeType":"YulExpressionStatement","src":"17496:43:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17559:9:2","nodeType":"YulIdentifier","src":"17559:9:2"},{"kind":"number","nativeSrc":"17570:2:2","nodeType":"YulLiteral","src":"17570:2:2","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17555:3:2","nodeType":"YulIdentifier","src":"17555:3:2"},"nativeSrc":"17555:18:2","nodeType":"YulFunctionCall","src":"17555:18:2"},{"name":"value2","nativeSrc":"17575:6:2","nodeType":"YulIdentifier","src":"17575:6:2"}],"functionName":{"name":"mstore","nativeSrc":"17548:6:2","nodeType":"YulIdentifier","src":"17548:6:2"},"nativeSrc":"17548:34:2","nodeType":"YulFunctionCall","src":"17548:34:2"},"nativeSrc":"17548:34:2","nodeType":"YulExpressionStatement","src":"17548:34:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17602:9:2","nodeType":"YulIdentifier","src":"17602:9:2"},{"kind":"number","nativeSrc":"17613:2:2","nodeType":"YulLiteral","src":"17613:2:2","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"17598:3:2","nodeType":"YulIdentifier","src":"17598:3:2"},"nativeSrc":"17598:18:2","nodeType":"YulFunctionCall","src":"17598:18:2"},{"name":"value3","nativeSrc":"17618:6:2","nodeType":"YulIdentifier","src":"17618:6:2"}],"functionName":{"name":"mstore","nativeSrc":"17591:6:2","nodeType":"YulIdentifier","src":"17591:6:2"},"nativeSrc":"17591:34:2","nodeType":"YulFunctionCall","src":"17591:34:2"},"nativeSrc":"17591:34:2","nodeType":"YulExpressionStatement","src":"17591:34:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17645:9:2","nodeType":"YulIdentifier","src":"17645:9:2"},{"kind":"number","nativeSrc":"17656:3:2","nodeType":"YulLiteral","src":"17656:3:2","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"17641:3:2","nodeType":"YulIdentifier","src":"17641:3:2"},"nativeSrc":"17641:19:2","nodeType":"YulFunctionCall","src":"17641:19:2"},{"name":"value4","nativeSrc":"17662:6:2","nodeType":"YulIdentifier","src":"17662:6:2"}],"functionName":{"name":"mstore","nativeSrc":"17634:6:2","nodeType":"YulIdentifier","src":"17634:6:2"},"nativeSrc":"17634:35:2","nodeType":"YulFunctionCall","src":"17634:35:2"},"nativeSrc":"17634:35:2","nodeType":"YulExpressionStatement","src":"17634:35:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17689:9:2","nodeType":"YulIdentifier","src":"17689:9:2"},{"kind":"number","nativeSrc":"17700:3:2","nodeType":"YulLiteral","src":"17700:3:2","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"17685:3:2","nodeType":"YulIdentifier","src":"17685:3:2"},"nativeSrc":"17685:19:2","nodeType":"YulFunctionCall","src":"17685:19:2"},{"name":"value5","nativeSrc":"17706:6:2","nodeType":"YulIdentifier","src":"17706:6:2"}],"functionName":{"name":"mstore","nativeSrc":"17678:6:2","nodeType":"YulIdentifier","src":"17678:6:2"},"nativeSrc":"17678:35:2","nodeType":"YulFunctionCall","src":"17678:35:2"},"nativeSrc":"17678:35:2","nodeType":"YulExpressionStatement","src":"17678:35:2"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17733:9:2","nodeType":"YulIdentifier","src":"17733:9:2"},{"kind":"number","nativeSrc":"17744:3:2","nodeType":"YulLiteral","src":"17744:3:2","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"17729:3:2","nodeType":"YulIdentifier","src":"17729:3:2"},"nativeSrc":"17729:19:2","nodeType":"YulFunctionCall","src":"17729:19:2"},{"arguments":[{"name":"value6","nativeSrc":"17754:6:2","nodeType":"YulIdentifier","src":"17754:6:2"},{"name":"_1","nativeSrc":"17762:2:2","nodeType":"YulIdentifier","src":"17762:2:2"}],"functionName":{"name":"and","nativeSrc":"17750:3:2","nodeType":"YulIdentifier","src":"17750:3:2"},"nativeSrc":"17750:15:2","nodeType":"YulFunctionCall","src":"17750:15:2"}],"functionName":{"name":"mstore","nativeSrc":"17722:6:2","nodeType":"YulIdentifier","src":"17722:6:2"},"nativeSrc":"17722:44:2","nodeType":"YulFunctionCall","src":"17722:44:2"},"nativeSrc":"17722:44:2","nodeType":"YulExpressionStatement","src":"17722:44:2"}]},"name":"abi_encode_tuple_t_bytes32_t_address_payable_t_uint256_t_uint256_t_uint256_t_uint256_t_address__to_t_bytes32_t_address_payable_t_uint256_t_uint256_t_uint256_t_uint256_t_address__fromStack_reversed","nativeSrc":"17070:702:2","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17276:9:2","nodeType":"YulTypedName","src":"17276:9:2","type":""},{"name":"value6","nativeSrc":"17287:6:2","nodeType":"YulTypedName","src":"17287:6:2","type":""},{"name":"value5","nativeSrc":"17295:6:2","nodeType":"YulTypedName","src":"17295:6:2","type":""},{"name":"value4","nativeSrc":"17303:6:2","nodeType":"YulTypedName","src":"17303:6:2","type":""},{"name":"value3","nativeSrc":"17311:6:2","nodeType":"YulTypedName","src":"17311:6:2","type":""},{"name":"value2","nativeSrc":"17319:6:2","nodeType":"YulTypedName","src":"17319:6:2","type":""},{"name":"value1","nativeSrc":"17327:6:2","nodeType":"YulTypedName","src":"17327:6:2","type":""},{"name":"value0","nativeSrc":"17335:6:2","nodeType":"YulTypedName","src":"17335:6:2","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17346:4:2","nodeType":"YulTypedName","src":"17346:4:2","type":""}],"src":"17070:702:2"},{"body":{"nativeSrc":"17809:152:2","nodeType":"YulBlock","src":"17809:152:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17826:1:2","nodeType":"YulLiteral","src":"17826:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"17829:77:2","nodeType":"YulLiteral","src":"17829:77:2","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"17819:6:2","nodeType":"YulIdentifier","src":"17819:6:2"},"nativeSrc":"17819:88:2","nodeType":"YulFunctionCall","src":"17819:88:2"},"nativeSrc":"17819:88:2","nodeType":"YulExpressionStatement","src":"17819:88:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17923:1:2","nodeType":"YulLiteral","src":"17923:1:2","type":"","value":"4"},{"kind":"number","nativeSrc":"17926:4:2","nodeType":"YulLiteral","src":"17926:4:2","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"17916:6:2","nodeType":"YulIdentifier","src":"17916:6:2"},"nativeSrc":"17916:15:2","nodeType":"YulFunctionCall","src":"17916:15:2"},"nativeSrc":"17916:15:2","nodeType":"YulExpressionStatement","src":"17916:15:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17947:1:2","nodeType":"YulLiteral","src":"17947:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"17950:4:2","nodeType":"YulLiteral","src":"17950:4:2","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"17940:6:2","nodeType":"YulIdentifier","src":"17940:6:2"},"nativeSrc":"17940:15:2","nodeType":"YulFunctionCall","src":"17940:15:2"},"nativeSrc":"17940:15:2","nodeType":"YulExpressionStatement","src":"17940:15:2"}]},"name":"panic_error_0x32","nativeSrc":"17777:184:2","nodeType":"YulFunctionDefinition","src":"17777:184:2"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0xffffffffffffffff\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n mstore(add(add(memPtr, _1), 0x20), 0)\n array := memPtr\n }\n function abi_decode_struct_Values(headStart, end) -> value\n {\n if slt(sub(end, headStart), 0x40) { revert(0, 0) }\n let memPtr := mload(0x40)\n let newFreePtr := add(memPtr, 0x40)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(0x40, newFreePtr)\n value := memPtr\n mstore(memPtr, calldataload(headStart))\n mstore(add(memPtr, 32), calldataload(add(headStart, 32)))\n }\n function abi_decode_tuple_t_bytes32t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 64))\n if gt(offset_1, _1) { revert(0, 0) }\n value2 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n value3 := abi_decode_struct_Values(add(headStart, 96), dataEnd)\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_decode_tuple_t_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\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 value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n value2 := abi_decode_struct_Values(add(headStart, 64), dataEnd)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\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_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptrt_address(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n value2 := abi_decode_struct_Values(add(headStart, 64), dataEnd)\n value3 := abi_decode_address(add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes32t_bytes_memory_ptrt_bytes_memory_ptrt_struct$_Values_$15_memory_ptrt_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 64))\n if gt(offset_1, _1) { revert(0, 0) }\n value2 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n value3 := abi_decode_struct_Values(add(headStart, 96), dataEnd)\n value4 := abi_decode_address(add(headStart, 160))\n }\n function abi_decode_tuple_t_bytes32t_bytes32t_address(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function checked_sub_t_uint64(x, y) -> diff\n {\n let _1 := 0xffffffffffffffff\n diff := sub(and(x, _1), and(y, _1))\n if gt(diff, _1)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1__to_t_bytes1_t_bytes1_t_address_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n end := add(pos, 23)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_uint8__to_t_bytes1_t_bytes1_t_address_t_uint8__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(shl(248, value3), _1))\n end := add(pos, 23)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint8__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint8__nonPadded_inplace_fromStack_reversed(pos, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n mstore(add(pos, 23), and(shl(248, value4), _1))\n end := add(pos, 24)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint16__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint16__nonPadded_inplace_fromStack_reversed(pos, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n mstore(add(pos, 23), and(shl(240, value4), 0xffff000000000000000000000000000000000000000000000000000000000000))\n end := add(pos, 25)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint24__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint24__nonPadded_inplace_fromStack_reversed(pos, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n mstore(add(pos, 23), and(shl(232, value4), 0xffffff0000000000000000000000000000000000000000000000000000000000))\n end := add(pos, 26)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint32__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint32__nonPadded_inplace_fromStack_reversed(pos, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n mstore(add(pos, 23), and(shl(224, value4), 0xffffffff00000000000000000000000000000000000000000000000000000000))\n end := add(pos, 27)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint40__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint40__nonPadded_inplace_fromStack_reversed(pos, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n mstore(add(pos, 23), and(shl(216, value4), 0xffffffffff000000000000000000000000000000000000000000000000000000))\n end := add(pos, 28)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint48__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint48__nonPadded_inplace_fromStack_reversed(pos, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n mstore(add(pos, 23), and(shl(208, value4), 0xffffffffffff0000000000000000000000000000000000000000000000000000))\n end := add(pos, 29)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint56__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint56__nonPadded_inplace_fromStack_reversed(pos, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n mstore(add(pos, 23), and(shl(200, value4), 0xffffffffffffff00000000000000000000000000000000000000000000000000))\n end := add(pos, 30)\n }\n function abi_encode_tuple_packed_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint64__to_t_bytes1_t_bytes1_t_address_t_bytes1_t_uint64__nonPadded_inplace_fromStack_reversed(pos, value4, value3, value2, value1, value0) -> end\n {\n let _1 := 0xff00000000000000000000000000000000000000000000000000000000000000\n mstore(pos, and(value0, _1))\n mstore(add(pos, 1), and(value1, _1))\n mstore(add(pos, 2), and(shl(96, value2), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n mstore(add(pos, 22), and(value3, _1))\n mstore(add(pos, 23), and(shl(192, value4), 0xffffffffffffffff000000000000000000000000000000000000000000000000))\n end := add(pos, 31)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), 64)\n let length := mload(value1)\n mstore(add(headStart, 64), length)\n copy_memory_to_memory_with_cleanup(add(value1, 32), add(headStart, 96), length)\n tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function panic_error_0x21()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_uint256_t_bytes32__to_t_address_t_uint256_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\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_encode_tuple_t_bytes32_t_address_payable_t_uint256_t_uint256_t_uint256_t_uint256_t_address__to_t_bytes32_t_address_payable_t_uint256_t_uint256_t_uint256_t_uint256_t_address__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 224)\n mstore(headStart, value0)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), and(value6, _1))\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n}","id":2,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"9":[{"length":32,"start":1539},{"length":32,"start":1797},{"length":32,"start":2091},{"length":32,"start":2261},{"length":32,"start":4735},{"length":32,"start":4981},{"length":32,"start":5088},{"length":32,"start":5151},{"length":32,"start":5287},{"length":32,"start":5555},{"length":32,"start":6098},{"length":32,"start":6205},{"length":32,"start":6268},{"length":32,"start":6404},{"length":32,"start":6853},{"length":32,"start":7288},{"length":32,"start":7395},{"length":32,"start":7458},{"length":32,"start":7594},{"length":32,"start":8169},{"length":32,"start":8710},{"length":32,"start":8946},{"length":32,"start":9293},{"length":32,"start":9382},{"length":32,"start":9602}]},"linkReferences":{},"object":"60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x81503DA1 GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xD323826A GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE96DEEE4 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE96DEEE4 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xF5745ABA EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0xF9664498 EQ PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD323826A EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0xDDDA0ACB EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0xE437252A EQ PUSH2 0x382 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9C36A286 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x9C36A286 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0xA7DB93F2 EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xC3FE107B EQ PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x81503DA1 EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x890C283B EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x98E81077 EQ PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F990E3F GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x6CEC2536 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x6CEC2536 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x74637A7A EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x7F565360 EQ PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2F990E3F EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x31A7C8C8 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x42D654FC EQ PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27FE1822 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x27FE1822 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x2852527A EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x28DDD046 EQ PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xD84ACB EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0x26307668 EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x26A32FC7 EQ PUSH2 0x1DE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A2 PUSH2 0x19D CALLDATASIZE PUSH1 0x4 PUSH2 0x2915 JUMP JUMPDEST PUSH2 0x3CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A2 PUSH2 0x1D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2994 JUMP JUMPDEST PUSH2 0x3E6 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x29DB JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0x29DB JUMP JUMPDEST PUSH2 0x4DE JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A39 JUMP JUMPDEST PUSH2 0x539 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A90 JUMP JUMPDEST PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA9 JUMP JUMPDEST PUSH2 0x72A JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x258 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA9 JUMP JUMPDEST PUSH2 0x7BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x278 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1E JUMP JUMPDEST PUSH2 0x7C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x298 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A90 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B4A JUMP JUMPDEST PUSH2 0x84F JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x2CB CALLDATASIZE PUSH1 0x4 PUSH2 0x29DB JUMP JUMPDEST PUSH2 0x1162 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x2B74 JUMP JUMPDEST PUSH2 0x11E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x2BAC JUMP JUMPDEST PUSH2 0x1276 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BCE JUMP JUMPDEST PUSH2 0x12A3 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x2994 JUMP JUMPDEST PUSH2 0x1505 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C49 JUMP JUMPDEST PUSH2 0x16F1 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x34A CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA9 JUMP JUMPDEST PUSH2 0x1964 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x36A CALLDATASIZE PUSH1 0x4 PUSH2 0x2CD9 JUMP JUMPDEST PUSH2 0x19ED JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x2C49 JUMP JUMPDEST PUSH2 0x1A17 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x390 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BCE JUMP JUMPDEST PUSH2 0x1E0C JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2915 JUMP JUMPDEST PUSH2 0x1E95 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BCE JUMP JUMPDEST PUSH2 0x1EA4 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x3C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B74 JUMP JUMPDEST PUSH2 0x1F2D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD DUP6 DUP6 DUP6 DUP6 CALLER PUSH2 0x1A17 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3F2 DUP5 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 MLOAD PUSH1 0x20 DUP6 ADD CALLVALUE CREATE2 SWAP2 POP PUSH2 0x408 DUP3 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xB8FDA7E00C6B06A2B54E58521BC5894FEE35F1090E5A3BB6390BFE2B98B497F7 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D8 PUSH2 0x4D2 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0x3E6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x20 DUP4 ADD CALLVALUE CREATE SWAP1 POP PUSH2 0x4F3 DUP2 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x545 DUP6 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x60 SHL SWAP1 POP PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP2 PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE DUP3 PUSH1 0x37 DUP3 PUSH1 0x0 CREATE2 SWAP4 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x635 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xB8FDA7E00C6B06A2B54E58521BC5894FEE35F1090E5A3BB6390BFE2B98B497F7 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE DUP8 PUSH1 0x40 MLOAD PUSH2 0x6A1 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x6DE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x6F3 DUP3 DUP3 DUP10 PUSH2 0x247D JUMP JUMPDEST POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D8 PUSH32 0x0 DUP4 PUSH2 0x84F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B3 PUSH2 0x7AA PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP6 DUP6 DUP6 CALLER PUSH2 0x1A17 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B3 DUP5 DUP5 DUP5 CALLER PUSH2 0x12A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 PUSH1 0x0 MSTORE PUSH1 0xFF PUSH1 0xB MSTORE8 DUP4 PUSH1 0x20 MSTORE PUSH32 0x21C35DBE1B344A2488CF3321D6CE542F8E9F305544FF09E4993A62319A497C1F PUSH1 0x40 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 PUSH1 0x14 MSTORE DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD694 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x34 MSTORE8 POP POP PUSH1 0x17 PUSH1 0x1E KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D8 DUP3 PUSH32 0x0 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH32 0x9400000000000000000000000000000000000000000000000000000000000000 PUSH2 0x887 PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH2 0x2D45 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 GT ISZERO PUSH2 0x902 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C55AB3B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST DUP4 PUSH1 0x0 SUB PUSH2 0x9C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD600000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH1 0x37 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH2 0x1152 JUMP JUMPDEST PUSH1 0x7F DUP5 GT PUSH2 0xA60 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD600000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP1 DUP4 AND PUSH1 0x21 DUP4 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP9 SWAP1 SHL AND PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0xF8 DUP7 SWAP1 SHL AND PUSH1 0x36 DUP3 ADD MSTORE PUSH1 0x37 ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0xFF DUP5 GT PUSH2 0xB1F JUMPI PUSH1 0x40 MLOAD PUSH32 0xD700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP1 DUP4 AND PUSH1 0x21 DUP4 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP9 SWAP1 SHL AND PUSH1 0x22 DUP4 ADD MSTORE PUSH32 0x8100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP4 ADD MSTORE PUSH1 0xF8 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x38 ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH2 0xFFFF DUP5 GT PUSH2 0xBFF JUMPI PUSH1 0x40 MLOAD PUSH32 0xD800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF0 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x39 ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH3 0xFFFFFF DUP5 GT PUSH2 0xCE0 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD900000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFF0000000000000000000000000000000000000000000000000000000000 PUSH1 0xE8 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3A ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP5 GT PUSH2 0xDC2 JUMPI PUSH1 0x40 MLOAD PUSH32 0xDA00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3B ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF DUP5 GT PUSH2 0xEA5 JUMPI PUSH1 0x40 MLOAD PUSH32 0xDB00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFF000000000000000000000000000000000000000000000000000000 PUSH1 0xD8 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3C ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP5 GT PUSH2 0xF89 JUMPI PUSH1 0x40 MLOAD PUSH32 0xDC00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8600000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 PUSH1 0xD0 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3D ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH7 0xFFFFFFFFFFFFFF DUP5 GT PUSH2 0x106E JUMPI PUSH1 0x40 MLOAD PUSH32 0xDD00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000 PUSH1 0xC8 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3E ADD PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH1 0x21 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP8 SWAP1 SHL AND PUSH1 0x22 DUP3 ADD MSTORE PUSH32 0x8800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x36 DUP3 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 PUSH1 0xC0 DUP7 SWAP1 SHL AND PUSH1 0x37 DUP3 ADD MSTORE PUSH1 0x3F ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D8 PUSH2 0x11E2 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP4 PUSH2 0x1505 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x126F PUSH2 0x1268 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x539 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x126F DUP4 DUP4 PUSH32 0x0 PUSH2 0x19ED JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD DUP5 MLOAD CREATE SWAP1 POP PUSH2 0x12B9 DUP2 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x20 ADD MLOAD DUP8 PUSH1 0x40 MLOAD PUSH2 0x1327 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1364 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1369 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x13C9 JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA57CA23900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND BALANCE ISZERO PUSH2 0x14FB JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1495 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x149A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x14FB JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xC2B3F44500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1511 DUP5 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x67363D3D37363D34F03D5260086018F300000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP3 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x15E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x2FEEA65DD4E9F9CBD86B74B7734210C59A1B2981B5B137BD0EE3E208200C9067 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH2 0x162C DUP4 PUSH2 0x823 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE DUP8 PUSH1 0x40 MLOAD PUSH2 0x1656 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1693 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1698 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x16A6 DUP2 DUP7 PUSH2 0x24FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16FD DUP8 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP DUP1 DUP7 MLOAD PUSH1 0x20 DUP9 ADD DUP7 MLOAD CREATE2 SWAP2 POP PUSH2 0x1714 DUP3 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xB8FDA7E00C6B06A2B54E58521BC5894FEE35F1090E5A3BB6390BFE2B98B497F7 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x40 MLOAD PUSH2 0x1784 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x17C1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x17C6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1826 JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA57CA23900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND BALANCE ISZERO PUSH2 0x1958 JUMPI DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x18F2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18F7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x1958 JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xC2B3F44500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B3 PUSH2 0x19E4 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP6 DUP6 DUP6 CALLER PUSH2 0x16F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP4 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE DUP3 DUP2 MSTORE PUSH1 0xB DUP2 ADD SWAP1 POP PUSH1 0xFF DUP2 MSTORE8 PUSH1 0x55 SWAP1 KECCAK256 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A23 DUP8 PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x67363D3D37363D34F03D5260086018F300000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP3 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1AF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x2FEEA65DD4E9F9CBD86B74B7734210C59A1B2981B5B137BD0EE3E208200C9067 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH2 0x1B3E DUP4 PUSH2 0x823 JUMP JUMPDEST SWAP4 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x40 MLOAD PUSH2 0x1B6C SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BA9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BAE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x1BBC DUP2 DUP7 PUSH2 0x24FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x40 MLOAD PUSH2 0x1C29 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C66 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C6B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x1CCC JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xA57CA23900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND BALANCE ISZERO PUSH2 0x1DFE JUMPI DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1D98 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1D9D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 PUSH2 0x1DFE JUMPI PUSH32 0x0 DUP2 PUSH1 0x40 MLOAD PUSH32 0xC2B3F44500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD PUSH2 0x1E8C PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 PUSH2 0x16F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD DUP6 DUP6 DUP6 DUP6 CALLER PUSH2 0x16F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD PUSH2 0x1F24 PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP7 DUP7 DUP7 DUP7 PUSH2 0x1A17 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x60 SHL SWAP1 POP PUSH1 0x40 MLOAD PUSH32 0x3D602D80600A3D3981F3363D3D373D3D3D363D73000000000000000000000000 DUP2 MSTORE DUP2 PUSH1 0x14 DUP3 ADD MSTORE PUSH32 0x5AF43D82803E903D91602B57FD5BF30000000000000000000000000000000000 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x37 DUP2 PUSH1 0x0 CREATE SWAP3 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2016 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH32 0x4DB17DD5E4732FB6DA34A148104A592783CA119A1E7BB8829EBA6CBADEF0B511 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE DUP7 PUSH1 0x40 MLOAD PUSH2 0x2080 SWAP2 SWAP1 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x20BD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x20C2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x20D2 DUP3 DUP3 DUP9 PUSH2 0x247D JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x20E9 DUP5 PUSH2 0x25B3 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2102 JUMPI PUSH2 0x2102 PUSH2 0x2E02 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2120 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x211E JUMPI PUSH2 0x211E PUSH2 0x2E02 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x215E JUMPI PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x20 DUP3 ADD MSTORE CHAINID SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP3 POP PUSH2 0x23CC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2172 JUMPI PUSH2 0x2172 PUSH2 0x2E02 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2190 JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x218E JUMPI PUSH2 0x218E PUSH2 0x2E02 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x21B0 JUMPI PUSH2 0x21A9 CALLER DUP6 PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP3 POP PUSH2 0x23CC JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x21C4 JUMPI PUSH2 0x21C4 PUSH2 0x2E02 JUMP JUMPDEST SUB PUSH2 0x2233 JUMPI PUSH1 0x40 MLOAD PUSH32 0x13B3A2A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2247 JUMPI PUSH2 0x2247 PUSH2 0x2E02 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x2265 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2263 JUMPI PUSH2 0x2263 PUSH2 0x2E02 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x227E JUMPI PUSH2 0x21A9 CHAINID DUP6 PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2292 JUMPI PUSH2 0x2292 PUSH2 0x2E02 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x22B0 JUMPI POP PUSH1 0x2 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22AE JUMPI PUSH2 0x22AE PUSH2 0x2E02 JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x231F JUMPI PUSH1 0x40 MLOAD PUSH32 0x13B3A2A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST PUSH2 0x239A PUSH1 0x40 DUP1 MLOAD NUMBER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD BLOCKHASH PUSH1 0x20 DUP4 ADD MSTORE COINBASE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE TIMESTAMP PUSH1 0x80 DUP3 ADD MSTORE PREVRANDAO PUSH1 0xA0 DUP3 ADD MSTORE CHAINID PUSH1 0xC0 DUP3 ADD MSTORE CALLER PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH2 0x100 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP5 SUB PUSH2 0x23A6 JUMPI DUP4 PUSH2 0x23C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 JUMPDEST SWAP3 POP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 PUSH2 0x240B JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x247A JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST POP JUMP JUMPDEST DUP3 ISZERO DUP1 PUSH2 0x249F JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x24FA JUMPI PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH32 0xA57CA23900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62C SWAP3 SWAP2 SWAP1 PUSH2 0x2D94 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 ISZERO DUP1 PUSH2 0x2520 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO JUMPDEST DUP1 PUSH2 0x2540 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x25AF JUMPI PUSH1 0x40 MLOAD PUSH32 0xC05CEE7A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x62C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP4 SWAP1 SHR CALLER EQ DUP1 ISZERO PUSH2 0x2610 JUMPI POP DUP3 PUSH1 0x14 BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x2620 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR CALLER EQ DUP1 ISZERO PUSH2 0x265A JUMPI POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x14 DUP5 SWAP1 BYTE PUSH1 0xF8 SHL AND ISZERO JUMPDEST ISZERO PUSH2 0x266B JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x1 SWAP2 POP SWAP2 JUMP JUMPDEST CALLER PUSH1 0x60 DUP5 SWAP1 SHR SUB PUSH2 0x2682 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR ISZERO DUP1 ISZERO PUSH2 0x26DB JUMPI POP DUP3 PUSH1 0x14 BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x26EC JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x0 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR ISZERO DUP1 ISZERO PUSH2 0x2725 JUMPI POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x14 DUP5 SWAP1 BYTE PUSH1 0xF8 SHL AND ISZERO JUMPDEST ISZERO PUSH2 0x2735 JUMPI POP PUSH1 0x1 SWAP1 POP DUP1 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHR PUSH2 0x274A JUMPI POP PUSH1 0x1 SWAP1 POP PUSH1 0x2 SWAP2 POP SWAP2 JUMP JUMPDEST DUP3 PUSH1 0x14 BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 SUB PUSH2 0x27A5 JUMPI POP PUSH1 0x2 SWAP1 POP PUSH1 0x0 SWAP2 POP SWAP2 JUMP JUMPDEST DUP3 PUSH1 0x14 BYTE PUSH1 0xF8 SHL PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x0 SUB PUSH2 0x27E1 JUMPI POP PUSH1 0x2 SWAP1 POP PUSH1 0x1 SWAP2 POP SWAP2 JUMP JUMPDEST POP PUSH1 0x2 SWAP1 POP DUP1 SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x282C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2847 JUMPI PUSH2 0x2847 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x288D JUMPI PUSH2 0x288D PUSH2 0x27EC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x28A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x28FB JUMPI PUSH2 0x28FB PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x292B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x294A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2956 DUP9 DUP4 DUP10 ADD PUSH2 0x281B JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x296C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2979 DUP8 DUP3 DUP9 ADD PUSH2 0x281B JUMP JUMPDEST SWAP3 POP POP PUSH2 0x2989 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0x28C6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x29D1 DUP6 DUP3 DUP7 ADD PUSH2 0x281B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7B3 DUP5 DUP3 DUP6 ADD PUSH2 0x281B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2A34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x2A5E PUSH1 0x20 DUP6 ADD PUSH2 0x2A10 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A86 DUP7 DUP3 DUP8 ADD PUSH2 0x281B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2AD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2AE2 DUP8 DUP4 DUP9 ADD PUSH2 0x281B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2AF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B05 DUP7 DUP3 DUP8 ADD PUSH2 0x281B JUMP JUMPDEST SWAP3 POP POP PUSH2 0x2B15 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x28C6 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x2B41 PUSH1 0x20 DUP5 ADD PUSH2 0x2A10 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B66 DUP4 PUSH2 0x2A10 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2B90 DUP4 PUSH2 0x2A10 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2BE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2BFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C08 DUP9 DUP4 DUP10 ADD PUSH2 0x281B JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C2B DUP8 DUP3 DUP9 ADD PUSH2 0x281B JUMP JUMPDEST SWAP4 POP POP PUSH2 0x2C3B DUP7 PUSH1 0x40 DUP8 ADD PUSH2 0x28C6 JUMP JUMPDEST SWAP2 POP PUSH2 0x2989 PUSH1 0x80 DUP7 ADD PUSH2 0x2A10 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2C61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C8C DUP10 DUP4 DUP11 ADD PUSH2 0x281B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CAF DUP9 DUP3 DUP10 ADD PUSH2 0x281B JUMP JUMPDEST SWAP4 POP POP PUSH2 0x2CBF DUP8 PUSH1 0x60 DUP9 ADD PUSH2 0x28C6 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CCD PUSH1 0xA0 DUP8 ADD PUSH2 0x2A10 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2B15 PUSH1 0x40 DUP6 ADD PUSH2 0x2A10 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D08 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2D3B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2D05 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2D8D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2DCF DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2D05 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG1 PUSH5 0x736F6C6343 STOP ADDMOD OR STOP EXP ","sourceMap":"1176:58382:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43057:537;;;;;;:::i;:::-;;:::i;:::-;;;2365:42:2;2353:55;;;2335:74;;2323:2;2308:18;43057:537:0;;;;;;;18043:458;;;;;;:::i;:::-;;:::i;19138:309::-;;;;;;:::i;:::-;;:::i;5773:358::-;;;;;;:::i;:::-;;:::i;28426:1274::-;;;;;;:::i;:::-;;:::i;17004:179::-;;;;;;;;;;-1:-1:-1;17004:179:0;;;;;:::i;:::-;;:::i;47277:526::-;;;;;;:::i;:::-;;:::i;9530:295::-;;;;;;:::i;:::-;;:::i;48496:663::-;;;;;;;;;;-1:-1:-1;48496:663:0;;;;;:::i;:::-;;:::i;49802:178::-;;;;;;;;;;-1:-1:-1;49802:178:0;;;;;:::i;:::-;;:::i;13113:2706::-;;;;;;;;;;-1:-1:-1;13113:2706:0;;;;;:::i;:::-;;:::i;37545:309::-;;;;;;:::i;:::-;;:::i;30801:356::-;;;;;;:::i;:::-;;:::i;34126:228::-;;;;;;;;;;-1:-1:-1;34126:228:0;;;;;:::i;:::-;;:::i;7308:1118::-;;;;;;:::i;:::-;;:::i;35725:902::-;;;;;;:::i;:::-;;:::i;20729:1226::-;;;;;;:::i;:::-;;:::i;26884:526::-;;;;;;:::i;:::-;;:::i;31948:1673::-;;;;;;;;;;-1:-1:-1;31948:1673:0;;;;;:::i;:::-;;:::i;39643:1698::-;;;;;;:::i;:::-;;:::i;25047:560::-;;;;;;:::i;:::-;;:::i;23160:537::-;;;;;;:::i;:::-;;:::i;45194:560::-;;;;;;:::i;:::-;;:::i;10727:1144::-;;;;;;:::i;:::-;;:::i;43057:537::-;43227:19;43408:179;43449:4;43477:8;43505:4;43531:6;43566:10;43408:20;:179::i;:::-;43394:193;43057:537;-1:-1:-1;;;;;43057:537:0:o;18043:458::-;18127:19;18158;18180:20;18194:4;18180:6;:20::i;:::-;18158:42;;18323:11;18312:8;18306:15;18299:4;18289:8;18285:19;18272:11;18264:71;18249:86;;18354:62;18403:11;18354:34;:62::i;:::-;18431:63;;18481:11;;18431:63;;;;;;;;;18148:353;18043:458;;;;:::o;19138:309::-;19208:19;19382:58;19403:15;56244:1186;;;57182:12;:17;;;57172:28;57197:2;56244:1186;;17401:25:2;57222:14:0;17503:18:2;;;17496:43;;;;17555:18;;;17548:34;;;;57292:15:0;17598:18:2;;;17591:34;57329:16:0;17641:19:2;;;17634:35;57367:13:0;17685:19:2;;;17678:35;57402:10:0;17729:19:2;;;17722:44;-1:-1:-1;;17373:19:2;;56244:1186:0;;;;;;;;;;;;56217:1227;;;;;;56210:1234;;56114:1347;;19403:15;19430:8;19382:13;:58::i;:::-;19368:72;19138:309;-1:-1:-1;;19138:309:0:o;5773:358::-;5842:19;5974:8;5968:15;5961:4;5951:8;5947:19;5934:11;5927:57;5912:72;;6003:62;6052:11;6003:34;:62::i;:::-;6080:44;;;;;;;;;;;5773:358;;;:::o;28426:1274::-;28565:13;28590:19;28612:20;28626:4;28612:6;:20::i;:::-;28590:42;;28642:29;28682:14;28674:23;;28642:55;;28765:4;28759:11;28830:100;28807:5;28783:161;28982:21;28975:4;28968:5;28964:16;28957:47;29075:100;29052:4;29045:5;29041:16;29017:172;29235:11;29229:4;29222:5;29219:1;29211:36;29202:45;-1:-1:-1;;29270:19:0;;;29266:97;;29312:40;;;;;2365:42:2;29345:5:0;2353:55:2;29312:40:0;;;2335:74:2;2308:18;;29312:40:0;;;;;;;;29266:97;29377:57;;29421:11;;29377:57;;;;;;;;;29446:12;29460:23;29487:5;:10;;29505:9;29516:4;29487:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29445:76;;;;29531:162;29595:7;29628:10;29668:14;29531:40;:162::i;:::-;28580:1120;;;;28426:1274;;;;;:::o;17004:179::-;17070:23;17123:53;17155:5;17169;17123:20;:53::i;47277:526::-;47425:19;47606:190;47647:15;56244:1186;;;57182:12;:17;;;57172:28;57197:2;56244:1186;;17401:25:2;57222:14:0;17503:18:2;;;17496:43;;;;17555:18;;;17548:34;;;;57292:15:0;17598:18:2;;;17591:34;57329:16:0;17641:19:2;;;17634:35;57367:13:0;17685:19:2;;;17678:35;57402:10:0;17729:19:2;;;17722:44;-1:-1:-1;;17373:19:2;;56244:1186:0;;;;;;;;;;;;56217:1227;;;;;;56210:1234;;56114:1347;;47647:15;47686:8;47714:4;47740:6;47775:10;47606:20;:190::i;:::-;47592:204;47277:526;-1:-1:-1;;;;47277:526:0:o;9530:295::-;9677:19;9722:96;9753:8;9769:4;9783:6;9806:10;9722:19;:96::i;48496:663::-;48580:23;48671:4;48665:11;48702:8;48696:4;48689:22;48738:4;48732;48724:19;48769:4;48763;48756:18;48833:100;48811:4;48787:160;48989:4;48983;48973:21;48967:4;48960:35;49021:3;49015:4;49008:17;;49051:6;49045:4;49038:20;49085:4;49079;49071:19;-1:-1:-1;;49138:4:0;49132;49122:21;;48496:663;-1:-1:-1;48496:663:0:o;49802:178::-;49868:23;49921:52;49950:4;49966:5;49921:21;:52::i;13113:2706::-;13197:23;13232:17;13272:12;13496:20;13515:1;13496:16;:20;:::i;:::-;13488:28;;:5;:28;13484:101;;;13539:35;;;;;2365:42:2;13567:5:0;2353:55:2;13539:35:0;;;2335:74:2;2308:18;;13539:35:0;2189:226:2;13484:101:0;13755:5;13764:4;13755:13;13751:1991;;13791:59;;13808:12;13791:59;;;9040:28:2;8965:66;9097:15;;9084:11;;;9077:36;9163:66;9150:2;9146:15;;;9142:88;9129:11;;;9122:109;13837:12:0;9247::2;;;9240:37;9293:12;;13791:59:0;;;;;;;;;;;;;13784:66;;13751:1991;;;14058:4;14049:5;:13;14045:1697;;14085:59;;14102:12;14085:59;;;9606:28:2;9531:66;9663:15;;;9650:11;;;9643:36;9729:66;9716:2;9712:15;;;9708:88;9695:11;;;9688:109;9835:3;9831:16;;;9827:25;9813:12;;;9806:47;9869:12;;14085:59:0;9316:571:2;14045:1697:0;14650:15;14641:24;;14637:1105;;14688:73;;14705:12;14688:73;;;10208:28:2;10133:66;10265:15;;;10252:11;;;10245:36;10331:66;10318:2;10314:15;;;10310:88;10297:11;;;10290:109;14734:12:0;10415::2;;;10408:37;10483:3;10479:16;;;10475:25;10461:12;;;10454:47;10517:12;;14688:73:0;9892:643:2;14637:1105:0;14791:16;14782:25;;14778:964;;14830:74;;14847:12;14830:74;;;10858:28:2;10783:66;10915:15;;10902:11;;;10895:36;10981:66;10968:2;10964:15;;;10960:88;10947:11;;;10940:109;14876:12:0;11065::2;;;11058:37;11147:66;11133:3;11129:16;;;11125:89;11111:12;;;11104:111;11231:12;;14830:74:0;10540:709:2;14778:964:0;14934:16;14925:25;;14921:821;;14973:74;;14990:12;14973:74;;;11572:28:2;11497:66;11629:15;;11616:11;;;11609:36;11695:66;11682:2;11678:15;;;11674:88;11661:11;;;11654:109;15019:12:0;11779::2;;;11772:37;11861:66;11847:3;11843:16;;;11839:89;11825:12;;;11818:111;11945:12;;14973:74:0;11254:709:2;14921:821:0;15077:16;15068:25;;15064:678;;15116:74;;15133:12;15116:74;;;12286:28:2;12211:66;12343:15;;12330:11;;;12323:36;12409:66;12396:2;12392:15;;;12388:88;12375:11;;;12368:109;15162:12:0;12493::2;;;12486:37;12575:66;12561:3;12557:16;;;12553:89;12539:12;;;12532:111;12659:12;;15116:74:0;11968:709:2;15064:678:0;15220:16;15211:25;;15207:535;;15259:74;;15276:12;15259:74;;;13000:28:2;12925:66;13057:15;;13044:11;;;13037:36;13123:66;13110:2;13106:15;;;13102:88;13089:11;;;13082:109;15305:12:0;13207::2;;;13200:37;13289:66;13275:3;13271:16;;;13267:89;13253:12;;;13246:111;13373:12;;15259:74:0;12682:709:2;15207:535:0;15363:16;15354:25;;15350:392;;15402:74;;15419:12;15402:74;;;13714:28:2;13639:66;13771:15;;13758:11;;;13751:36;13837:66;13824:2;13820:15;;;13816:88;13803:11;;;13796:109;15448:12:0;13921::2;;;13914:37;14003:66;13989:3;13985:16;;;13981:89;13967:12;;;13960:111;14087:12;;15402:74:0;13396:709:2;15350:392:0;15506:16;15497:25;;15493:249;;15545:74;;15562:12;15545:74;;;14428:28:2;14353:66;14485:15;;14472:11;;;14465:36;14551:66;14538:2;14534:15;;;14530:88;14517:11;;;14510:109;15591:12:0;14635::2;;;14628:37;14717:66;14703:3;14699:16;;;14695:89;14681:12;;;14674:111;14801:12;;15545:74:0;14110:709:2;15493:249:0;15657:74;;15674:12;15657:74;;;15142:28:2;15067:66;15199:15;;15186:11;;;15179:36;15265:66;15252:2;15248:15;;;15244:88;15231:11;;;15224:109;15703:12:0;15349::2;;;15342:37;15431:66;15417:3;15413:16;;;15409:89;15395:12;;;15388:111;15515:12;;15657:74:0;;;;;;;;;;;;15650:81;;15493:249;-1:-1:-1;15794:15:0;;;;;;;;13113:2706;-1:-1:-1;;;13113:2706:0:o;37545:309::-;37615:19;37789:58;37810:15;56244:1186;;;57182:12;:17;;;57172:28;57197:2;56244:1186;;17401:25:2;57222:14:0;17503:18:2;;;17496:43;;;;17555:18;;;17548:34;;;;57292:15:0;17598:18:2;;;17591:34;57329:16:0;17641:19:2;;;17634:35;57367:13:0;17685:19:2;;;17678:35;57402:10:0;17729:19:2;;;17722:44;-1:-1:-1;;17373:19:2;;56244:1186:0;;;;;;;;;;;;56217:1227;;;;;;56210:1234;;56114:1347;;37810:15;37837:8;37789:13;:58::i;30801:356::-;30896:13;31063:87;31089:15;56244:1186;;;57182:12;:17;;;57172:28;57197:2;56244:1186;;17401:25:2;57222:14:0;17503:18:2;;;17496:43;;;;17555:18;;;17548:34;;;;57292:15:0;17598:18:2;;;17591:34;57329:16:0;17641:19:2;;;17634:35;57367:13:0;17685:19:2;;;17678:35;57402:10:0;17729:19:2;;;17722:44;-1:-1:-1;;17373:19:2;;56244:1186:0;;;;;;;;;;;;56217:1227;;;;;;56210:1234;;56114:1347;;31089:15;31122:14;31144:4;31063:18;:87::i;:::-;31055:95;30801:356;-1:-1:-1;;;30801:356:0:o;34126:228::-;34214:23;34267:80;34296:4;34316:12;34340:5;34267:21;:80::i;7308:1118::-;7486:19;7620:8;7614:15;7607:4;7597:8;7593:19;7584:6;7578:13;7571:59;7556:74;;7649:62;7698:11;7649:34;:62::i;:::-;7726:44;;;;;;;;;;;7782:12;7796:23;7823:11;:16;;7847:6;:21;;;7870:4;7823:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7781:94;;;;7890:7;7885:116;;7959:5;7978:10;7920:70;;;;;;;;;;;;:::i;7885:116::-;8015:13;:5;:13;;:18;8011:409;;8237:13;:18;;8263:5;:13;;;8237:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8213:68:0;;-1:-1:-1;8213:68:0;-1:-1:-1;8213:68:0;8295:115;;8364:5;8383:10;8334:61;;;;;;;;;;;;:::i;8295:115::-;7507:919;;7308:1118;;;;;;:::o;35725:902::-;35809:19;35840;35862:20;35876:4;35862:6;:20::i;:::-;35840:42;;35892:31;:86;;;;;;;;;;;;;;;;;;;35988:13;36126:11;36105:18;36099:25;36094:2;36074:18;36070:27;36067:1;36059:79;36050:88;-1:-1:-1;36161:19:0;;;36157:97;;36203:40;;;;;2365:42:2;36236:5:0;2353:55:2;36203:40:0;;;2335:74:2;2308:18;;36203:40:0;2189:226:2;36157:97:0;36268:69;;36324:11;;36268:69;;;;;;;;;36362:42;36391:11;36362:21;:42::i;:::-;36348:56;;36415:12;36433:5;:10;;36451:9;36462:8;36433:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36414:57;;;36481:80;36526:7;36548:11;36481:34;:80::i;:::-;36576:44;;;;;;;;;;;35830:797;;;;35725:902;;;;:::o;20729:1226::-;20930:19;20961;20983:20;20997:4;20983:6;:20::i;:::-;20961:42;;21128:11;21117:8;21111:15;21104:4;21094:8;21090:19;21081:6;21075:13;21067:73;21052:88;;21159:62;21208:11;21159:34;:62::i;:::-;21236:63;;21286:11;;21236:63;;;;;;;;;21311:12;21325:23;21352:11;:16;;21376:6;:21;;;21399:4;21352:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21310:94;;;;21419:7;21414:116;;21488:5;21507:10;21449:70;;;;;;;;;;;;:::i;21414:116::-;21544:13;:5;:13;;:18;21540:409;;21766:13;:18;;21792:5;:13;;;21766:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21742:68:0;;-1:-1:-1;21742:68:0;-1:-1:-1;21742:68:0;21824:115;;21893:5;21912:10;21863:61;;;;;;;;;;;;:::i;21824:115::-;20951:1004;;;20729:1226;;;;;;;:::o;26884:526::-;27032:19;27213:190;27254:15;56244:1186;;;57182:12;:17;;;57172:28;57197:2;56244:1186;;17401:25:2;57222:14:0;17503:18:2;;;17496:43;;;;17555:18;;;17548:34;;;;57292:15:0;17598:18:2;;;17591:34;57329:16:0;17641:19:2;;;17634:35;57367:13:0;17685:19:2;;;17678:35;57402:10:0;17729:19:2;;;17722:44;-1:-1:-1;;17373:19:2;;56244:1186:0;;;;;;;;;;;;56217:1227;;;;;;56210:1234;;56114:1347;;27254:15;27293:8;27321:4;27347:6;27382:10;27213:20;:190::i;31948:1673::-;32084:23;33351:4;33345:11;33392:12;33385:4;33380:3;33376:14;33369:36;33441:4;33434;33429:3;33425:14;33418:28;33471:8;33466:3;33459:21;33515:4;33510:3;33506:14;33493:27;;33548:4;33541:5;33533:20;33602:2;33585:20;;;31948:1673;-1:-1:-1;;;;31948:1673:0:o;39643:1698::-;39844:19;39875;39897:20;39911:4;39897:6;:20::i;:::-;39875:42;;39927:31;:86;;;;;;;;;;;;;;;;;;;40023:13;40161:11;40140:18;40134:25;40129:2;40109:18;40105:27;40102:1;40094:79;40085:88;-1:-1:-1;40196:19:0;;;40192:97;;40238:40;;;;;2365:42:2;40271:5:0;2353:55:2;40238:40:0;;;2335:74:2;2308:18;;40238:40:0;2189:226:2;40192:97:0;40303:69;;40359:11;;40303:69;;;;;;;;;40397:42;40426:11;40397:21;:42::i;:::-;40383:56;;40450:12;40468:5;:10;;40486:6;:24;;;40512:8;40468:53;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40449:72;;;40531:80;40576:7;40598:11;40531:34;:80::i;:::-;40626:44;;;;;;;;;;;40681:23;40738:11;:16;;40762:6;:21;;;40785:4;40738:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40714:76:0;;-1:-1:-1;40714:76:0;-1:-1:-1;40714:76:0;40800:116;;40874:5;40893:10;40835:70;;;;;;;;;;;;:::i;40800:116::-;40930:13;:5;:13;;:18;40926:409;;41152:13;:18;;41178:5;:13;;;41152:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41128:68:0;;-1:-1:-1;41128:68:0;-1:-1:-1;41128:68:0;41210:115;;41279:5;41298:10;41249:61;;;;;;;;;;;;:::i;41210:115::-;39865:1476;;;;;39643:1698;;;;;;;:::o;25047:560::-;25226:19;25407:193;25448:15;56244:1186;;;57182:12;:17;;;57172:28;57197:2;56244:1186;;17401:25:2;57222:14:0;17503:18:2;;;17496:43;;;;17555:18;;;17548:34;;;;57292:15:0;17598:18:2;;;17591:34;57329:16:0;17641:19:2;;;17634:35;57367:13:0;17685:19:2;;;17678:35;57402:10:0;17729:19:2;;;17722:44;-1:-1:-1;;17373:19:2;;56244:1186:0;;;;;;;;;;;;56217:1227;;;;;;56210:1234;;56114:1347;;25448:15;25487:8;25515:4;25541:6;25576:13;25407:20;:193::i;23160:537::-;23330:19;23511:179;23552:4;23580:8;23608:4;23634:6;23669:10;23511:20;:179::i;45194:560::-;45373:19;45554:193;45595:15;56244:1186;;;57182:12;:17;;;57172:28;57197:2;56244:1186;;17401:25:2;57222:14:0;17503:18:2;;;17496:43;;;;17555:18;;;17548:34;;;;57292:15:0;17598:18:2;;;17591:34;57329:16:0;17641:19:2;;;17634:35;57367:13:0;17685:19:2;;;17678:35;57402:10:0;17729:19:2;;;17722:44;-1:-1:-1;;17373:19:2;;56244:1186:0;;;;;;;;;;;;56217:1227;;;;;;56210:1234;;56114:1347;;45595:15;45634:8;45662:4;45688:6;45723:13;45554:20;:193::i;10727:1144::-;10821:13;10846:29;10886:14;10878:23;;10846:55;;10969:4;10963:11;11034:100;11011:5;10987:161;11186:21;11179:4;11172:5;11168:16;11161:47;11279:100;11256:4;11249:5;11245:16;11221:172;11432:4;11425:5;11422:1;11415:22;11406:31;-1:-1:-1;;11460:19:0;;;11456:97;;11502:40;;;;;2365:42:2;11535:5:0;2353:55:2;11502:40:0;;;2335:74:2;2308:18;;11502:40:0;2189:226:2;11456:97:0;11567:38;;;;;;;;;;;11617:12;11631:23;11658:5;:10;;11676:9;11687:4;11658:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11616:76;;;;11702:162;11766:7;11799:10;11839:14;11702:40;:162::i;:::-;10836:1035;;;10727:1144;;;;:::o;51171:2025::-;51224:19;51256:23;51281:45;51330:24;51348:4;51330:10;:24::i;:::-;51255:99;;-1:-1:-1;51255:99:0;-1:-1:-1;51384:21:0;51369:11;:36;;;;;;;;:::i;:::-;;:93;;;;-1:-1:-1;51435:27:0;51409:22;:53;;;;;;;;:::i;:::-;;51369:93;51365:1825;;;51607:43;;;51618:10;51607:43;;;16717:74:2;51630:13:0;16807:18:2;;;16800:34;;;;16850:18;;;16843:34;;;16690:18;;51607:43:0;;;;;;;;;;;;51597:54;;;;;;51583:68;;51365:1825;;;51687:21;51672:11;:36;;;;;;;;:::i;:::-;;:94;;;;-1:-1:-1;51738:28:0;51712:22;:54;;;;;;;;:::i;:::-;;51672:94;51668:1522;;;51863:67;51906:10;51924:4;55749:12;55812:15;;;55847:4;55840:15;55892:4;55876:21;;;55680:233;51863:67;51849:81;;51668:1522;;;51966:21;51951:11;:36;;;;;;;;:::i;:::-;;51947:1243;;52117:29;;;;;2365:42:2;52139:5:0;2353:55:2;52117:29:0;;;2335:74:2;2308:18;;52117:29:0;2189:226:2;51947:1243:0;52182:23;52167:11;:38;;;;;;;;:::i;:::-;;:95;;;;-1:-1:-1;52235:27:0;52209:22;:53;;;;;;;;:::i;:::-;;52167:95;52163:1027;;;52514:52;52541:13;52560:4;55749:12;55812:15;;;55847:4;55840:15;55892:4;55876:21;;;55680:233;52163:1027;52615:23;52600:11;:38;;;;;;;;:::i;:::-;;:102;;;;-1:-1:-1;52668:34:0;52642:22;:60;;;;;;;;:::i;:::-;;52600:102;52583:607;;;52841:29;;;;;2365:42:2;52863:5:0;2353:55:2;52841:29:0;;;2335:74:2;2308:18;;52841:29:0;2189:226:2;52583:607:0;53126:15;56244:1186;;;57182:12;:17;;;57172:28;57197:2;56244:1186;;17401:25:2;57222:14:0;17503:18:2;;;17496:43;;;;17555:18;;;17548:34;;;;57292:15:0;17598:18:2;;;17591:34;57329:16:0;17641:19:2;;;17634:35;57367:13:0;17685:19:2;;;17678:35;57402:10:0;17729:19:2;;;17722:44;-1:-1:-1;;17373:19:2;;56244:1186:0;;;;;;;;;;;;56217:1227;;;;;;56210:1234;;56114:1347;;53126:15;53118:4;:23;53117:62;;53175:4;53117:62;;;53155:16;;;;;;17034:25:2;;;17007:18;53155:16:0;;;;;;;;;;;;53145:27;;;;;;53117:62;53103:76;;52583:607;51245:1951;;51171:2025;;;:::o;58660:230::-;58753:25;;;;;:57;;-1:-1:-1;58782:23:0;;;;:28;58753:57;58749:135;;;58833:40;;;;;2365:42:2;58866:5:0;2353:55:2;58833:40:0;;;2335:74:2;2308:18;;58833:40:0;2189:226:2;58749:135:0;58660:230;:::o;59232:324::-;59404:7;59403:8;:43;;;-1:-1:-1;59415:26:0;;;;:31;59403:43;59399:151;;;59508:5;59527:10;59469:70;;;;;;;;;;;;:::i;59399:151::-;59232:324;;;:::o;57683:808::-;58343:7;58342:8;:37;;;-1:-1:-1;58354:25:0;;;;58342:37;:69;;;-1:-1:-1;58383:23:0;;;;:28;58342:69;58338:147;;;58434:40;;;;;2365:42:2;58467:5:0;2353:55:2;58434:40:0;;;2335:74:2;2308:18;;58434:40:0;2189:226:2;58338:147:0;57683:808;;:::o;53650:1723::-;53721:23;;53807:22;;;;53833:10;53807:36;:67;;;;-1:-1:-1;53854:4:0;53859:2;53854:8;;;53847:27;;;;;53807:67;53803:1564;;;-1:-1:-1;53931:21:0;;-1:-1:-1;53931:21:0;53650:1723;;;:::o;53803:1564::-;54003:22;;;;54029:10;54003:36;:67;;;;-1:-1:-1;54043:27:0;54055:2;54050:8;;;;;54043:27;;54003:67;53999:1368;;;-1:-1:-1;54127:21:0;;-1:-1:-1;54150:28:0;53650:1723;;;:::o;53999:1368::-;54226:10;54200:22;;;;:36;54196:1171;;-1:-1:-1;54293:21:0;;-1:-1:-1;54316:34:0;53650:1723;;;:::o;54196:1171::-;54372:22;;;;:36;:67;;;;-1:-1:-1;54419:4:0;54424:2;54419:8;;;54412:27;;;;;54372:67;54368:999;;;-1:-1:-1;54496:23:0;;-1:-1:-1;54521:27:0;53650:1723;;;:::o;54368:999::-;54570:22;;;;:36;:67;;;;-1:-1:-1;54610:27:0;54622:2;54617:8;;;;;54610:27;;54570:67;54566:801;;;-1:-1:-1;54694:23:0;;-1:-1:-1;54694:23:0;53650:1723;;;:::o;54566:801::-;54769:22;;;;54765:602;;-1:-1:-1;54862:23:0;;-1:-1:-1;54887:34:0;53650:1723;;;:::o;54765:602::-;54950:4;54955:2;54950:8;;;54943:27;;;;;54939:428;;-1:-1:-1;55027:18:0;;-1:-1:-1;55047:27:0;53650:1723;;;:::o;54939:428::-;55103:4;55108:2;55103:8;;;55096:27;;;;;55092:275;;-1:-1:-1;55180:18:0;;-1:-1:-1;55200:28:0;53650:1723;;;:::o;55092:275::-;-1:-1:-1;55301:18:0;;-1:-1:-1;55301:18:0;53650:1723;;;:::o;14:184:2:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:777;245:5;298:3;291:4;283:6;279:17;275:27;265:55;;316:1;313;306:12;265:55;352:6;339:20;378:18;415:2;411;408:10;405:36;;;421:18;;:::i;:::-;555:2;549:9;617:4;609:13;;460:66;605:22;;;629:2;601:31;597:40;585:53;;;653:18;;;673:22;;;650:46;647:72;;;699:18;;:::i;:::-;739:10;735:2;728:22;774:2;766:6;759:18;820:3;813:4;808:2;800:6;796:15;792:26;789:35;786:55;;;837:1;834;827:12;786:55;901:2;894:4;886:6;882:17;875:4;867:6;863:17;850:54;948:1;941:4;936:2;928:6;924:15;920:26;913:37;968:6;959:15;;;;;;203:777;;;;:::o;985:475::-;1038:5;1086:4;1074:9;1069:3;1065:19;1061:30;1058:50;;;1104:1;1101;1094:12;1058:50;1137:4;1131:11;1181:4;1173:6;1169:17;1252:6;1240:10;1237:22;1216:18;1204:10;1201:34;1198:62;1195:88;;;1263:18;;:::i;:::-;1299:4;1292:24;1364:23;;1349:39;;1449:2;1434:18;;;1421:32;1404:15;;;1397:57;;;;-1:-1:-1;1334:6:2;985:475;-1:-1:-1;985:475:2:o;1465:719::-;1591:6;1599;1607;1615;1668:3;1656:9;1647:7;1643:23;1639:33;1636:53;;;1685:1;1682;1675:12;1636:53;1721:9;1708:23;1698:33;;1782:2;1771:9;1767:18;1754:32;1805:18;1846:2;1838:6;1835:14;1832:34;;;1862:1;1859;1852:12;1832:34;1885:49;1926:7;1917:6;1906:9;1902:22;1885:49;:::i;:::-;1875:59;;1987:2;1976:9;1972:18;1959:32;1943:48;;2016:2;2006:8;2003:16;2000:36;;;2032:1;2029;2022:12;2000:36;;2055:51;2098:7;2087:8;2076:9;2072:24;2055:51;:::i;:::-;2045:61;;;2125:53;2170:7;2165:2;2154:9;2150:18;2125:53;:::i;:::-;2115:63;;1465:719;;;;;;;:::o;2420:388::-;2497:6;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2610:9;2597:23;2587:33;;2671:2;2660:9;2656:18;2643:32;2698:18;2690:6;2687:30;2684:50;;;2730:1;2727;2720:12;2684:50;2753:49;2794:7;2785:6;2774:9;2770:22;2753:49;:::i;:::-;2743:59;;;2420:388;;;;;:::o;2813:320::-;2881:6;2934:2;2922:9;2913:7;2909:23;2905:32;2902:52;;;2950:1;2947;2940:12;2902:52;2990:9;2977:23;3023:18;3015:6;3012:30;3009:50;;;3055:1;3052;3045:12;3009:50;3078:49;3119:7;3110:6;3099:9;3095:22;3078:49;:::i;3138:196::-;3206:20;;3266:42;3255:54;;3245:65;;3235:93;;3324:1;3321;3314:12;3235:93;3138:196;;;:::o;3339:462::-;3425:6;3433;3441;3494:2;3482:9;3473:7;3469:23;3465:32;3462:52;;;3510:1;3507;3500:12;3462:52;3546:9;3533:23;3523:33;;3575:38;3609:2;3598:9;3594:18;3575:38;:::i;:::-;3565:48;;3664:2;3653:9;3649:18;3636:32;3691:18;3683:6;3680:30;3677:50;;;3723:1;3720;3713:12;3677:50;3746:49;3787:7;3778:6;3767:9;3763:22;3746:49;:::i;:::-;3736:59;;;3339:462;;;;;:::o;3806:180::-;3865:6;3918:2;3906:9;3897:7;3893:23;3889:32;3886:52;;;3934:1;3931;3924:12;3886:52;-1:-1:-1;3957:23:2;;3806:180;-1:-1:-1;3806:180:2:o;3991:651::-;4108:6;4116;4124;4177:3;4165:9;4156:7;4152:23;4148:33;4145:53;;;4194:1;4191;4184:12;4145:53;4234:9;4221:23;4263:18;4304:2;4296:6;4293:14;4290:34;;;4320:1;4317;4310:12;4290:34;4343:49;4384:7;4375:6;4364:9;4360:22;4343:49;:::i;:::-;4333:59;;4445:2;4434:9;4430:18;4417:32;4401:48;;4474:2;4464:8;4461:16;4458:36;;;4490:1;4487;4480:12;4458:36;;4513:51;4556:7;4545:8;4534:9;4530:24;4513:51;:::i;:::-;4503:61;;;4583:53;4628:7;4623:2;4612:9;4608:18;4583:53;:::i;:::-;4573:63;;3991:651;;;;;:::o;4647:254::-;4715:6;4723;4776:2;4764:9;4755:7;4751:23;4747:32;4744:52;;;4792:1;4789;4782:12;4744:52;4828:9;4815:23;4805:33;;4857:38;4891:2;4880:9;4876:18;4857:38;:::i;:::-;4847:48;;4647:254;;;;;:::o;5091:::-;5159:6;5167;5220:2;5208:9;5199:7;5195:23;5191:32;5188:52;;;5236:1;5233;5226:12;5188:52;5259:29;5278:9;5259:29;:::i;:::-;5249:39;5335:2;5320:18;;;;5307:32;;-1:-1:-1;;;5091:254:2:o;5350:394::-;5427:6;5435;5488:2;5476:9;5467:7;5463:23;5459:32;5456:52;;;5504:1;5501;5494:12;5456:52;5527:29;5546:9;5527:29;:::i;:::-;5517:39;;5607:2;5596:9;5592:18;5579:32;5634:18;5626:6;5623:30;5620:50;;;5666:1;5663;5656:12;5749:248;5817:6;5825;5878:2;5866:9;5857:7;5853:23;5849:32;5846:52;;;5894:1;5891;5884:12;5846:52;-1:-1:-1;;5917:23:2;;;5987:2;5972:18;;;5959:32;;-1:-1:-1;5749:248:2:o;6002:726::-;6128:6;6136;6144;6152;6205:3;6193:9;6184:7;6180:23;6176:33;6173:53;;;6222:1;6219;6212:12;6173:53;6262:9;6249:23;6291:18;6332:2;6324:6;6321:14;6318:34;;;6348:1;6345;6338:12;6318:34;6371:49;6412:7;6403:6;6392:9;6388:22;6371:49;:::i;:::-;6361:59;;6473:2;6462:9;6458:18;6445:32;6429:48;;6502:2;6492:8;6489:16;6486:36;;;6518:1;6515;6508:12;6486:36;;6541:51;6584:7;6573:8;6562:9;6558:24;6541:51;:::i;:::-;6531:61;;;6611:53;6656:7;6651:2;6640:9;6636:18;6611:53;:::i;:::-;6601:63;;6683:39;6717:3;6706:9;6702:19;6683:39;:::i;6733:794::-;6868:6;6876;6884;6892;6900;6953:3;6941:9;6932:7;6928:23;6924:33;6921:53;;;6970:1;6967;6960:12;6921:53;7006:9;6993:23;6983:33;;7067:2;7056:9;7052:18;7039:32;7090:18;7131:2;7123:6;7120:14;7117:34;;;7147:1;7144;7137:12;7117:34;7170:49;7211:7;7202:6;7191:9;7187:22;7170:49;:::i;:::-;7160:59;;7272:2;7261:9;7257:18;7244:32;7228:48;;7301:2;7291:8;7288:16;7285:36;;;7317:1;7314;7307:12;7285:36;;7340:51;7383:7;7372:8;7361:9;7357:24;7340:51;:::i;:::-;7330:61;;;7410:53;7455:7;7450:2;7439:9;7435:18;7410:53;:::i;:::-;7400:63;;7482:39;7516:3;7505:9;7501:19;7482:39;:::i;:::-;7472:49;;6733:794;;;;;;;;:::o;7532:322::-;7609:6;7617;7625;7678:2;7666:9;7657:7;7653:23;7649:32;7646:52;;;7694:1;7691;7684:12;7646:52;7730:9;7717:23;7707:33;;7787:2;7776:9;7772:18;7759:32;7749:42;;7810:38;7844:2;7833:9;7829:18;7810:38;:::i;7859:250::-;7944:1;7954:113;7968:6;7965:1;7962:13;7954:113;;;8044:11;;;8038:18;8025:11;;;8018:39;7990:2;7983:10;7954:113;;;-1:-1:-1;;8101:1:2;8083:16;;8076:27;7859:250::o;8114:287::-;8243:3;8281:6;8275:13;8297:66;8356:6;8351:3;8344:4;8336:6;8332:17;8297:66;:::i;:::-;8379:16;;;;;8114:287;-1:-1:-1;;8114:287:2:o;8406:337::-;8474:18;8525:10;;;8513;;;8509:27;;8548:12;;;8545:192;;;8593:77;8590:1;8583:88;8694:4;8691:1;8684:15;8722:4;8719:1;8712:15;8545:192;;8406:337;;;;:::o;15538:573::-;15725:42;15717:6;15713:55;15702:9;15695:74;15805:2;15800;15789:9;15785:18;15778:30;15676:4;15837:6;15831:13;15880:6;15875:2;15864:9;15860:18;15853:34;15896:79;15968:6;15963:2;15952:9;15948:18;15943:2;15935:6;15931:15;15896:79;:::i;:::-;16027:2;16015:15;16032:66;16011:88;15996:104;;;;16102:2;15992:113;;15538:573;-1:-1:-1;;;15538:573:2:o;16326:184::-;16378:77;16375:1;16368:88;16475:4;16472:1;16465:15;16499:4;16496:1;16489:15"},"methodIdentifiers":{"computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreate3Address(bytes32)":"6cec2536","computeCreate3Address(bytes32,address)":"42d654fc","computeCreateAddress(address,uint256)":"74637a7a","computeCreateAddress(uint256)":"28ddd046","deployCreate(bytes)":"27fe1822","deployCreate2(bytes)":"26a32fc7","deployCreate2(bytes32,bytes)":"26307668","deployCreate2AndInit(bytes,bytes,(uint256,uint256))":"c3fe107b","deployCreate2AndInit(bytes,bytes,(uint256,uint256),address)":"e437252a","deployCreate2AndInit(bytes32,bytes,bytes,(uint256,uint256))":"e96deee4","deployCreate2AndInit(bytes32,bytes,bytes,(uint256,uint256),address)":"a7db93f2","deployCreate2Clone(address,bytes)":"81503da1","deployCreate2Clone(bytes32,address,bytes)":"2852527a","deployCreate3(bytes)":"7f565360","deployCreate3(bytes32,bytes)":"9c36a286","deployCreate3AndInit(bytes,bytes,(uint256,uint256))":"2f990e3f","deployCreate3AndInit(bytes,bytes,(uint256,uint256),address)":"f5745aba","deployCreate3AndInit(bytes32,bytes,bytes,(uint256,uint256))":"00d84acb","deployCreate3AndInit(bytes32,bytes,bytes,(uint256,uint256),address)":"ddda0acb","deployCreateAndInit(bytes,bytes,(uint256,uint256))":"31a7c8c8","deployCreateAndInit(bytes,bytes,(uint256,uint256),address)":"98e81077","deployCreateClone(address,bytes)":"f9664498"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"FailedContractCreation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"FailedContractInitialisation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"FailedEtherTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"InvalidNonceValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"InvalidSalt\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"ContractCreation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"name\":\"ContractCreation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"Create3ProxyContractCreation\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate3Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"computeCreate3Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreate2AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreate2AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreate2AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreate2AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deployCreate2Clone\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deployCreate2Clone\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate3\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate3\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreate3AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreate3AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreate3AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreate3AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreateAndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct CreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreateAndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deployCreateClone\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"pcaversaccio (https://web.archive.org/web/20230921103111/https://pcaversaccio.com/)\",\"custom:coauthor\":\"Matt Solomon (https://web.archive.org/web/20230921103335/https://mattsolomon.dev/)\",\"custom:security-contact\":\"See https://web.archive.org/web/20230921105029/https://raw.githubusercontent.com/pcaversaccio/createx/main/SECURITY.md.\",\"details\":\"To simplify testing of non-public variables and functions, we use the `internal` function visibility specifier `internal` for all variables and functions, even though they could technically be `private` since we do not expect anyone to inherit from the `CreateX` contract.\",\"errors\":{\"FailedContractCreation(address)\":[{\"details\":\"Error that occurs when the contract creation failed.\",\"params\":{\"emitter\":\"The contract that emits the error.\"}}],\"FailedContractInitialisation(address,bytes)\":[{\"details\":\"Error that occurs when the contract initialisation call failed.\",\"params\":{\"emitter\":\"The contract that emits the error.\",\"revertData\":\"The data returned by the failed initialisation call.\"}}],\"FailedEtherTransfer(address,bytes)\":[{\"details\":\"Error that occurs when transferring ether has failed.\",\"params\":{\"emitter\":\"The contract that emits the error.\",\"revertData\":\"The data returned by the failed ether transfer.\"}}],\"InvalidNonceValue(address)\":[{\"details\":\"Error that occurs when the nonce value is invalid.\",\"params\":{\"emitter\":\"The contract that emits the error.\"}}],\"InvalidSalt(address)\":[{\"details\":\"Error that occurs when the salt value is invalid.\",\"params\":{\"emitter\":\"The contract that emits the error.\"}}]},\"events\":{\"ContractCreation(address)\":{\"details\":\"Event that is emitted when a contract is successfully created.\",\"params\":{\"newContract\":\"The address of the new contract.\"}},\"ContractCreation(address,bytes32)\":{\"details\":\"Event that is emitted when a contract is successfully created.\",\"params\":{\"newContract\":\"The address of the new contract.\",\"salt\":\"The 32-byte random value used to create the contract address.\"}},\"Create3ProxyContractCreation(address,bytes32)\":{\"details\":\"Event that is emitted when a `CREATE3` proxy contract is successfully created.\",\"params\":{\"newContract\":\"The address of the new proxy contract.\",\"salt\":\"The 32-byte random value used to create the proxy address.\"}}},\"kind\":\"dev\",\"methods\":{\"computeCreate2Address(bytes32,bytes32)\":{\"details\":\"Returns the address where a contract will be stored if deployed via this contract using the `CREATE2` opcode. Any change in the `initCodeHash` or `salt` values will result in a new destination address.\",\"params\":{\"initCodeHash\":\"The 32-byte bytecode digest of the contract creation bytecode.\",\"salt\":\"The 32-byte random value used to create the contract address.\"},\"returns\":{\"computedAddress\":\"The 20-byte address where a contract will be stored.\"}},\"computeCreate2Address(bytes32,bytes32,address)\":{\"details\":\"Returns the address where a contract will be stored if deployed via `deployer` using the `CREATE2` opcode. Any change in the `initCodeHash` or `salt` values will result in a new destination address. This implementation is based on OpenZeppelin: https://web.archive.org/web/20230921113703/https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/181d518609a9f006fcb97af63e6952e603cf100e/contracts/utils/Create2.sol.\",\"params\":{\"deployer\":\"The 20-byte deployer address.\",\"initCodeHash\":\"The 32-byte bytecode digest of the contract creation bytecode.\",\"salt\":\"The 32-byte random value used to create the contract address.\"},\"returns\":{\"computedAddress\":\"The 20-byte address where a contract will be stored.\"}},\"computeCreate3Address(bytes32)\":{\"details\":\"Returns the address where a contract will be stored if deployed via this contract using the `CREATE3` pattern (i.e. without an initcode factor). Any change in the `salt` value will result in a new destination address. This implementation is based on Solady: https://web.archive.org/web/20230921114120/https://raw.githubusercontent.com/Vectorized/solady/1c1ac4ad9c8558001e92d8d1a7722ef67bec75df/src/utils/CREATE3.sol.\",\"params\":{\"salt\":\"The 32-byte random value used to create the proxy contract address.\"},\"returns\":{\"computedAddress\":\"The 20-byte address where a contract will be stored.\"}},\"computeCreate3Address(bytes32,address)\":{\"details\":\"Returns the address where a contract will be stored if deployed via `deployer` using the `CREATE3` pattern (i.e. without an initcode factor). Any change in the `salt` value will result in a new destination address. This implementation is based on Solady: https://web.archive.org/web/20230921114120/https://raw.githubusercontent.com/Vectorized/solady/1c1ac4ad9c8558001e92d8d1a7722ef67bec75df/src/utils/CREATE3.sol.\",\"params\":{\"deployer\":\"The 20-byte deployer address.\",\"salt\":\"The 32-byte random value used to create the proxy contract address.\"},\"returns\":{\"computedAddress\":\"The 20-byte address where a contract will be stored.\"}},\"computeCreateAddress(address,uint256)\":{\"details\":\"Returns the address where a contract will be stored if deployed via `deployer` using the `CREATE` opcode. For the specification of the Recursive Length Prefix (RLP) encoding scheme, please refer to p. 19 of the Ethereum Yellow Paper (https://web.archive.org/web/20230921110603/https://ethereum.github.io/yellowpaper/paper.pdf) and the Ethereum Wiki (https://web.archive.org/web/20230921112807/https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/). For further insights also, see the following issue: https://web.archive.org/web/20230921112943/https://github.com/transmissions11/solmate/issues/207. Based on the EIP-161 (https://web.archive.org/web/20230921113207/https://raw.githubusercontent.com/ethereum/EIPs/master/EIPS/eip-161.md) specification, all contract accounts on the Ethereum mainnet are initiated with `nonce = 1`. Thus, the first contract address created by another contract is calculated with a non-zero nonce.\",\"params\":{\"deployer\":\"The 20-byte deployer address.\",\"nonce\":\"The next 32-byte nonce of the deployer address.\"},\"returns\":{\"computedAddress\":\"The 20-byte address where a contract will be stored.\"}},\"computeCreateAddress(uint256)\":{\"details\":\"Returns the address where a contract will be stored if deployed via this contract using the `CREATE` opcode. For the specification of the Recursive Length Prefix (RLP) encoding scheme, please refer to p. 19 of the Ethereum Yellow Paper (https://web.archive.org/web/20230921110603/https://ethereum.github.io/yellowpaper/paper.pdf) and the Ethereum Wiki (https://web.archive.org/web/20230921112807/https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/). For further insights also, see the following issue: https://web.archive.org/web/20230921112943/https://github.com/transmissions11/solmate/issues/207. Based on the EIP-161 (https://web.archive.org/web/20230921113207/https://raw.githubusercontent.com/ethereum/EIPs/master/EIPS/eip-161.md) specification, all contract accounts on the Ethereum mainnet are initiated with `nonce = 1`. Thus, the first contract address created by another contract is calculated with a non-zero nonce.\",\"params\":{\"nonce\":\"The next 32-byte nonce of this contract.\"},\"returns\":{\"computedAddress\":\"The 20-byte address where a contract will be stored.\"}},\"deployCreate(bytes)\":{\"details\":\"Deploys a new contract via calling the `CREATE` opcode and using the creation bytecode `initCode` and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor.\",\"params\":{\"initCode\":\"The creation bytecode.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate2(bytes)\":{\"details\":\"Deploys a new contract via calling the `CREATE2` opcode and using the creation bytecode `initCode` and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and transaction properties. This approach does not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor.\",\"params\":{\"initCode\":\"The creation bytecode.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate2(bytes32,bytes)\":{\"details\":\"Deploys a new contract via calling the `CREATE2` opcode and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor.\",\"params\":{\"initCode\":\"The creation bytecode.\",\"salt\":\"The 32-byte random value used to create the contract address.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate2AndInit(bytes,bytes,(uint256,uint256))\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys and initialises a new contract via calling the `CREATE2` opcode and using the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and transaction properties. This approach does not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate2AndInit(bytes,bytes,(uint256,uint256),address)\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys and initialises a new contract via calling the `CREATE2` opcode and using the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and transaction properties. This approach does not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"refundAddress\":\"The 20-byte address where any excess ether is returned to.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate2AndInit(bytes32,bytes,bytes,(uint256,uint256))\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys and initialises a new contract via calling the `CREATE2` opcode and using the salt value `salt`, creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"salt\":\"The 32-byte random value used to create the contract address.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate2AndInit(bytes32,bytes,bytes,(uint256,uint256),address)\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys and initialises a new contract via calling the `CREATE2` opcode and using the salt value `salt`, the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"refundAddress\":\"The 20-byte address where any excess ether is returned to.\",\"salt\":\"The 32-byte random value used to create the contract address.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate2Clone(address,bytes)\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys a new EIP-1167 minimal proxy contract using the `CREATE2` opcode and the salt value `salt`, and initialises the implementation contract using the implementation address `implementation`, the initialisation code `data`, and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and transaction properties. This approach does not guarantee true randomness! Note that if `msg.value` is non-zero, the initialiser function called via `data` must be `payable`.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed proxy contract.\",\"implementation\":\"The 20-byte implementation contract address.\"},\"returns\":{\"proxy\":\"The 20-byte address where the clone was deployed.\"}},\"deployCreate2Clone(bytes32,address,bytes)\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys a new EIP-1167 minimal proxy contract using the `CREATE2` opcode and the salt value `salt`, and initialises the implementation contract using the implementation address `implementation`, the initialisation code `data`, and `msg.value` as inputs. Note that if `msg.value` is non-zero, the initialiser function called via `data` must be `payable`.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed proxy contract.\",\"implementation\":\"The 20-byte implementation contract address.\",\"salt\":\"The 32-byte random value used to create the proxy contract address.\"},\"returns\":{\"proxy\":\"The 20-byte address where the clone was deployed.\"}},\"deployCreate3(bytes)\":{\"details\":\"Deploys a new contract via employing the `CREATE3` pattern (i.e. without an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and transaction properties. This approach does not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor. This implementation is based on Solmate: https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\",\"params\":{\"initCode\":\"The creation bytecode.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate3(bytes32,bytes)\":{\"custom:security\":\"We strongly recommend implementing a permissioned deploy protection by setting the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun proxy deployments on other chains.\",\"details\":\"Deploys a new contract via employing the `CREATE3` pattern (i.e. without an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor. This implementation is based on Solmate: https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\",\"params\":{\"initCode\":\"The creation bytecode.\",\"salt\":\"The 32-byte random value used to create the proxy contract address.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate3AndInit(bytes,bytes,(uint256,uint256))\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without an initcode factor) and using the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, `msg.value` as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and transaction properties. This approach does not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`. This implementation is based on Solmate: https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate3AndInit(bytes,bytes,(uint256,uint256),address)\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without an initcode factor) and using the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and transaction properties. This approach does not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor. This implementation is based on Solmate: https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"refundAddress\":\"The 20-byte address where any excess ether is returned to.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate3AndInit(bytes32,bytes,bytes,(uint256,uint256))\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system. Furthermore, we strongly recommend implementing a permissioned deploy protection by setting the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun proxy deployments on other chains.\",\"details\":\"Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`. This implementation is based on Solmate: https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"salt\":\"The 32-byte random value used to create the proxy contract address.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreate3AndInit(bytes32,bytes,bytes,(uint256,uint256),address)\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system. Furthermore, we strongly recommend implementing a permissioned deploy protection by setting the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun proxy deployments on other chains.\",\"details\":\"Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor. This implementation is based on Solmate: https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"refundAddress\":\"The 20-byte address where any excess ether is returned to.\",\"salt\":\"The 32-byte random value used to create the proxy contract address.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreateAndInit(bytes,bytes,(uint256,uint256))\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys and initialises a new contract via calling the `CREATE` opcode and using the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreateAndInit(bytes,bytes,(uint256,uint256),address)\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys and initialises a new contract via calling the `CREATE` opcode and using the creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed contract.\",\"initCode\":\"The creation bytecode.\",\"refundAddress\":\"The 20-byte address where any excess ether is returned to.\",\"values\":\"The specific `payable` amounts for the deployment and initialisation call.\"},\"returns\":{\"newContract\":\"The 20-byte address where the contract was deployed.\"}},\"deployCreateClone(address,bytes)\":{\"custom:security\":\"This function allows for reentrancy, however we refrain from adding a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol level that potentially malicious reentrant calls do not affect your smart contract system.\",\"details\":\"Deploys a new EIP-1167 minimal proxy contract using the `CREATE` opcode, and initialises the implementation contract using the implementation address `implementation`, the initialisation code `data`, and `msg.value` as inputs. Note that if `msg.value` is non-zero, the initialiser function called via `data` must be `payable`.\",\"params\":{\"data\":\"The initialisation code that is passed to the deployed proxy contract.\",\"implementation\":\"The 20-byte implementation contract address.\"},\"returns\":{\"proxy\":\"The 20-byte address where the clone was deployed.\"}}},\"stateVariables\":{\"_SELF\":{\"details\":\"Caches the contract address at construction, to be used for the custom errors.\"}},\"title\":\"CreateX Factory Smart Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Factory smart contract to make easier and safer usage of the `CREATE` (https://web.archive.org/web/20230921103540/https://www.evm.codes/#f0?fork=shanghai) and `CREATE2` (https://web.archive.org/web/20230921103540/https://www.evm.codes/#f5?fork=shanghai) EVM opcodes as well as of `CREATE3`-based (https://web.archive.org/web/20230921103920/https://github.com/ethereum/EIPs/pull/3171) contract creations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CreateX.sol\":\"CreateX\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000000},\"remappings\":[]},\"sources\":{\"src/CreateX.sol\":{\"keccak256\":\"0x2dbac4ef907ba7193aaffb58b8e3cd2e5d212dcfbd5fd87ba83c5ac720767c35\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://3419e91a1887f81a9c69d8fc4fb1c7ee40635e4b99328166ae15627897d077e3\",\"dweb:/ipfs/QmPgZMLnePsddpoYufeuUK5pmAU9cdjQPvFvswpPZEaH6W\"]}},\"version\":1}"}},"src/ICreateX.sol":{"ICreateX":{"abi":[{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"name":"FailedContractCreation","type":"error"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"name":"FailedContractInitialisation","type":"error"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"name":"FailedEtherTransfer","type":"error"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"name":"InvalidNonceValue","type":"error"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"name":"InvalidSalt","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newContract","type":"address"},{"indexed":true,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"ContractCreation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newContract","type":"address"}],"name":"ContractCreation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newContract","type":"address"},{"indexed":true,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"Create3ProxyContractCreation","type":"event"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"name":"computeCreate2Address","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"name":"computeCreate2Address","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"name":"computeCreate3Address","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"computeCreate3Address","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"computeCreateAddress","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"computeCreateAddress","outputs":[{"internalType":"address","name":"computedAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate2","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate2","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreate2AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"}],"name":"deployCreate2AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreate2AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"}],"name":"deployCreate2AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"deployCreate2Clone","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"deployCreate2Clone","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate3","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployCreate3","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"}],"name":"deployCreate3AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"}],"name":"deployCreate3AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreate3AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreate3AndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"}],"name":"deployCreateAndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"uint256","name":"constructorAmount","type":"uint256"},{"internalType":"uint256","name":"initCallAmount","type":"uint256"}],"internalType":"struct ICreateX.Values","name":"values","type":"tuple"},{"internalType":"address","name":"refundAddress","type":"address"}],"name":"deployCreateAndInit","outputs":[{"internalType":"address","name":"newContract","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"deployCreateClone","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreate3Address(bytes32)":"6cec2536","computeCreate3Address(bytes32,address)":"42d654fc","computeCreateAddress(address,uint256)":"74637a7a","computeCreateAddress(uint256)":"28ddd046","deployCreate(bytes)":"27fe1822","deployCreate2(bytes)":"26a32fc7","deployCreate2(bytes32,bytes)":"26307668","deployCreate2AndInit(bytes,bytes,(uint256,uint256))":"c3fe107b","deployCreate2AndInit(bytes,bytes,(uint256,uint256),address)":"e437252a","deployCreate2AndInit(bytes32,bytes,bytes,(uint256,uint256))":"e96deee4","deployCreate2AndInit(bytes32,bytes,bytes,(uint256,uint256),address)":"a7db93f2","deployCreate2Clone(address,bytes)":"81503da1","deployCreate2Clone(bytes32,address,bytes)":"2852527a","deployCreate3(bytes)":"7f565360","deployCreate3(bytes32,bytes)":"9c36a286","deployCreate3AndInit(bytes,bytes,(uint256,uint256))":"2f990e3f","deployCreate3AndInit(bytes,bytes,(uint256,uint256),address)":"f5745aba","deployCreate3AndInit(bytes32,bytes,bytes,(uint256,uint256))":"00d84acb","deployCreate3AndInit(bytes32,bytes,bytes,(uint256,uint256),address)":"ddda0acb","deployCreateAndInit(bytes,bytes,(uint256,uint256))":"31a7c8c8","deployCreateAndInit(bytes,bytes,(uint256,uint256),address)":"98e81077","deployCreateClone(address,bytes)":"f9664498"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"FailedContractCreation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"FailedContractInitialisation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"FailedEtherTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"InvalidNonceValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"InvalidSalt\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"ContractCreation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"name\":\"ContractCreation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"Create3ProxyContractCreation\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate3Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"computeCreate3Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"computedAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreate2AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreate2AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreate2AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreate2AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deployCreate2Clone\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deployCreate2Clone\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate3\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"deployCreate3\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreate3AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreate3AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreate3AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreate3AndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"name\":\"deployCreateAndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"constructorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initCallAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ICreateX.Values\",\"name\":\"values\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"deployCreateAndInit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deployCreateClone\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"pcaversaccio (https://web.archive.org/web/20230921103111/https://pcaversaccio.com/)\",\"custom:coauthor\":\"Matt Solomon (https://web.archive.org/web/20230921103335/https://mattsolomon.dev/)\",\"kind\":\"dev\",\"methods\":{},\"title\":\"CreateX Factory Interface Definition\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ICreateX.sol\":\"ICreateX\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000000},\"remappings\":[]},\"sources\":{\"src/ICreateX.sol\":{\"keccak256\":\"0x0f66ffe251e6b8a2b5ad9411ef057b06e43c693198fbf3e88937f49bd5891cb1\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0d85043c515b25e695ebd0219cdca9ed2316ebe8b2287304b7e2d465094014da\",\"dweb:/ipfs/QmNPwDkvKnwRDcKekMDXwaMu8XrYVxVFUbasjiA4gFdMQz\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/artifacts/src/CreateX.sol/CreateX.dbg.json b/artifacts/src/CreateX.sol/CreateX.dbg.json new file mode 100644 index 00000000..86b7cadd --- /dev/null +++ b/artifacts/src/CreateX.sol/CreateX.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "..\\..\\build-info\\c6d951136e35b73916c5666d481ae5c8.json" +} diff --git a/artifacts/src/CreateX.sol/CreateX.json b/artifacts/src/CreateX.sol/CreateX.json new file mode 100644 index 00000000..49350547 --- /dev/null +++ b/artifacts/src/CreateX.sol/CreateX.json @@ -0,0 +1,903 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CreateX", + "sourceName": "src/CreateX.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "name": "FailedContractCreation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + }, + { + "internalType": "bytes", + "name": "revertData", + "type": "bytes" + } + ], + "name": "FailedContractInitialisation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + }, + { + "internalType": "bytes", + "name": "revertData", + "type": "bytes" + } + ], + "name": "FailedEtherTransfer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "name": "InvalidNonceValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "name": "InvalidSalt", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "Create3ProxyContractCreation", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "initCodeHash", + "type": "bytes32" + } + ], + "name": "computeCreate2Address", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "initCodeHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "deployer", + "type": "address" + } + ], + "name": "computeCreate2Address", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "deployer", + "type": "address" + } + ], + "name": "computeCreate3Address", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "computeCreate3Address", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "computeCreateAddress", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "deployer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "computeCreateAddress", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate2", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate2", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreate2AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreate2AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreate2AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreate2AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deployCreate2Clone", + "outputs": [ + { + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deployCreate2Clone", + "outputs": [ + { + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate3", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate3", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreate3AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreate3AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreate3AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreate3AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreateAndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct CreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreateAndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deployCreateClone", + "outputs": [ + { + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612e3e6100d860003960008181610603015281816107050152818161082b015281816108d50152818161127f01528181611375015281816113e00152818161141f015281816114a7015281816115b3015281816117d20152818161183d0152818161187c0152818161190401528181611ac501528181611c7801528181611ce301528181611d2201528181611daa01528181611fe901528181612206015281816122f20152818161244d015281816124a601526125820152612e3e6000f3fe60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a", + "deployedBytecode": "0x60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/src/ICreateX.sol/ICreateX.dbg.json b/artifacts/src/ICreateX.sol/ICreateX.dbg.json new file mode 100644 index 00000000..86b7cadd --- /dev/null +++ b/artifacts/src/ICreateX.sol/ICreateX.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "..\\..\\build-info\\c6d951136e35b73916c5666d481ae5c8.json" +} diff --git a/artifacts/src/ICreateX.sol/ICreateX.json b/artifacts/src/ICreateX.sol/ICreateX.json new file mode 100644 index 00000000..b93780cf --- /dev/null +++ b/artifacts/src/ICreateX.sol/ICreateX.json @@ -0,0 +1,903 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ICreateX", + "sourceName": "src/ICreateX.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "name": "FailedContractCreation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + }, + { + "internalType": "bytes", + "name": "revertData", + "type": "bytes" + } + ], + "name": "FailedContractInitialisation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + }, + { + "internalType": "bytes", + "name": "revertData", + "type": "bytes" + } + ], + "name": "FailedEtherTransfer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "name": "InvalidNonceValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emitter", + "type": "address" + } + ], + "name": "InvalidSalt", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "Create3ProxyContractCreation", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "initCodeHash", + "type": "bytes32" + } + ], + "name": "computeCreate2Address", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "initCodeHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "deployer", + "type": "address" + } + ], + "name": "computeCreate2Address", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "deployer", + "type": "address" + } + ], + "name": "computeCreate3Address", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "computeCreate3Address", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "computeCreateAddress", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "deployer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "computeCreateAddress", + "outputs": [ + { + "internalType": "address", + "name": "computedAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate2", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate2", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreate2AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreate2AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreate2AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreate2AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deployCreate2Clone", + "outputs": [ + { + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deployCreate2Clone", + "outputs": [ + { + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate3", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + } + ], + "name": "deployCreate3", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreate3AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreate3AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreate3AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreate3AndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + } + ], + "name": "deployCreateAndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "constructorAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initCallAmount", + "type": "uint256" + } + ], + "internalType": "struct ICreateX.Values", + "name": "values", + "type": "tuple" + }, + { + "internalType": "address", + "name": "refundAddress", + "type": "address" + } + ], + "name": "deployCreateAndInit", + "outputs": [ + { + "internalType": "address", + "name": "newContract", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deployCreateClone", + "outputs": [ + { + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/deployments/deployments.json b/deployments/deployments.json new file mode 100644 index 00000000..b2acc7ad --- /dev/null +++ b/deployments/deployments.json @@ -0,0 +1,7 @@ +[ + { + "name": "Ethereum Mainnet", + "chainId": 1, + "url": "" + } +] diff --git a/foundry.toml b/foundry.toml index 32cad261..91d9a4e5 100644 --- a/foundry.toml +++ b/foundry.toml @@ -9,7 +9,8 @@ cache_path = 'cache' # where the cache is solc_version = '0.8.23' # override for the solc version evm_version = 'paris' # set the EVM target version (prevent using the `PUSH0` opcode) optimizer = true # enable the solc optimiser -optimizer_runs = 999999 # the number of optimiser runs +optimizer_runs = 10_000_000 # the number of optimiser runs +via_ir = false # disable compilation pipeline to go through the Yul intermediate representation verbosity = 3 # the verbosity of tests fs_permissions = [{ access = "read-write", path = "./"}] # set read-write access to project root bytecode_hash = 'none' # remove the metadata hash from the bytecode diff --git a/hardhat.config.ts b/hardhat.config.ts index 0f81b119..80037e11 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -35,9 +35,10 @@ const config: HardhatUserConfig = { settings: { optimizer: { enabled: true, - runs: 999999, + runs: 10_000_000, }, evmVersion: "paris", // Prevent using the `PUSH0` opcode + viaIR: false, // Disable compilation pipeline to go through the Yul intermediate representation metadata: { bytecodeHash: "none", // Remove the metadata hash from the bytecode }, diff --git a/lib/forge-std b/lib/forge-std index 2f112697..80a8f6ea 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 2f112697506eab12d433a65fdc31a639548fe365 +Subproject commit 80a8f6ea9362849b2a8f2dc28df40c77a64f9c16 diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index 6ba452de..88512b23 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit 6ba452dea4258afe77726293435f10baf2bed265 +Subproject commit 88512b23d2bf5714b5d1bd59feee1d912439689d diff --git a/lib/solady b/lib/solady index 0020d043..c8051ecd 160000 --- a/lib/solady +++ b/lib/solady @@ -1 +1 @@ -Subproject commit 0020d0432a9226385a6deaa0587dbbecc5c426b3 +Subproject commit c8051ecd7ca7687c26a3c90aedf33bd8a4ac594e diff --git a/package.json b/package.json index 2bb676cd..823d0672 100644 --- a/package.json +++ b/package.json @@ -31,76 +31,77 @@ "size": "npx hardhat size-contracts", "abi": "npx hardhat export-abi", "vars:path": "npx hardhat vars path", + "solc": "npx hardhat solc", "evm": "npx hardhat evm", - "presign": "npx hardhat run scripts/presign.ts", - "deploy:hh": "npx hardhat run --network hardhat scripts/deploy.ts", - "deploy:localhost": "npx hardhat run --network localhost scripts/deploy.ts", - "deploy:dashboard": "npx hardhat run --network truffleDashboard scripts/deploy.ts", - "deploy:tenderly": "npx hardhat run --network tenderly scripts/deploy.ts", - "deploy:devnet": "npx hardhat run --network devnet scripts/deploy.ts", - "deploy:goerli": "npx hardhat run --network goerli scripts/deploy.ts", - "deploy:sepolia": "npx hardhat run --network sepolia scripts/deploy.ts", - "deploy:holesky": "npx hardhat run --network holesky scripts/deploy.ts", - "deploy:ethmain": "npx hardhat run --network ethMain scripts/deploy.ts", - "deploy:bsctestnet": "npx hardhat run --network bscTestnet scripts/deploy.ts", - "deploy:bscmain": "npx hardhat run --network bscMain scripts/deploy.ts", - "deploy:optimismtestnet": "npx hardhat run --network optimismTestnet scripts/deploy.ts", - "deploy:optimismsepolia": "npx hardhat run --network optimismSepolia scripts/deploy.ts", - "deploy:optimismmain": "npx hardhat run --network optimismMain scripts/deploy.ts", - "deploy:arbitrumtestnet": "npx hardhat run --network arbitrumTestnet scripts/deploy.ts", - "deploy:arbitrumsepolia": "npx hardhat run --network arbitrumSepolia scripts/deploy.ts", - "deploy:arbitrummain": "npx hardhat run --network arbitrumMain scripts/deploy.ts", - "deploy:arbitrumnova": "npx hardhat run --network arbitrumNova scripts/deploy.ts", - "deploy:mumbai": "npx hardhat run --network mumbai scripts/deploy.ts", - "deploy:polygonzkevmtestnet": "npx hardhat run --network polygonZkEVMTestnet scripts/deploy.ts", - "deploy:polygon": "npx hardhat run --network polygon scripts/deploy.ts", - "deploy:polygonzkevmmain": "npx hardhat run --network polygonZkEVMMain scripts/deploy.ts", - "deploy:hecomain": "npx hardhat run --network hecoMain scripts/deploy.ts", - "deploy:fantomtestnet": "npx hardhat run --network fantomTestnet scripts/deploy.ts", - "deploy:fantommain": "npx hardhat run --network fantomMain scripts/deploy.ts", - "deploy:fuji": "npx hardhat run --network fuji scripts/deploy.ts", - "deploy:avalanche": "npx hardhat run --network avalanche scripts/deploy.ts", - "deploy:chiado": "npx hardhat run --network chiado scripts/deploy.ts", - "deploy:gnosis": "npx hardhat run --network gnosis scripts/deploy.ts", - "deploy:moonbasealpha": "npx hardhat run --network moonbaseAlpha scripts/deploy.ts", - "deploy:moonriver": "npx hardhat run --network moonriver scripts/deploy.ts", - "deploy:moonbeam": "npx hardhat run --network moonbeam scripts/deploy.ts", - "deploy:alfajores": "npx hardhat run --network alfajores scripts/deploy.ts", - "deploy:celo": "npx hardhat run --network celo scripts/deploy.ts", - "deploy:auroratestnet": "npx hardhat run --network auroraTestnet scripts/deploy.ts", - "deploy:auroramain": "npx hardhat run --network auroraMain scripts/deploy.ts", - "deploy:harmonytestnet": "npx hardhat run --network harmonyTestnet scripts/deploy.ts", - "deploy:harmonymain": "npx hardhat run --network harmonyMain scripts/deploy.ts", - "deploy:spark": "npx hardhat run --network spark scripts/deploy.ts", - "deploy:fuse": "npx hardhat run --network fuse scripts/deploy.ts", - "deploy:cronostestnet": "npx hardhat run --network cronosTestnet scripts/deploy.ts", - "deploy:cronosmain": "npx hardhat run --network cronosMain scripts/deploy.ts", - "deploy:evmostestnet": "npx hardhat run --network evmosTestnet scripts/deploy.ts", - "deploy:evmosmain": "npx hardhat run --network evmosMain scripts/deploy.ts", - "deploy:bobatestnet": "npx hardhat run --network bobaTestnet scripts/deploy.ts", - "deploy:bobamain": "npx hardhat run --network bobaMain scripts/deploy.ts", - "deploy:cantotestnet": "npx hardhat run --network cantoTestnet scripts/deploy.ts", - "deploy:cantomain": "npx hardhat run --network cantoMain scripts/deploy.ts", - "deploy:basetestnet": "npx hardhat run --network baseTestnet scripts/deploy.ts", - "deploy:basesepolia": "npx hardhat run --network baseSepolia scripts/deploy.ts", - "deploy:basemain": "npx hardhat run --network baseMain scripts/deploy.ts", - "deploy:mantletestnet": "npx hardhat run --network mantleTestnet scripts/deploy.ts", - "deploy:mantlemain": "npx hardhat run --network mantleMain scripts/deploy.ts", - "deploy:filecointestnet": "npx hardhat run --network filecoinTestnet scripts/deploy.ts", - "deploy:filecoinmain": "npx hardhat run --network filecoinMain scripts/deploy.ts", - "deploy:scrolltestnet": "npx hardhat run --network scrollTestnet scripts/deploy.ts", - "deploy:scrollmain": "npx hardhat run --network scrollMain scripts/deploy.ts", - "deploy:lineatestnet": "npx hardhat run --network lineaTestnet scripts/deploy.ts", - "deploy:lineamain": "npx hardhat run --network lineaMain scripts/deploy.ts", - "deploy:shimmerevmtestnet": "npx hardhat run --network shimmerEVMTestnet scripts/deploy.ts", - "deploy:zoratestnet": "npx hardhat run --network zoraTestnet scripts/deploy.ts", - "deploy:zoramain": "npx hardhat run --network zoraMain scripts/deploy.ts", - "deploy:luksotestnet": "npx hardhat run --network luksoTestnet scripts/deploy.ts", - "deploy:luksomain": "npx hardhat run --network luksoMain scripts/deploy.ts", - "deploy:mantatestnet": "npx hardhat run --network mantaTestnet scripts/deploy.ts", - "deploy:mantamain": "npx hardhat run --network mantaMain scripts/deploy.ts", - "deploy:shardeumtestnet": "npx hardhat run --network shardeumTestnet scripts/deploy.ts", - "deploy:artheratestnet": "npx hardhat run --network artheraTestnet scripts/deploy.ts", + "presign": "npx hardhat run --no-compile scripts/presign.ts", + "deploy:hh": "npx hardhat run --no-compile --network hardhat scripts/deploy.ts", + "deploy:localhost": "npx hardhat run --no-compile --network localhost scripts/deploy.ts", + "deploy:dashboard": "npx hardhat run --no-compile --network truffleDashboard scripts/deploy.ts", + "deploy:tenderly": "npx hardhat run --no-compile --network tenderly scripts/deploy.ts", + "deploy:devnet": "npx hardhat run --no-compile --network devnet scripts/deploy.ts", + "deploy:goerli": "npx hardhat run --no-compile --network goerli scripts/deploy.ts", + "deploy:sepolia": "npx hardhat run --no-compile --network sepolia scripts/deploy.ts", + "deploy:holesky": "npx hardhat run --no-compile --network holesky scripts/deploy.ts", + "deploy:ethmain": "npx hardhat run --no-compile --network ethMain scripts/deploy.ts", + "deploy:bsctestnet": "npx hardhat run --no-compile --network bscTestnet scripts/deploy.ts", + "deploy:bscmain": "npx hardhat run --no-compile --network bscMain scripts/deploy.ts", + "deploy:optimismtestnet": "npx hardhat run --no-compile --network optimismTestnet scripts/deploy.ts", + "deploy:optimismsepolia": "npx hardhat run --no-compile --network optimismSepolia scripts/deploy.ts", + "deploy:optimismmain": "npx hardhat run --no-compile --network optimismMain scripts/deploy.ts", + "deploy:arbitrumtestnet": "npx hardhat run --no-compile --network arbitrumTestnet scripts/deploy.ts", + "deploy:arbitrumsepolia": "npx hardhat run --no-compile --network arbitrumSepolia scripts/deploy.ts", + "deploy:arbitrummain": "npx hardhat run --no-compile --network arbitrumMain scripts/deploy.ts", + "deploy:arbitrumnova": "npx hardhat run --no-compile --network arbitrumNova scripts/deploy.ts", + "deploy:mumbai": "npx hardhat run --no-compile --network mumbai scripts/deploy.ts", + "deploy:polygonzkevmtestnet": "npx hardhat run --no-compile --network polygonZkEVMTestnet scripts/deploy.ts", + "deploy:polygon": "npx hardhat run --no-compile --network polygon scripts/deploy.ts", + "deploy:polygonzkevmmain": "npx hardhat run --no-compile --network polygonZkEVMMain scripts/deploy.ts", + "deploy:hecomain": "npx hardhat run --no-compile --network hecoMain scripts/deploy.ts", + "deploy:fantomtestnet": "npx hardhat run --no-compile --network fantomTestnet scripts/deploy.ts", + "deploy:fantommain": "npx hardhat run --no-compile --network fantomMain scripts/deploy.ts", + "deploy:fuji": "npx hardhat run --no-compile --network fuji scripts/deploy.ts", + "deploy:avalanche": "npx hardhat run --no-compile --network avalanche scripts/deploy.ts", + "deploy:chiado": "npx hardhat run --no-compile --network chiado scripts/deploy.ts", + "deploy:gnosis": "npx hardhat run --no-compile --network gnosis scripts/deploy.ts", + "deploy:moonbasealpha": "npx hardhat run --no-compile --network moonbaseAlpha scripts/deploy.ts", + "deploy:moonriver": "npx hardhat run --no-compile --network moonriver scripts/deploy.ts", + "deploy:moonbeam": "npx hardhat run --no-compile --network moonbeam scripts/deploy.ts", + "deploy:alfajores": "npx hardhat run --no-compile --network alfajores scripts/deploy.ts", + "deploy:celo": "npx hardhat run --no-compile --network celo scripts/deploy.ts", + "deploy:auroratestnet": "npx hardhat run --no-compile --network auroraTestnet scripts/deploy.ts", + "deploy:auroramain": "npx hardhat run --no-compile --network auroraMain scripts/deploy.ts", + "deploy:harmonytestnet": "npx hardhat run --no-compile --network harmonyTestnet scripts/deploy.ts", + "deploy:harmonymain": "npx hardhat run --no-compile --network harmonyMain scripts/deploy.ts", + "deploy:spark": "npx hardhat run --no-compile --network spark scripts/deploy.ts", + "deploy:fuse": "npx hardhat run --no-compile --network fuse scripts/deploy.ts", + "deploy:cronostestnet": "npx hardhat run --no-compile --network cronosTestnet scripts/deploy.ts", + "deploy:cronosmain": "npx hardhat run --no-compile --network cronosMain scripts/deploy.ts", + "deploy:evmostestnet": "npx hardhat run --no-compile --network evmosTestnet scripts/deploy.ts", + "deploy:evmosmain": "npx hardhat run --no-compile --network evmosMain scripts/deploy.ts", + "deploy:bobatestnet": "npx hardhat run --no-compile --network bobaTestnet scripts/deploy.ts", + "deploy:bobamain": "npx hardhat run --no-compile --network bobaMain scripts/deploy.ts", + "deploy:cantotestnet": "npx hardhat run --no-compile --network cantoTestnet scripts/deploy.ts", + "deploy:cantomain": "npx hardhat run --no-compile --network cantoMain scripts/deploy.ts", + "deploy:basetestnet": "npx hardhat run --no-compile --network baseTestnet scripts/deploy.ts", + "deploy:basesepolia": "npx hardhat run --no-compile --network baseSepolia scripts/deploy.ts", + "deploy:basemain": "npx hardhat run --no-compile --network baseMain scripts/deploy.ts", + "deploy:mantletestnet": "npx hardhat run --no-compile --network mantleTestnet scripts/deploy.ts", + "deploy:mantlemain": "npx hardhat run --no-compile --network mantleMain scripts/deploy.ts", + "deploy:filecointestnet": "npx hardhat run --no-compile --network filecoinTestnet scripts/deploy.ts", + "deploy:filecoinmain": "npx hardhat run --no-compile --network filecoinMain scripts/deploy.ts", + "deploy:scrolltestnet": "npx hardhat run --no-compile --network scrollTestnet scripts/deploy.ts", + "deploy:scrollmain": "npx hardhat run --no-compile --network scrollMain scripts/deploy.ts", + "deploy:lineatestnet": "npx hardhat run --no-compile --network lineaTestnet scripts/deploy.ts", + "deploy:lineamain": "npx hardhat run --no-compile --network lineaMain scripts/deploy.ts", + "deploy:shimmerevmtestnet": "npx hardhat run --no-compile --network shimmerEVMTestnet scripts/deploy.ts", + "deploy:zoratestnet": "npx hardhat run --no-compile --network zoraTestnet scripts/deploy.ts", + "deploy:zoramain": "npx hardhat run --no-compile --network zoraMain scripts/deploy.ts", + "deploy:luksotestnet": "npx hardhat run --no-compile --network luksoTestnet scripts/deploy.ts", + "deploy:luksomain": "npx hardhat run --no-compile --network luksoMain scripts/deploy.ts", + "deploy:mantatestnet": "npx hardhat run --no-compile --network mantaTestnet scripts/deploy.ts", + "deploy:mantamain": "npx hardhat run --no-compile --network mantaMain scripts/deploy.ts", + "deploy:shardeumtestnet": "npx hardhat run --no-compile --network shardeumTestnet scripts/deploy.ts", + "deploy:artheratestnet": "npx hardhat run --no-compile --network artheraTestnet scripts/deploy.ts", "prettier:check": "npx prettier -c **/*.{js,ts,md,sol,json,yml,yaml}", "prettier:fix": "npx prettier -w **/*.{js,ts,md,sol,json,yml,yaml}", "solhint:check": "npx solhint -c src/.solhint.json src/**/*.sol && npx solhint -c test/.solhint-tests.json test/**/*.sol", @@ -113,8 +114,8 @@ "@nomicfoundation/hardhat-verify": "^2.0.2", "@typechain/ethers-v6": "^0.5.1", "@typechain/hardhat": "^9.1.0", - "@typescript-eslint/eslint-plugin": "^6.13.2", - "@typescript-eslint/parser": "^6.13.2", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", "eslint": "^8.55.0", "eslint-config-prettier": "^9.1.0", "ethers": "^6.9.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95c73659..08b6bd74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,11 +18,11 @@ devDependencies: specifier: ^9.1.0 version: 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.9.0)(hardhat@2.19.2)(typechain@8.3.2) "@typescript-eslint/eslint-plugin": - specifier: ^6.13.2 - version: 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3) + specifier: ^6.14.0 + version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3) "@typescript-eslint/parser": - specifier: ^6.13.2 - version: 6.13.2(eslint@8.55.0)(typescript@5.3.3) + specifier: ^6.14.0 + version: 6.14.0(eslint@8.55.0)(typescript@5.3.3) eslint: specifier: ^8.55.0 version: 8.55.0 @@ -207,7 +207,7 @@ packages: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 - globals: 13.23.0 + globals: 13.24.0 ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1166,10 +1166,10 @@ packages: config-chain: 1.1.13 dev: true - /@scure/base@1.1.3: + /@scure/base@1.1.5: resolution: { - integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==, + integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==, } dev: true @@ -1181,7 +1181,7 @@ packages: dependencies: "@noble/hashes": 1.2.0 "@noble/secp256k1": 1.7.1 - "@scure/base": 1.1.3 + "@scure/base": 1.1.5 dev: true /@scure/bip39@1.1.1: @@ -1191,7 +1191,7 @@ packages: } dependencies: "@noble/hashes": 1.2.0 - "@scure/base": 1.1.3 + "@scure/base": 1.1.5 dev: true /@sentry/core@5.30.0: @@ -1520,10 +1520,10 @@ packages: } dev: true - /@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3): resolution: { - integrity: sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==, + integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==, } engines: { node: ^16.0.0 || >=18.0.0 } peerDependencies: @@ -1535,11 +1535,11 @@ packages: optional: true dependencies: "@eslint-community/regexpp": 4.10.0 - "@typescript-eslint/parser": 6.13.2(eslint@8.55.0)(typescript@5.3.3) - "@typescript-eslint/scope-manager": 6.13.2 - "@typescript-eslint/type-utils": 6.13.2(eslint@8.55.0)(typescript@5.3.3) - "@typescript-eslint/utils": 6.13.2(eslint@8.55.0)(typescript@5.3.3) - "@typescript-eslint/visitor-keys": 6.13.2 + "@typescript-eslint/parser": 6.14.0(eslint@8.55.0)(typescript@5.3.3) + "@typescript-eslint/scope-manager": 6.14.0 + "@typescript-eslint/type-utils": 6.14.0(eslint@8.55.0)(typescript@5.3.3) + "@typescript-eslint/utils": 6.14.0(eslint@8.55.0)(typescript@5.3.3) + "@typescript-eslint/visitor-keys": 6.14.0 debug: 4.3.4(supports-color@8.1.1) eslint: 8.55.0 graphemer: 1.4.0 @@ -1552,10 +1552,10 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@5.3.3): resolution: { - integrity: sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==, + integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==, } engines: { node: ^16.0.0 || >=18.0.0 } peerDependencies: @@ -1565,10 +1565,10 @@ packages: typescript: optional: true dependencies: - "@typescript-eslint/scope-manager": 6.13.2 - "@typescript-eslint/types": 6.13.2 - "@typescript-eslint/typescript-estree": 6.13.2(typescript@5.3.3) - "@typescript-eslint/visitor-keys": 6.13.2 + "@typescript-eslint/scope-manager": 6.14.0 + "@typescript-eslint/types": 6.14.0 + "@typescript-eslint/typescript-estree": 6.14.0(typescript@5.3.3) + "@typescript-eslint/visitor-keys": 6.14.0 debug: 4.3.4(supports-color@8.1.1) eslint: 8.55.0 typescript: 5.3.3 @@ -1576,21 +1576,21 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.13.2: + /@typescript-eslint/scope-manager@6.14.0: resolution: { - integrity: sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==, + integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==, } engines: { node: ^16.0.0 || >=18.0.0 } dependencies: - "@typescript-eslint/types": 6.13.2 - "@typescript-eslint/visitor-keys": 6.13.2 + "@typescript-eslint/types": 6.14.0 + "@typescript-eslint/visitor-keys": 6.14.0 dev: true - /@typescript-eslint/type-utils@6.13.2(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@6.14.0(eslint@8.55.0)(typescript@5.3.3): resolution: { - integrity: sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==, + integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==, } engines: { node: ^16.0.0 || >=18.0.0 } peerDependencies: @@ -1600,8 +1600,8 @@ packages: typescript: optional: true dependencies: - "@typescript-eslint/typescript-estree": 6.13.2(typescript@5.3.3) - "@typescript-eslint/utils": 6.13.2(eslint@8.55.0)(typescript@5.3.3) + "@typescript-eslint/typescript-estree": 6.14.0(typescript@5.3.3) + "@typescript-eslint/utils": 6.14.0(eslint@8.55.0)(typescript@5.3.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.55.0 ts-api-utils: 1.0.3(typescript@5.3.3) @@ -1610,18 +1610,18 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.13.2: + /@typescript-eslint/types@6.14.0: resolution: { - integrity: sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==, + integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==, } engines: { node: ^16.0.0 || >=18.0.0 } dev: true - /@typescript-eslint/typescript-estree@6.13.2(typescript@5.3.3): + /@typescript-eslint/typescript-estree@6.14.0(typescript@5.3.3): resolution: { - integrity: sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==, + integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==, } engines: { node: ^16.0.0 || >=18.0.0 } peerDependencies: @@ -1630,8 +1630,8 @@ packages: typescript: optional: true dependencies: - "@typescript-eslint/types": 6.13.2 - "@typescript-eslint/visitor-keys": 6.13.2 + "@typescript-eslint/types": 6.14.0 + "@typescript-eslint/visitor-keys": 6.14.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 @@ -1642,10 +1642,10 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.13.2(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/utils@6.14.0(eslint@8.55.0)(typescript@5.3.3): resolution: { - integrity: sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==, + integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==, } engines: { node: ^16.0.0 || >=18.0.0 } peerDependencies: @@ -1654,9 +1654,9 @@ packages: "@eslint-community/eslint-utils": 4.4.0(eslint@8.55.0) "@types/json-schema": 7.0.15 "@types/semver": 7.5.6 - "@typescript-eslint/scope-manager": 6.13.2 - "@typescript-eslint/types": 6.13.2 - "@typescript-eslint/typescript-estree": 6.13.2(typescript@5.3.3) + "@typescript-eslint/scope-manager": 6.14.0 + "@typescript-eslint/types": 6.14.0 + "@typescript-eslint/typescript-estree": 6.14.0(typescript@5.3.3) eslint: 8.55.0 semver: 7.5.4 transitivePeerDependencies: @@ -1664,14 +1664,14 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.13.2: + /@typescript-eslint/visitor-keys@6.14.0: resolution: { - integrity: sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==, + integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==, } engines: { node: ^16.0.0 || >=18.0.0 } dependencies: - "@typescript-eslint/types": 6.13.2 + "@typescript-eslint/types": 6.14.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2871,7 +2871,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.23.0 + globals: 13.24.0 graphemer: 1.4.0 ignore: 5.3.0 imurmurhash: 0.1.4 @@ -3481,10 +3481,10 @@ packages: once: 1.4.0 dev: true - /globals@13.23.0: + /globals@13.24.0: resolution: { - integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==, + integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==, } engines: { node: ">=8" } dependencies: diff --git a/scripts/contract_creation_bytecode_createx.json b/scripts/contract_creation_bytecode_createx.json new file mode 100644 index 00000000..4e06aba9 --- /dev/null +++ b/scripts/contract_creation_bytecode_createx.json @@ -0,0 +1 @@ +"0x60a06040523060805234801561001457600080fd5b50608051612e3e6100d860003960008181610603015281816107050152818161082b015281816108d50152818161127f01528181611375015281816113e00152818161141f015281816114a7015281816115b3015281816117d20152818161183d0152818161187c0152818161190401528181611ac501528181611c7801528181611ce301528181611d2201528181611daa01528181611fe901528181612206015281816122f20152818161244d015281816124a601526125820152612e3e6000f3fe60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a" diff --git a/scripts/deploy.ts b/scripts/deploy.ts index 6a8f4cb0..d2f57bcf 100644 --- a/scripts/deploy.ts +++ b/scripts/deploy.ts @@ -1,61 +1,134 @@ import * as fs from "fs"; import path from "path"; -import hre, { ethers } from "hardhat"; +import hre from "hardhat"; -import signedTx from "./presigned-createx-deployment-transaction/signed_serialised_transaction.json"; +import initCode from "./contract_creation_bytecode_createx.json"; +import signedTx from "./presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_3000000_.json"; +import abi from "../abis/src/CreateX.sol/CreateX.json"; // Colour codes for terminal prints const RESET = "\x1b[0m"; const GREEN = "\x1b[32m"; const RED = "\x1b[31m"; -const dir = path.join(__dirname, "broadcasted-createx-deployment-transaction"); +// The `keccak256` hashes of the pre-signed transactions: +// - 0xb6274b80bc7cda162df89894c7748a5cb7ba2eaa6004183c41a1837c3b072f1e (3m gasLimit), +// - 0xc8354e4112f3c78ecfb985f7d1935cb4a8a625cb0b000a4cf0aff327c0708d4c (25m gasLimit), +// - 0x891a2cf734349124752970c4b5666b5b71e9db38c40cb8aab493a11e5c85d6fd (45m gasLimit). +const signedTxHashes = [ + "0xb6274b80bc7cda162df89894c7748a5cb7ba2eaa6004183c41a1837c3b072f1e", + "0xc8354e4112f3c78ecfb985f7d1935cb4a8a625cb0b000a4cf0aff327c0708d4c", + "0x891a2cf734349124752970c4b5666b5b71e9db38c40cb8aab493a11e5c85d6fd", +]; + +const dir = path.join(__dirname, "broadcasted-createx-deployment-transactions"); function delay(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } +// This function deploys the `CreateX` contract using the private key of the deployer +// account: `0xeD456e05CaAb11d66C4c797dD6c1D6f9A7F352b5` (or any other preconfigured +// private key), and the hardcoded contract creation bytecode. +// IMPORTANT: This function must be enabled in the main entry point of the script by +// replacing the current logic at the end of this file with: +// ```ts +// deployUsingPrivateKey().catch((error) => { +// console.error(error); +// process.exitCode = 1; +// }); +// ``` +// Subsequently, every `npx hardhat run --no-compile --network scripts/deploy.ts` +// invocation will use the `deployUsingPrivateKey` function. // eslint-disable-next-line @typescript-eslint/no-unused-vars -async function deployNormal() { - const contract = await ethers.deployContract("CreateX"); +async function deployUsingPrivateKey() { + // Ensure the correct contract creation bytecode is used + if ( + hre.ethers.keccak256(initCode) != + // This following hash can be retrieved via Solidity and using the compiler settings in `./verification/CreateX.json`: + // ```sol + // // SPDX-License-Identifier: AGPL-3.0-only + // pragma solidity 0.8.23; + // + // import {CreateX} from "./src/CreateX.sol"; + // + // contract CreationCodeHashCreateX { + // function creationCodeHashCreateX() external pure returns (bytes32) { + // return keccak256(type(CreateX).creationCode); + // } + // } + // ``` + "0x12ec861579b63a3ab9db3b5a23c57d56402ad3061475b088f17054e2f2daf22f" + ) { + throw new Error("Incorrect contract creation bytecode."); + } + + const createxFactory = await hre.ethers.getContractFactory(abi, initCode); + const createx = await createxFactory.deploy(); + + await createx.waitForDeployment(); + const createxAddress = await createx.getAddress(); - await contract.waitForDeployment(); - const contractAddress = await contract.getAddress(); + console.log("CreateX deployed to: " + `${GREEN}${createxAddress}${RESET}\n`); - console.log("CreateX deployed to:", contractAddress); + if (createxAddress != "0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed") { + console.log( + `${RED}The CreateX address does not correspond to the expected address 0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed!${RESET}\n`, + ); + } - await delay(30000); // Wait for 30 seconds before verifying the contract + console.log( + "Waiting 30 seconds before beginning the contract verification to allow the block explorer to index the contract...\n", + ); + await delay(30000); // Wait for 30 seconds before verifying `CreateX` await hre.run("verify:verify", { - address: contractAddress, + address: createxAddress, }); } -async function deployRaw() { +// This function deploys the `CreateX` contract using a pre-signed transaction. +// The preconfigured pre-signed transaction is the default version using 3 million gas. +// IMPORTANT: This function is enabled in the main entry point of the script! Thus, every +// `npx hardhat run --no-compile --network scripts/deploy.ts` invocation +// will use the `deployUsingPresignedTransaction` function. +async function deployUsingPresignedTransaction() { + // Ensure a correct pre-signed transaction is used + if (!signedTxHashes.includes(hre.ethers.keccak256(signedTx))) { + throw new Error("Incorrect pre-signed transaction."); + } + try { // Send the transaction const tx = await hre.ethers.provider.broadcastTransaction(signedTx); - console.log("Transaction hash: " + `${GREEN}${tx.hash}${RESET}`); + console.log("Transaction hash: " + `${GREEN}${tx.hash}${RESET}\n`); const transactionReceipt = await tx.wait(); - const contractAddress = transactionReceipt?.contractAddress; - console.log("Contract address: " + `${GREEN}${contractAddress}${RESET}`); + const createxAddress = transactionReceipt?.contractAddress; + console.log( + "CreateX deployed to: " + `${GREEN}${createxAddress}${RESET}\n`, + ); // Save the transaction receipt in a JSON file if (!fs.existsSync(dir)) { fs.mkdirSync(dir); } - const saveDir = path.normalize(path.join(dir, "transaction_receipt.json")); + const saveDir = path.normalize( + path.join(dir, `transaction_receipt_date_${Date.now().toString()}.json`), + ); fs.writeFileSync(saveDir, JSON.stringify(transactionReceipt)); console.log( - `\n${GREEN}Transaction has been successfully broadcasted!${RESET}`, + `${GREEN}Transaction has been successfully broadcasted!${RESET}\n`, ); console.log(`Transaction details written to: ${GREEN}${saveDir}${RESET}\n`); - await delay(30000); // Wait for 30 seconds before verifying the contract + console.log( + "Waiting 30 seconds before beginning the contract verification to allow the block explorer to index the contract...\n", + ); + await delay(30000); // Wait for 30 seconds before verifying `CreateX` await hre.run("verify:verify", { - address: contractAddress, + address: createxAddress, }); } catch (err) { // Save the transaction error in a JSON file @@ -65,12 +138,12 @@ async function deployRaw() { const saveDir = path.normalize(path.join(dir, "transaction_error.json")); fs.writeFileSync(saveDir, JSON.stringify(err)); - console.log(`\n${RED}Transaction broadcasting failed!${RESET}`); + console.log(`${RED}Transaction broadcasting failed!${RESET}\n`); console.log(`Error details written to: ${RED}${saveDir}${RESET}\n`); } } -deployRaw().catch((error) => { +deployUsingPresignedTransaction().catch((error) => { console.error(error); process.exitCode = 1; }); diff --git a/scripts/presign.ts b/scripts/presign.ts index 47993c3f..feb22915 100644 --- a/scripts/presign.ts +++ b/scripts/presign.ts @@ -8,9 +8,31 @@ const RESET = "\x1b[0m"; const GREEN = "\x1b[32m"; const RED = "\x1b[31m"; -const dir = path.join(__dirname, "presigned-createx-deployment-transaction"); +import initCode from "./contract_creation_bytecode_createx.json"; +const dir = path.join(__dirname, "presigned-createx-deployment-transactions"); export async function presign() { + // Ensure the correct contract creation bytecode is used + if ( + hre.ethers.keccak256(initCode) != + // This following hash can be retrieved via Solidity and using the compiler settings in `./verification/CreateX.json`: + // ```sol + // // SPDX-License-Identifier: AGPL-3.0-only + // pragma solidity 0.8.23; + // + // import {CreateX} from "./src/CreateX.sol"; + // + // contract CreationCodeHashCreateX { + // function creationCodeHashCreateX() external pure returns (bytes32) { + // return keccak256(type(CreateX).creationCode); + // } + // } + // ``` + "0x12ec861579b63a3ab9db3b5a23c57d56402ad3061475b088f17054e2f2daf22f" + ) { + throw new Error("Incorrect contract creation bytecode."); + } + try { if (!Array.isArray(accounts)) { throw new Error("No private key configured."); @@ -34,17 +56,14 @@ export async function presign() { "Using wallet address: " + `${GREEN}${wallet.address}${RESET}\n`, ); - const CreateX = await hre.ethers.getContractFactory("CreateX"); - const initCode = await CreateX.getDeployTransaction(); - //////////////////////////////////////////////// // Prepare the replayable transaction payload // //////////////////////////////////////////////// const tx = new hre.ethers.Transaction(); tx.to = null; // A contract creation transaction has a `to` address of `null` - tx.gasLimit = 3_000_000; // A normal deployment currently costs 2,543,595 gas. We can later add different `gasLimit` levels for the final presigned transaction + tx.gasLimit = 3_000_000; // A normal deployment currently costs 2,580,902 gas tx.gasPrice = hre.ethers.parseUnits("100", "gwei"); // A gas price of 100 gwei - tx.data = initCode.data; // Contract creation bytecode + tx.data = initCode; // Contract creation bytecode of `CreateX` tx.chainId = 0; // Disable EIP-155 functionality (https://github.com/ethers-io/ethers.js/blob/bbcfb5f6b88800b8ef068e4a2923675503320e33/src.ts/transaction/transaction.ts#L168) tx.nonce = 0; // It must be the first transaction of the deployer account tx.type = 0; // Set to legacy transaction type 0 @@ -59,11 +78,14 @@ export async function presign() { fs.mkdirSync(dir); } const saveDir = path.normalize( - path.join(dir, "signed_serialised_transaction.json"), + path.join( + dir, + `signed_serialised_transaction_gaslimit_${tx.gasLimit}_.json`, + ), ); fs.writeFileSync(saveDir, JSON.stringify(signedTx.serialized)); - console.log(`${GREEN}Signing attempt has been successful!${RESET}`); + console.log(`${GREEN}Signing attempt has been successful!${RESET}\n`); console.log( `Serialised signed transaction written to: ${GREEN}${saveDir}${RESET}\n`, ); @@ -92,7 +114,7 @@ export async function presign() { ); fs.writeFileSync(saveDir, JSON.stringify(err)); - console.log(`${RED}Signing attempt failed!${RESET}`); + console.log(`${RED}Signing attempt failed!${RESET}\n`); console.log(`Error details written to: ${RED}${saveDir}${RESET}\n`); } } diff --git a/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_25000000_.json b/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_25000000_.json new file mode 100644 index 00000000..801043c5 --- /dev/null +++ b/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_25000000_.json @@ -0,0 +1 @@ +"0xf92f6a8085174876e80084017d78408080b92f1660a06040523060805234801561001457600080fd5b50608051612e3e6100d860003960008181610603015281816107050152818161082b015281816108d50152818161127f01528181611375015281816113e00152818161141f015281816114a7015281816115b3015281816117d20152818161183d0152818161187c0152818161190401528181611ac501528181611c7801528181611ce301528181611d2201528181611daa01528181611fe901528181612206015281816122f20152818161244d015281816124a601526125820152612e3e6000f3fe60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a1ba06c6a2a796c36b3f9ac9adacf91987f9cd29b602e63ece01d17a26bf329634d94a06df43ab80059dd7dd3ec16ef5a983cf6652e7fb703349145f46024f848a9a936" diff --git a/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_3000000_.json b/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_3000000_.json new file mode 100644 index 00000000..8844e800 --- /dev/null +++ b/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_3000000_.json @@ -0,0 +1 @@ +"0xf92f698085174876e800832dc6c08080b92f1660a06040523060805234801561001457600080fd5b50608051612e3e6100d860003960008181610603015281816107050152818161082b015281816108d50152818161127f01528181611375015281816113e00152818161141f015281816114a7015281816115b3015281816117d20152818161183d0152818161187c0152818161190401528181611ac501528181611c7801528181611ce301528181611d2201528181611daa01528181611fe901528181612206015281816122f20152818161244d015281816124a601526125820152612e3e6000f3fe60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a1ca005f70bf8a1493291468f36ef23b05eb3a4f1807f6b4022942a4104b7537bfc36a029528c0c29546c81e7d78b0277ef87031541bdc96427b246ecedb6d74cd3ed62" diff --git a/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_45000000_.json b/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_45000000_.json new file mode 100644 index 00000000..6e2af74c --- /dev/null +++ b/scripts/presigned-createx-deployment-transactions/signed_serialised_transaction_gaslimit_45000000_.json @@ -0,0 +1 @@ +"0xf92f6a8085174876e8008402aea5408080b92f1660a06040523060805234801561001457600080fd5b50608051612e3e6100d860003960008181610603015281816107050152818161082b015281816108d50152818161127f01528181611375015281816113e00152818161141f015281816114a7015281816115b3015281816117d20152818161183d0152818161187c0152818161190401528181611ac501528181611c7801528181611ce301528181611d2201528181611daa01528181611fe901528181612206015281816122f20152818161244d015281816124a601526125820152612e3e6000f3fe60806040526004361061018a5760003560e01c806381503da1116100d6578063d323826a1161007f578063e96deee411610059578063e96deee414610395578063f5745aba146103a8578063f9664498146103bb57600080fd5b8063d323826a1461034f578063ddda0acb1461036f578063e437252a1461038257600080fd5b80639c36a286116100b05780639c36a28614610316578063a7db93f214610329578063c3fe107b1461033c57600080fd5b806381503da1146102d0578063890c283b146102e357806398e810771461030357600080fd5b80632f990e3f116101385780636cec2536116101125780636cec25361461027d57806374637a7a1461029d5780637f565360146102bd57600080fd5b80632f990e3f1461023757806331a7c8c81461024a57806342d654fc1461025d57600080fd5b806327fe18221161016957806327fe1822146101f15780632852527a1461020457806328ddd0461461021757600080fd5b8062d84acb1461018f57806326307668146101cb57806326a32fc7146101de575b600080fd5b6101a261019d366004612915565b6103ce565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6101a26101d9366004612994565b6103e6565b6101a26101ec3660046129db565b610452565b6101a26101ff3660046129db565b6104de565b6101a2610212366004612a39565b610539565b34801561022357600080fd5b506101a2610232366004612a90565b6106fe565b6101a2610245366004612aa9565b61072a565b6101a2610258366004612aa9565b6107bb565b34801561026957600080fd5b506101a2610278366004612b1e565b6107c9565b34801561028957600080fd5b506101a2610298366004612a90565b610823565b3480156102a957600080fd5b506101a26102b8366004612b4a565b61084f565b6101a26102cb3660046129db565b611162565b6101a26102de366004612b74565b6111e8565b3480156102ef57600080fd5b506101a26102fe366004612bac565b611276565b6101a2610311366004612bce565b6112a3565b6101a2610324366004612994565b611505565b6101a2610337366004612c49565b6116f1565b6101a261034a366004612aa9565b611964565b34801561035b57600080fd5b506101a261036a366004612cd9565b6119ed565b6101a261037d366004612c49565b611a17565b6101a2610390366004612bce565b611e0c565b6101a26103a3366004612915565b611e95565b6101a26103b6366004612bce565b611ea4565b6101a26103c9366004612b74565b611f2d565b60006103dd8585858533611a17565b95945050505050565b6000806103f2846120db565b90508083516020850134f59150610408826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a35092915050565b60006104d86104d260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b836103e6565b92915050565b600081516020830134f090506104f3816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a2919050565b600080610545856120db565b905060008460601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f593505073ffffffffffffffffffffffffffffffffffffffff8316610635576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526024015b60405180910390fd5b604051829073ffffffffffffffffffffffffffffffffffffffff8516907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808473ffffffffffffffffffffffffffffffffffffffff1634876040516106a19190612d29565b60006040518083038185875af1925050503d80600081146106de576040519150601f19603f3d011682016040523d82523d6000602084013e6106e3565b606091505b50915091506106f382828961247d565b505050509392505050565b60006104d87f00000000000000000000000000000000000000000000000000000000000000008361084f565b60006107b36107aa60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b85858533611a17565b949350505050565b60006107b3848484336112a3565b60006040518260005260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d694600052600160345350506017601e20919050565b60006104d8827f00000000000000000000000000000000000000000000000000000000000000006107c9565b600060607f9400000000000000000000000000000000000000000000000000000000000000610887600167ffffffffffffffff612d45565b67ffffffffffffffff16841115610902576040517f3c55ab3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b836000036109c7576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529150611152565b607f8411610a60576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b16602283015260f886901b1660368201526037016109b1565b60ff8411610b1f576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527fff0000000000000000000000000000000000000000000000000000000000000080831660218301527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660228301527f8100000000000000000000000000000000000000000000000000000000000000603683015260f886901b1660378201526038016109b1565b61ffff8411610bff576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660378201526039016109b1565b62ffffff8411610ce0576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e886901b166037820152603a016109b1565b63ffffffff8411610dc2576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e086901b166037820152603b016109b1565b64ffffffffff8411610ea5576040517fdb0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f850000000000000000000000000000000000000000000000000000000000000060368201527fffffffffff00000000000000000000000000000000000000000000000000000060d886901b166037820152603c016109b1565b65ffffffffffff8411610f89576040517fdc0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f860000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffff000000000000000000000000000000000000000000000000000060d086901b166037820152603d016109b1565b66ffffffffffffff841161106e576040517fdd0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f870000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffff0000000000000000000000000000000000000000000000000060c886901b166037820152603e016109b1565b6040517fde0000000000000000000000000000000000000000000000000000000000000060208201527fff00000000000000000000000000000000000000000000000000000000000000821660218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b1660228201527f880000000000000000000000000000000000000000000000000000000000000060368201527fffffffffffffffff00000000000000000000000000000000000000000000000060c086901b166037820152603f0160405160208183030381529060405291505b5080516020909101209392505050565b60006104d86111e260408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b83611505565b600061126f61126860408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b8484610539565b9392505050565b600061126f83837f00000000000000000000000000000000000000000000000000000000000000006119ed565b60008451602086018451f090506112b9816123d3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808273ffffffffffffffffffffffffffffffffffffffff168560200151876040516113279190612d29565b60006040518083038185875af1925050503d8060008114611364576040519150601f19603f3d011682016040523d82523d6000602084013e611369565b606091505b5091509150816113c9577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001631156114fb578373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611495576040519150601f19603f3d011682016040523d82523d6000602084013e61149a565b606091505b509092509050816114fb577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b5050949350505050565b600080611511846120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff81166115e0576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a361162c83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1634876040516116569190612d29565b60006040518083038185875af1925050503d8060008114611693576040519150601f19603f3d011682016040523d82523d6000602084013e611698565b606091505b505090506116a681866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a25050505092915050565b6000806116fd876120db565b9050808651602088018651f59150611714826123d3565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f790600090a36000808373ffffffffffffffffffffffffffffffffffffffff168660200151886040516117849190612d29565b60006040518083038185875af1925050503d80600081146117c1576040519150601f19603f3d011682016040523d82523d6000602084013e6117c6565b606091505b509150915081611826577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611958578473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50909250905081611958577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b50505095945050505050565b60006107b36119e460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b858585336116f1565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b600080611a23876120db565b905060006040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000828251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116611af2576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b604051839073ffffffffffffffffffffffffffffffffffffffff8316907f2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c906790600090a3611b3e83610823565b935060008173ffffffffffffffffffffffffffffffffffffffff1687600001518a604051611b6c9190612d29565b60006040518083038185875af1925050503d8060008114611ba9576040519150601f19603f3d011682016040523d82523d6000602084013e611bae565b606091505b50509050611bbc81866124ff565b60405173ffffffffffffffffffffffffffffffffffffffff8616907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a260608573ffffffffffffffffffffffffffffffffffffffff1688602001518a604051611c299190612d29565b60006040518083038185875af1925050503d8060008114611c66576040519150601f19603f3d011682016040523d82523d6000602084013e611c6b565b606091505b50909250905081611ccc577f0000000000000000000000000000000000000000000000000000000000000000816040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163115611dfe578673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163160405160006040518083038185875af1925050503d8060008114611d98576040519150601f19603f3d011682016040523d82523d6000602084013e611d9d565b606091505b50909250905081611dfe577f0000000000000000000000000000000000000000000000000000000000000000816040517fc2b3f44500000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050505095945050505050565b60006103dd611e8c60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b868686866116f1565b60006103dd85858585336116f1565b60006103dd611f2460408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b86868686611a17565b6000808360601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f092505073ffffffffffffffffffffffffffffffffffffffff8216612016576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51190600090a26000808373ffffffffffffffffffffffffffffffffffffffff1634866040516120809190612d29565b60006040518083038185875af1925050503d80600081146120bd576040519150601f19603f3d011682016040523d82523d6000602084013e6120c2565b606091505b50915091506120d282828861247d565b50505092915050565b60008060006120e9846125b3565b9092509050600082600281111561210257612102612e02565b1480156121205750600081600281111561211e5761211e612e02565b145b1561215e57604080513360208201524691810191909152606081018590526080016040516020818303038152906040528051906020012092506123cc565b600082600281111561217257612172612e02565b1480156121905750600181600281111561218e5761218e612e02565b145b156121b0576121a9338560009182526020526040902090565b92506123cc565b60008260028111156121c4576121c4612e02565b03612233576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b600182600281111561224757612247612e02565b1480156122655750600081600281111561226357612263612e02565b145b1561227e576121a9468560009182526020526040902090565b600182600281111561229257612292612e02565b1480156122b0575060028160028111156122ae576122ae612e02565b145b1561231f576040517f13b3a2a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b61239a60408051437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101406020830152419282019290925260608101919091524260808201524460a08201524660c08201523360e08201526000906101000160405160208183030381529060405280519060200120905090565b84036123a657836123c9565b604080516020810186905201604051602081830303815290604052805190602001205b92505b5050919050565b73ffffffffffffffffffffffffffffffffffffffff8116158061240b575073ffffffffffffffffffffffffffffffffffffffff81163b155b1561247a576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b50565b82158061249f575073ffffffffffffffffffffffffffffffffffffffff81163b155b156124fa577f0000000000000000000000000000000000000000000000000000000000000000826040517fa57ca23900000000000000000000000000000000000000000000000000000000815260040161062c929190612d94565b505050565b811580612520575073ffffffffffffffffffffffffffffffffffffffff8116155b80612540575073ffffffffffffffffffffffffffffffffffffffff81163b155b156125af576040517fc05cee7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260240161062c565b5050565b600080606083901c3314801561261057508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b1561262057506000905080915091565b606083901c3314801561265a57507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561266b5750600090506001915091565b33606084901c036126825750600090506002915091565b606083901c1580156126db57508260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000145b156126ec5750600190506000915091565b606083901c15801561272557507fff00000000000000000000000000000000000000000000000000000000000000601484901a60f81b16155b1561273557506001905080915091565b606083901c61274a5750600190506002915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f0100000000000000000000000000000000000000000000000000000000000000036127a55750600290506000915091565b8260141a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000036127e15750600290506001915091565b506002905080915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261282c57600080fd5b813567ffffffffffffffff80821115612847576128476127ec565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561288d5761288d6127ec565b816040528381528660208588010111156128a657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000604082840312156128d857600080fd5b6040516040810181811067ffffffffffffffff821117156128fb576128fb6127ec565b604052823581526020928301359281019290925250919050565b60008060008060a0858703121561292b57600080fd5b84359350602085013567ffffffffffffffff8082111561294a57600080fd5b6129568883890161281b565b9450604087013591508082111561296c57600080fd5b506129798782880161281b565b92505061298986606087016128c6565b905092959194509250565b600080604083850312156129a757600080fd5b82359150602083013567ffffffffffffffff8111156129c557600080fd5b6129d18582860161281b565b9150509250929050565b6000602082840312156129ed57600080fd5b813567ffffffffffffffff811115612a0457600080fd5b6107b38482850161281b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a3457600080fd5b919050565b600080600060608486031215612a4e57600080fd5b83359250612a5e60208501612a10565b9150604084013567ffffffffffffffff811115612a7a57600080fd5b612a868682870161281b565b9150509250925092565b600060208284031215612aa257600080fd5b5035919050565b600080600060808486031215612abe57600080fd5b833567ffffffffffffffff80821115612ad657600080fd5b612ae28783880161281b565b94506020860135915080821115612af857600080fd5b50612b058682870161281b565b925050612b1585604086016128c6565b90509250925092565b60008060408385031215612b3157600080fd5b82359150612b4160208401612a10565b90509250929050565b60008060408385031215612b5d57600080fd5b612b6683612a10565b946020939093013593505050565b60008060408385031215612b8757600080fd5b612b9083612a10565b9150602083013567ffffffffffffffff8111156129c557600080fd5b60008060408385031215612bbf57600080fd5b50508035926020909101359150565b60008060008060a08587031215612be457600080fd5b843567ffffffffffffffff80821115612bfc57600080fd5b612c088883890161281b565b95506020870135915080821115612c1e57600080fd5b50612c2b8782880161281b565b935050612c3b86604087016128c6565b915061298960808601612a10565b600080600080600060c08688031215612c6157600080fd5b85359450602086013567ffffffffffffffff80821115612c8057600080fd5b612c8c89838a0161281b565b95506040880135915080821115612ca257600080fd5b50612caf8882890161281b565b935050612cbf87606088016128c6565b9150612ccd60a08701612a10565b90509295509295909350565b600080600060608486031215612cee57600080fd5b8335925060208401359150612b1560408501612a10565b60005b83811015612d20578181015183820152602001612d08565b50506000910152565b60008251612d3b818460208701612d05565b9190910192915050565b67ffffffffffffffff828116828216039080821115612d8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260008251806040840152612dcf816060850160208701612d05565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000817000a1ba0300158c71a63885ce53f05ff1cb5bc051f0c5b66e0c36d51cbdb62a94daed813a021e633cd78631d25153f505b7832aba551312add5382f3faf11be65d2d19bb9e" diff --git a/verification/CreateX.json b/verification/CreateX.json new file mode 100644 index 00000000..c0c8d32d --- /dev/null +++ b/verification/CreateX.json @@ -0,0 +1,31 @@ +{ + "language": "Solidity", + "sources": { + "src/CreateX.sol": { + "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity 0.8.23;\n\n/**\n * @title CreateX Factory Smart Contract\n * @author pcaversaccio (https://web.archive.org/web/20230921103111/https://pcaversaccio.com/)\n * @custom:coauthor Matt Solomon (https://web.archive.org/web/20230921103335/https://mattsolomon.dev/)\n * @notice Factory smart contract to make easier and safer usage of the\n * `CREATE` (https://web.archive.org/web/20230921103540/https://www.evm.codes/#f0?fork=shanghai) and `CREATE2`\n * (https://web.archive.org/web/20230921103540/https://www.evm.codes/#f5?fork=shanghai) EVM opcodes as well as of\n * `CREATE3`-based (https://web.archive.org/web/20230921103920/https://github.com/ethereum/EIPs/pull/3171) contract creations.\n * @dev To simplify testing of non-public variables and functions, we use the `internal`\n * function visibility specifier `internal` for all variables and functions, even though\n * they could technically be `private` since we do not expect anyone to inherit from\n * the `CreateX` contract.\n * @custom:security-contact See https://web.archive.org/web/20230921105029/https://raw.githubusercontent.com/pcaversaccio/createx/main/SECURITY.md.\n */\ncontract CreateX {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* IMMUTABLES */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Caches the contract address at construction, to be used for the custom errors.\n */\n address internal immutable _SELF = address(this);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* TYPES */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Struct for the `payable` amounts in a deploy-and-initialise call.\n */\n struct Values {\n uint256 constructorAmount;\n uint256 initCallAmount;\n }\n\n /**\n * @dev Enum for the selection of a permissioned deploy protection.\n */\n enum SenderBytes {\n MsgSender,\n ZeroAddress,\n Random\n }\n\n /**\n * @dev Enum for the selection of a cross-chain redeploy protection.\n */\n enum RedeployProtectionFlag {\n True,\n False,\n Unspecified\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* EVENTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Event that is emitted when a contract is successfully created.\n * @param newContract The address of the new contract.\n * @param salt The 32-byte random value used to create the contract address.\n */\n event ContractCreation(address indexed newContract, bytes32 indexed salt);\n\n /**\n * @dev Event that is emitted when a contract is successfully created.\n * @param newContract The address of the new contract.\n */\n event ContractCreation(address indexed newContract);\n\n /**\n * @dev Event that is emitted when a `CREATE3` proxy contract is successfully created.\n * @param newContract The address of the new proxy contract.\n * @param salt The 32-byte random value used to create the proxy address.\n */\n event Create3ProxyContractCreation(address indexed newContract, bytes32 indexed salt);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Error that occurs when the contract creation failed.\n * @param emitter The contract that emits the error.\n */\n error FailedContractCreation(address emitter);\n\n /**\n * @dev Error that occurs when the contract initialisation call failed.\n * @param emitter The contract that emits the error.\n * @param revertData The data returned by the failed initialisation call.\n */\n error FailedContractInitialisation(address emitter, bytes revertData);\n\n /**\n * @dev Error that occurs when the salt value is invalid.\n * @param emitter The contract that emits the error.\n */\n error InvalidSalt(address emitter);\n\n /**\n * @dev Error that occurs when the nonce value is invalid.\n * @param emitter The contract that emits the error.\n */\n error InvalidNonceValue(address emitter);\n\n /**\n * @dev Error that occurs when transferring ether has failed.\n * @param emitter The contract that emits the error.\n * @param revertData The data returned by the failed ether transfer.\n */\n error FailedEtherTransfer(address emitter, bytes revertData);\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Deploys a new contract via calling the `CREATE` opcode and using the creation\n * bytecode `initCode` and `msg.value` as inputs. In order to save deployment costs,\n * we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero,\n * `initCode` must have a `payable` constructor.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n */\n function deployCreate(bytes memory initCode) public payable returns (address newContract) {\n assembly (\"memory-safe\") {\n newContract := create(callvalue(), add(initCode, 0x20), mload(initCode))\n }\n _requireSuccessfulContractCreation({newContract: newContract});\n emit ContractCreation({newContract: newContract});\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE` opcode and using the\n * creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n * amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. In order to\n * save deployment costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount`\n * is non-zero, `initCode` must have a `payable` constructor.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreateAndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n assembly (\"memory-safe\") {\n newContract := create(mload(values), add(initCode, 0x20), mload(initCode))\n }\n _requireSuccessfulContractCreation({newContract: newContract});\n emit ContractCreation({newContract: newContract});\n\n (bool success, bytes memory returnData) = newContract.call{value: values.initCallAmount}(data);\n if (!success) {\n revert FailedContractInitialisation({emitter: _SELF, revertData: returnData});\n }\n\n if (_SELF.balance != 0) {\n // Any wei amount previously forced into this contract (e.g. by using the `SELFDESTRUCT`\n // opcode) will be part of the refund transaction.\n (success, returnData) = refundAddress.call{value: _SELF.balance}(\"\");\n if (!success) {\n revert FailedEtherTransfer({emitter: _SELF, revertData: returnData});\n }\n }\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE` opcode and using the\n * creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n * amounts `values`, and `msg.value` as inputs. In order to save deployment costs, we do not\n * sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n * `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreateAndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n newContract = deployCreateAndInit({initCode: initCode, data: data, values: values, refundAddress: msg.sender});\n }\n\n /**\n * @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE` opcode, and initialises\n * the implementation contract using the implementation address `implementation`, the initialisation\n * code `data`, and `msg.value` as inputs. Note that if `msg.value` is non-zero, the initialiser\n * function called via `data` must be `payable`.\n * @param implementation The 20-byte implementation contract address.\n * @param data The initialisation code that is passed to the deployed proxy contract.\n * @return proxy The 20-byte address where the clone was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreateClone(address implementation, bytes memory data) public payable returns (address proxy) {\n bytes20 implementationInBytes = bytes20(implementation);\n assembly (\"memory-safe\") {\n let clone := mload(0x40)\n mstore(\n clone,\n hex\"3d_60_2d_80_60_0a_3d_39_81_f3_36_3d_3d_37_3d_3d_3d_36_3d_73_00_00_00_00_00_00_00_00_00_00_00_00\"\n )\n mstore(add(clone, 0x14), implementationInBytes)\n mstore(\n add(clone, 0x28),\n hex\"5a_f4_3d_82_80_3e_90_3d_91_60_2b_57_fd_5b_f3_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00\"\n )\n proxy := create(0, clone, 0x37)\n }\n if (proxy == address(0)) {\n revert FailedContractCreation({emitter: _SELF});\n }\n emit ContractCreation({newContract: proxy});\n\n (bool success, bytes memory returnData) = proxy.call{value: msg.value}(data);\n _requireSuccessfulContractInitialisation({\n success: success,\n returnData: returnData,\n implementation: implementation\n });\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via `deployer` using\n * the `CREATE` opcode. For the specification of the Recursive Length Prefix (RLP) encoding\n * scheme, please refer to p. 19 of the Ethereum Yellow Paper (https://web.archive.org/web/20230921110603/https://ethereum.github.io/yellowpaper/paper.pdf)\n * and the Ethereum Wiki (https://web.archive.org/web/20230921112807/https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/).\n * For further insights also, see the following issue: https://web.archive.org/web/20230921112943/https://github.com/transmissions11/solmate/issues/207.\n *\n * Based on the EIP-161 (https://web.archive.org/web/20230921113207/https://raw.githubusercontent.com/ethereum/EIPs/master/EIPS/eip-161.md) specification,\n * all contract accounts on the Ethereum mainnet are initiated with `nonce = 1`. Thus, the\n * first contract address created by another contract is calculated with a non-zero nonce.\n * @param deployer The 20-byte deployer address.\n * @param nonce The next 32-byte nonce of the deployer address.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreateAddress(address deployer, uint256 nonce) public view returns (address computedAddress) {\n bytes memory data;\n bytes1 len = bytes1(0x94);\n\n // The theoretical allowed limit, based on EIP-2681, for an account nonce is 2**64-2:\n // https://web.archive.org/web/20230921113252/https://eips.ethereum.org/EIPS/eip-2681.\n if (nonce > type(uint64).max - 1) {\n revert InvalidNonceValue({emitter: _SELF});\n }\n\n // The integer zero is treated as an empty byte string and therefore has only one length prefix,\n // 0x80, which is calculated via 0x80 + 0.\n if (nonce == 0x00) {\n data = abi.encodePacked(bytes1(0xd6), len, deployer, bytes1(0x80));\n }\n // A one-byte integer in the [0x00, 0x7f] range uses its own value as a length prefix, there is no\n // additional \"0x80 + length\" prefix that precedes it.\n else if (nonce <= 0x7f) {\n data = abi.encodePacked(bytes1(0xd6), len, deployer, uint8(nonce));\n }\n // In the case of `nonce > 0x7f` and `nonce <= type(uint8).max`, we have the following encoding scheme\n // (the same calculation can be carried over for higher nonce bytes):\n // 0xda = 0xc0 (short RLP prefix) + 0x1a (= the bytes length of: 0x94 + address + 0x84 + nonce, in hex),\n // 0x94 = 0x80 + 0x14 (= the bytes length of an address, 20 bytes, in hex),\n // 0x84 = 0x80 + 0x04 (= the bytes length of the nonce, 4 bytes, in hex).\n else if (nonce <= type(uint8).max) {\n data = abi.encodePacked(bytes1(0xd7), len, deployer, bytes1(0x81), uint8(nonce));\n } else if (nonce <= type(uint16).max) {\n data = abi.encodePacked(bytes1(0xd8), len, deployer, bytes1(0x82), uint16(nonce));\n } else if (nonce <= type(uint24).max) {\n data = abi.encodePacked(bytes1(0xd9), len, deployer, bytes1(0x83), uint24(nonce));\n } else if (nonce <= type(uint32).max) {\n data = abi.encodePacked(bytes1(0xda), len, deployer, bytes1(0x84), uint32(nonce));\n } else if (nonce <= type(uint40).max) {\n data = abi.encodePacked(bytes1(0xdb), len, deployer, bytes1(0x85), uint40(nonce));\n } else if (nonce <= type(uint48).max) {\n data = abi.encodePacked(bytes1(0xdc), len, deployer, bytes1(0x86), uint48(nonce));\n } else if (nonce <= type(uint56).max) {\n data = abi.encodePacked(bytes1(0xdd), len, deployer, bytes1(0x87), uint56(nonce));\n } else {\n data = abi.encodePacked(bytes1(0xde), len, deployer, bytes1(0x88), uint64(nonce));\n }\n\n computedAddress = address(uint160(uint256(keccak256(data))));\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via this contract\n * using the `CREATE` opcode. For the specification of the Recursive Length Prefix (RLP)\n * encoding scheme, please refer to p. 19 of the Ethereum Yellow Paper (https://web.archive.org/web/20230921110603/https://ethereum.github.io/yellowpaper/paper.pdf)\n * and the Ethereum Wiki (https://web.archive.org/web/20230921112807/https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/).\n * For further insights also, see the following issue: https://web.archive.org/web/20230921112943/https://github.com/transmissions11/solmate/issues/207.\n *\n * Based on the EIP-161 (https://web.archive.org/web/20230921113207/https://raw.githubusercontent.com/ethereum/EIPs/master/EIPS/eip-161.md) specification,\n * all contract accounts on the Ethereum mainnet are initiated with `nonce = 1`. Thus, the\n * first contract address created by another contract is calculated with a non-zero nonce.\n * @param nonce The next 32-byte nonce of this contract.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreateAddress(uint256 nonce) public view returns (address computedAddress) {\n computedAddress = computeCreateAddress({deployer: _SELF, nonce: nonce});\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE2 */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Deploys a new contract via calling the `CREATE2` opcode and using the salt value `salt`,\n * the creation bytecode `initCode`, and `msg.value` as inputs. In order to save deployment costs,\n * we do not sanity check the `initCode` length. Note that if `msg.value` is non-zero, `initCode`\n * must have a `payable` constructor.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n */\n function deployCreate2(bytes32 salt, bytes memory initCode) public payable returns (address newContract) {\n bytes32 guardedSalt = _guard({salt: salt});\n assembly (\"memory-safe\") {\n newContract := create2(callvalue(), add(initCode, 0x20), mload(initCode), guardedSalt)\n }\n _requireSuccessfulContractCreation({newContract: newContract});\n emit ContractCreation({newContract: newContract, salt: guardedSalt});\n }\n\n /**\n * @dev Deploys a new contract via calling the `CREATE2` opcode and using the creation bytecode\n * `initCode` and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a\n * diverse selection of block and transaction properties. This approach does not guarantee true\n * randomness! In order to save deployment costs, we do not sanity check the `initCode` length.\n * Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n */\n function deployCreate2(bytes memory initCode) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2`.\n newContract = deployCreate2({salt: _generateSalt(), initCode: initCode});\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n * salt value `salt`, the creation bytecode `initCode`, the initialisation code `data`, the struct\n * for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs.\n * In order to save deployment costs, we do not sanity check the `initCode` length. Note that if\n * `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n bytes32 guardedSalt = _guard({salt: salt});\n assembly (\"memory-safe\") {\n newContract := create2(mload(values), add(initCode, 0x20), mload(initCode), guardedSalt)\n }\n _requireSuccessfulContractCreation({newContract: newContract});\n emit ContractCreation({newContract: newContract, salt: guardedSalt});\n\n (bool success, bytes memory returnData) = newContract.call{value: values.initCallAmount}(data);\n if (!success) {\n revert FailedContractInitialisation({emitter: _SELF, revertData: returnData});\n }\n\n if (_SELF.balance != 0) {\n // Any wei amount previously forced into this contract (e.g. by using the `SELFDESTRUCT`\n // opcode) will be part of the refund transaction.\n (success, returnData) = refundAddress.call{value: _SELF.balance}(\"\");\n if (!success) {\n revert FailedEtherTransfer({emitter: _SELF, revertData: returnData});\n }\n }\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n * salt value `salt`, creation bytecode `initCode`, the initialisation code `data`, the struct for\n * the `payable` amounts `values`, and `msg.value` as inputs. In order to save deployment costs,\n * we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n * `initCode` must have a `payable` constructor, and any excess ether is returned to `msg.sender`.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2AndInit`.\n newContract = deployCreate2AndInit({\n salt: salt,\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: msg.sender\n });\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n * creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable`\n * amounts `values`, the refund address `refundAddress`, and `msg.value` as inputs. The salt value\n * is calculated pseudo-randomly using a diverse selection of block and transaction properties.\n * This approach does not guarantee true randomness! In order to save deployment costs, we do not\n * sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode`\n * must have a `payable` constructor.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2AndInit`.\n newContract = deployCreate2AndInit({\n salt: _generateSalt(),\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: refundAddress\n });\n }\n\n /**\n * @dev Deploys and initialises a new contract via calling the `CREATE2` opcode and using the\n * creation bytecode `initCode`, the initialisation code `data`, the struct for the `payable` amounts\n * `values`, and `msg.value` as inputs. The salt value is calculated pseudo-randomly using a\n * diverse selection of block and transaction properties. This approach does not guarantee true\n * randomness! In order to save deployment costs, we do not sanity check the `initCode` length.\n * Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n * and any excess ether is returned to `msg.sender`.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2AndInit`.\n newContract = deployCreate2AndInit({\n salt: _generateSalt(),\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: msg.sender\n });\n }\n\n /**\n * @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE2` opcode and the salt\n * value `salt`, and initialises the implementation contract using the implementation address\n * `implementation`, the initialisation code `data`, and `msg.value` as inputs. Note that if\n * `msg.value` is non-zero, the initialiser function called via `data` must be `payable`.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param implementation The 20-byte implementation contract address.\n * @param data The initialisation code that is passed to the deployed proxy contract.\n * @return proxy The 20-byte address where the clone was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2Clone(\n bytes32 salt,\n address implementation,\n bytes memory data\n ) public payable returns (address proxy) {\n bytes32 guardedSalt = _guard({salt: salt});\n bytes20 implementationInBytes = bytes20(implementation);\n assembly (\"memory-safe\") {\n let clone := mload(0x40)\n mstore(\n clone,\n hex\"3d_60_2d_80_60_0a_3d_39_81_f3_36_3d_3d_37_3d_3d_3d_36_3d_73_00_00_00_00_00_00_00_00_00_00_00_00\"\n )\n mstore(add(clone, 0x14), implementationInBytes)\n mstore(\n add(clone, 0x28),\n hex\"5a_f4_3d_82_80_3e_90_3d_91_60_2b_57_fd_5b_f3_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00\"\n )\n proxy := create2(0, clone, 0x37, guardedSalt)\n }\n if (proxy == address(0)) {\n revert FailedContractCreation({emitter: _SELF});\n }\n emit ContractCreation({newContract: proxy, salt: guardedSalt});\n\n (bool success, bytes memory returnData) = proxy.call{value: msg.value}(data);\n _requireSuccessfulContractInitialisation({\n success: success,\n returnData: returnData,\n implementation: implementation\n });\n }\n\n /**\n * @dev Deploys a new EIP-1167 minimal proxy contract using the `CREATE2` opcode and the salt\n * value `salt`, and initialises the implementation contract using the implementation address\n * `implementation`, the initialisation code `data`, and `msg.value` as inputs. The salt value is\n * calculated pseudo-randomly using a diverse selection of block and transaction properties. This\n * approach does not guarantee true randomness! Note that if `msg.value` is non-zero, the initialiser\n * function called via `data` must be `payable`.\n * @param implementation The 20-byte implementation contract address.\n * @param data The initialisation code that is passed to the deployed proxy contract.\n * @return proxy The 20-byte address where the clone was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate2Clone(address implementation, bytes memory data) public payable returns (address proxy) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate2Clone`.\n proxy = deployCreate2Clone({salt: _generateSalt(), implementation: implementation, data: data});\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via `deployer` using\n * the `CREATE2` opcode. Any change in the `initCodeHash` or `salt` values will result in a new\n * destination address. This implementation is based on OpenZeppelin:\n * https://web.archive.org/web/20230921113703/https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/181d518609a9f006fcb97af63e6952e603cf100e/contracts/utils/Create2.sol.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCodeHash The 32-byte bytecode digest of the contract creation bytecode.\n * @param deployer The 20-byte deployer address.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreate2Address(\n bytes32 salt,\n bytes32 initCodeHash,\n address deployer\n ) public pure returns (address computedAddress) {\n assembly (\"memory-safe\") {\n // | | ↓ ptr ... ↓ ptr + 0x0B (start) ... ↓ ptr + 0x20 ... ↓ ptr + 0x40 ... |\n // |----------------------|---------------------------------------------------------------------------|\n // | initCodeHash | CCCCCCCCCCCCC...CC |\n // | salt | BBBBBBBBBBBBB...BB |\n // | deployer | 000000...0000AAAAAAAAAAAAAAAAAAA...AA |\n // | 0xFF | FF |\n // |----------------------|---------------------------------------------------------------------------|\n // | memory | 000000...00FFAAAAAAAAAAAAAAAAAAA...AABBBBBBBBBBBBB...BBCCCCCCCCCCCCC...CC |\n // | keccak256(start, 85) | ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ |\n let ptr := mload(0x40)\n mstore(add(ptr, 0x40), initCodeHash)\n mstore(add(ptr, 0x20), salt)\n mstore(ptr, deployer)\n let start := add(ptr, 0x0b)\n mstore8(start, 0xff)\n computedAddress := keccak256(start, 85)\n }\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via this contract using\n * the `CREATE2` opcode. Any change in the `initCodeHash` or `salt` values will result in a new\n * destination address.\n * @param salt The 32-byte random value used to create the contract address.\n * @param initCodeHash The 32-byte bytecode digest of the contract creation bytecode.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) public view returns (address computedAddress) {\n computedAddress = computeCreate2Address({salt: salt, initCodeHash: initCodeHash, deployer: _SELF});\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CREATE3 */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Deploys a new contract via employing the `CREATE3` pattern (i.e. without an initcode\n * factor) and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value`\n * as inputs. In order to save deployment costs, we do not sanity check the `initCode` length.\n * Note that if `msg.value` is non-zero, `initCode` must have a `payable` constructor. This\n * implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security We strongly recommend implementing a permissioned deploy protection by setting\n * the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n * proxy deployments on other chains.\n */\n function deployCreate3(bytes32 salt, bytes memory initCode) public payable returns (address newContract) {\n bytes32 guardedSalt = _guard({salt: salt});\n bytes memory proxyChildBytecode = hex\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\";\n address proxy;\n assembly (\"memory-safe\") {\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), guardedSalt)\n }\n if (proxy == address(0)) {\n revert FailedContractCreation({emitter: _SELF});\n }\n emit Create3ProxyContractCreation({newContract: proxy, salt: guardedSalt});\n\n newContract = computeCreate3Address({salt: guardedSalt});\n (bool success, ) = proxy.call{value: msg.value}(initCode);\n _requireSuccessfulContractCreation({success: success, newContract: newContract});\n emit ContractCreation({newContract: newContract});\n }\n\n /**\n * @dev Deploys a new contract via employing the `CREATE3` pattern (i.e. without an initcode\n * factor) and using the salt value `salt`, the creation bytecode `initCode`, and `msg.value`\n * as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block\n * and transaction properties. This approach does not guarantee true randomness! In order to save\n * deployment costs, we do not sanity check the `initCode` length. Note that if `msg.value` is\n * non-zero, `initCode` must have a `payable` constructor. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param initCode The creation bytecode.\n * @return newContract The 20-byte address where the contract was deployed.\n */\n function deployCreate3(bytes memory initCode) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate3`.\n newContract = deployCreate3({salt: _generateSalt(), initCode: initCode});\n }\n\n /**\n * @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n * an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, the\n * initialisation code `data`, the struct for the `payable` amounts `values`, the refund address\n * `refundAddress`, and `msg.value` as inputs. In order to save deployment costs, we do not sanity\n * check the `initCode` length. Note that if `values.constructorAmount` is non-zero, `initCode` must\n * have a `payable` constructor. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n * Furthermore, we strongly recommend implementing a permissioned deploy protection by setting\n * the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n * proxy deployments on other chains.\n */\n function deployCreate3AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n bytes32 guardedSalt = _guard({salt: salt});\n bytes memory proxyChildBytecode = hex\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\";\n address proxy;\n assembly (\"memory-safe\") {\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), guardedSalt)\n }\n if (proxy == address(0)) {\n revert FailedContractCreation({emitter: _SELF});\n }\n emit Create3ProxyContractCreation({newContract: proxy, salt: guardedSalt});\n\n newContract = computeCreate3Address({salt: guardedSalt});\n (bool success, ) = proxy.call{value: values.constructorAmount}(initCode);\n _requireSuccessfulContractCreation({success: success, newContract: newContract});\n emit ContractCreation({newContract: newContract});\n\n bytes memory returnData;\n (success, returnData) = newContract.call{value: values.initCallAmount}(data);\n if (!success) {\n revert FailedContractInitialisation({emitter: _SELF, revertData: returnData});\n }\n\n if (_SELF.balance != 0) {\n // Any wei amount previously forced into this contract (e.g. by using the `SELFDESTRUCT`\n // opcode) will be part of the refund transaction.\n (success, returnData) = refundAddress.call{value: _SELF.balance}(\"\");\n if (!success) {\n revert FailedEtherTransfer({emitter: _SELF, revertData: returnData});\n }\n }\n }\n\n /**\n * @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n * an initcode factor) and using the salt value `salt`, the creation bytecode `initCode`, the\n * initialisation code `data`, the struct for the `payable` amounts `values`, and `msg.value` as\n * inputs. In order to save deployment costs, we do not sanity check the `initCode` length. Note\n * that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n * and any excess ether is returned to `msg.sender`. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n * Furthermore, we strongly recommend implementing a permissioned deploy protection by setting\n * the first 20 bytes equal to `msg.sender` in the `salt` to prevent maliciously intended frontrun\n * proxy deployments on other chains.\n */\n function deployCreate3AndInit(\n bytes32 salt,\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate3AndInit`.\n newContract = deployCreate3AndInit({\n salt: salt,\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: msg.sender\n });\n }\n\n /**\n * @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n * an initcode factor) and using the creation bytecode `initCode`, the initialisation code `data`,\n * the struct for the `payable` amounts `values`, the refund address `refundAddress`, and `msg.value`\n * as inputs. The salt value is calculated pseudo-randomly using a diverse selection of block and\n * transaction properties. This approach does not guarantee true randomness! In order to save deployment\n * costs, we do not sanity check the `initCode` length. Note that if `values.constructorAmount` is non-zero,\n * `initCode` must have a `payable` constructor. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @param refundAddress The 20-byte address where any excess ether is returned to.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate3AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values,\n address refundAddress\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate3AndInit`.\n newContract = deployCreate3AndInit({\n salt: _generateSalt(),\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: refundAddress\n });\n }\n\n /**\n * @dev Deploys and initialises a new contract via employing the `CREATE3` pattern (i.e. without\n * an initcode factor) and using the creation bytecode `initCode`, the initialisation code `data`,\n * the struct for the `payable` amounts `values`, `msg.value` as inputs. The salt value is calculated\n * pseudo-randomly using a diverse selection of block and transaction properties. This approach does\n * not guarantee true randomness! In order to save deployment costs, we do not sanity check the `initCode`\n * length. Note that if `values.constructorAmount` is non-zero, `initCode` must have a `payable` constructor,\n * and any excess ether is returned to `msg.sender`. This implementation is based on Solmate:\n * https://web.archive.org/web/20230921113832/https://raw.githubusercontent.com/transmissions11/solmate/e8f96f25d48fe702117ce76c79228ca4f20206cb/src/utils/CREATE3.sol.\n * @param initCode The creation bytecode.\n * @param data The initialisation code that is passed to the deployed contract.\n * @param values The specific `payable` amounts for the deployment and initialisation call.\n * @return newContract The 20-byte address where the contract was deployed.\n * @custom:security This function allows for reentrancy, however we refrain from adding\n * a mutex lock to keep it as use-case agnostic as possible. Please ensure at the protocol\n * level that potentially malicious reentrant calls do not affect your smart contract system.\n */\n function deployCreate3AndInit(\n bytes memory initCode,\n bytes memory data,\n Values memory values\n ) public payable returns (address newContract) {\n // Note that the safeguarding function `_guard` is called as part of the overloaded function\n // `deployCreate3AndInit`.\n newContract = deployCreate3AndInit({\n salt: _generateSalt(),\n initCode: initCode,\n data: data,\n values: values,\n refundAddress: msg.sender\n });\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via `deployer` using\n * the `CREATE3` pattern (i.e. without an initcode factor). Any change in the `salt` value will\n * result in a new destination address. This implementation is based on Solady:\n * https://web.archive.org/web/20230921114120/https://raw.githubusercontent.com/Vectorized/solady/1c1ac4ad9c8558001e92d8d1a7722ef67bec75df/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @param deployer The 20-byte deployer address.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreate3Address(bytes32 salt, address deployer) public pure returns (address computedAddress) {\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n mstore(0x00, deployer)\n mstore8(0x0b, 0xff)\n mstore(0x20, salt)\n mstore(\n 0x40,\n hex\"21_c3_5d_be_1b_34_4a_24_88_cf_33_21_d6_ce_54_2f_8e_9f_30_55_44_ff_09_e4_99_3a_62_31_9a_49_7c_1f\"\n )\n mstore(0x14, keccak256(0x0b, 0x55))\n mstore(0x40, ptr)\n mstore(0x00, 0xd694)\n mstore8(0x34, 0x01)\n computedAddress := keccak256(0x1e, 0x17)\n }\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via this contract using\n * the `CREATE3` pattern (i.e. without an initcode factor). Any change in the `salt` value will\n * result in a new destination address. This implementation is based on Solady:\n * https://web.archive.org/web/20230921114120/https://raw.githubusercontent.com/Vectorized/solady/1c1ac4ad9c8558001e92d8d1a7722ef67bec75df/src/utils/CREATE3.sol.\n * @param salt The 32-byte random value used to create the proxy contract address.\n * @return computedAddress The 20-byte address where a contract will be stored.\n */\n function computeCreate3Address(bytes32 salt) public view returns (address computedAddress) {\n computedAddress = computeCreate3Address({salt: salt, deployer: _SELF});\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* HELPER FUNCTIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /**\n * @dev Implements different safeguarding mechanisms depending on the encoded values in the salt\n * (`||` stands for byte-wise concatenation):\n * => salt (32 bytes) = 0xbebebebebebebebebebebebebebebebebebebebe||ff||1212121212121212121212\n * - The first 20 bytes (i.e. `bebebebebebebebebebebebebebebebebebebebe`) may be used to\n * implement a permissioned deploy protection by setting them equal to `msg.sender`,\n * - The 21st byte (i.e. `ff`) may be used to implement a cross-chain redeploy protection by\n * setting it equal to `0x01`,\n * - The last random 11 bytes (i.e. `1212121212121212121212`) allow for 2**88 bits of entropy\n * for mining a salt.\n * @param salt The 32-byte random value used to create the contract address.\n * @return guardedSalt The guarded 32-byte random value used to create the contract address.\n */\n function _guard(bytes32 salt) internal view returns (bytes32 guardedSalt) {\n (SenderBytes senderBytes, RedeployProtectionFlag redeployProtectionFlag) = _parseSalt({salt: salt});\n\n if (senderBytes == SenderBytes.MsgSender && redeployProtectionFlag == RedeployProtectionFlag.True) {\n // Configures a permissioned deploy protection as well as a cross-chain redeploy protection.\n guardedSalt = keccak256(abi.encode(msg.sender, block.chainid, salt));\n } else if (senderBytes == SenderBytes.MsgSender && redeployProtectionFlag == RedeployProtectionFlag.False) {\n // Configures solely a permissioned deploy protection.\n guardedSalt = _efficientHash({a: bytes32(uint256(uint160(msg.sender))), b: salt});\n } else if (senderBytes == SenderBytes.MsgSender) {\n // Reverts if the 21st byte is greater than `0x01` in order to enforce developer explicitness.\n revert InvalidSalt({emitter: _SELF});\n } else if (senderBytes == SenderBytes.ZeroAddress && redeployProtectionFlag == RedeployProtectionFlag.True) {\n // Configures solely a cross-chain redeploy protection. In order to prevent a pseudo-randomly\n // generated cross-chain redeploy protection, we enforce the zero address check for the first 20 bytes.\n guardedSalt = _efficientHash({a: bytes32(block.chainid), b: salt});\n } else if (\n senderBytes == SenderBytes.ZeroAddress && redeployProtectionFlag == RedeployProtectionFlag.Unspecified\n ) {\n // Reverts if the 21st byte is greater than `0x01` in order to enforce developer explicitness.\n revert InvalidSalt({emitter: _SELF});\n } else {\n // For the non-pseudo-random cases, the salt value `salt` is hashed to prevent the safeguard mechanisms\n // from being bypassed. Otherwise, the salt value `salt` is not modified.\n guardedSalt = (salt != _generateSalt()) ? keccak256(abi.encode(salt)) : salt;\n }\n }\n\n /**\n * @dev Returns the enum for the selection of a permissioned deploy protection as well as a\n * cross-chain redeploy protection.\n * @param salt The 32-byte random value used to create the contract address.\n * @return senderBytes The 8-byte enum for the selection of a permissioned deploy protection.\n * @return redeployProtectionFlag The 8-byte enum for the selection of a cross-chain redeploy\n * protection.\n */\n function _parseSalt(\n bytes32 salt\n ) internal view returns (SenderBytes senderBytes, RedeployProtectionFlag redeployProtectionFlag) {\n if (address(bytes20(salt)) == msg.sender && bytes1(salt[20]) == hex\"01\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.MsgSender, RedeployProtectionFlag.True);\n } else if (address(bytes20(salt)) == msg.sender && bytes1(salt[20]) == hex\"00\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.MsgSender, RedeployProtectionFlag.False);\n } else if (address(bytes20(salt)) == msg.sender) {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.MsgSender, RedeployProtectionFlag.Unspecified);\n } else if (address(bytes20(salt)) == address(0) && bytes1(salt[20]) == hex\"01\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.ZeroAddress, RedeployProtectionFlag.True);\n } else if (address(bytes20(salt)) == address(0) && bytes1(salt[20]) == hex\"00\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.ZeroAddress, RedeployProtectionFlag.False);\n } else if (address(bytes20(salt)) == address(0)) {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.ZeroAddress, RedeployProtectionFlag.Unspecified);\n } else if (bytes1(salt[20]) == hex\"01\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.Random, RedeployProtectionFlag.True);\n } else if (bytes1(salt[20]) == hex\"00\") {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.Random, RedeployProtectionFlag.False);\n } else {\n (senderBytes, redeployProtectionFlag) = (SenderBytes.Random, RedeployProtectionFlag.Unspecified);\n }\n }\n\n /**\n * @dev Returns the `keccak256` hash of `a` and `b` after concatenation.\n * @param a The first 32-byte value to be concatenated and hashed.\n * @param b The second 32-byte value to be concatenated and hashed.\n * @return hash The 32-byte `keccak256` hash of `a` and `b`.\n */\n function _efficientHash(bytes32 a, bytes32 b) internal pure returns (bytes32 hash) {\n assembly (\"memory-safe\") {\n mstore(0x00, a)\n mstore(0x20, b)\n hash := keccak256(0x00, 0x40)\n }\n }\n\n /**\n * @dev Generates pseudo-randomly a salt value using a diverse selection of block and\n * transaction properties.\n * @return salt The 32-byte pseudo-random salt value.\n */\n function _generateSalt() internal view returns (bytes32 salt) {\n unchecked {\n salt = keccak256(\n abi.encode(\n // We don't use `block.number - 256` (the maximum value on the EVM) to accommodate\n // any chains that may try to reduce the amount of available historical block hashes.\n // We also don't subtract 1 to mitigate any risks arising from consecutive block\n // producers on a PoS chain. Therefore, we use `block.number - 32` as a reasonable\n // compromise, one we expect should work on most chains, which is 1 epoch on Ethereum\n // mainnet. Please note that if you use this function between the genesis block and block\n // number 31, the block property `blockhash` will return zero, but the returned salt value\n // `salt` will still have a non-zero value due to the hashing characteristic and the other\n // remaining properties.\n blockhash(block.number - 32),\n block.coinbase,\n block.number,\n block.timestamp,\n block.prevrandao,\n block.chainid,\n msg.sender\n )\n );\n }\n }\n\n /**\n * @dev Ensures that `newContract` is a non-zero byte contract.\n * @param success The Boolean success condition.\n * @param newContract The 20-byte address where the contract was deployed.\n */\n function _requireSuccessfulContractCreation(bool success, address newContract) internal view {\n // Note that reverting if `newContract == address(0)` isn't strictly necessary here, as if\n // the deployment fails, `success == false` should already hold. However, since the `CreateX`\n // contract should be usable and safe on a wide range of chains, this check is cheap enough\n // that there is no harm in including it (security > gas optimisations). It can potentially\n // protect against unexpected chain behaviour or a hypothetical compiler bug that doesn't surface\n // the call success status properly.\n if (!success || newContract == address(0) || newContract.code.length == 0) {\n revert FailedContractCreation({emitter: _SELF});\n }\n }\n\n /**\n * @dev Ensures that `newContract` is a non-zero byte contract.\n * @param newContract The 20-byte address where the contract was deployed.\n */\n function _requireSuccessfulContractCreation(address newContract) internal view {\n if (newContract == address(0) || newContract.code.length == 0) {\n revert FailedContractCreation({emitter: _SELF});\n }\n }\n\n /**\n * @dev Ensures that the contract initialisation call to `implementation` has been successful.\n * @param success The Boolean success condition.\n * @param returnData The return data from the contract initialisation call.\n * @param implementation The 20-byte address where the implementation was deployed.\n */\n function _requireSuccessfulContractInitialisation(\n bool success,\n bytes memory returnData,\n address implementation\n ) internal view {\n if (!success || implementation.code.length == 0) {\n revert FailedContractInitialisation({emitter: _SELF, revertData: returnData});\n }\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 10000000 + }, + "evmVersion": "paris", + "viaIR": false, + "metadata": { + "bytecodeHash": "none" + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": ["ast"] + } + } + } +}