{"id":"91488a2fffb709f19c25df4fdc168728","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (interfaces/IERC1271.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n */\ninterface IERC1271 {\n    /**\n     * @dev Should return whether the signature provided is valid for the provided data\n     * @param hash      Hash of the data to be signed\n     * @param signature Signature byte array associated with `hash`\n     */\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC-721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n     *   a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n     *   {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n     *   a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the address zero.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @title ERC-721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC-721 asset contracts.\n */\ninterface IERC721Receiver {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n     * reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n    enum RecoverError {\n        NoError,\n        InvalidSignature,\n        InvalidSignatureLength,\n        InvalidSignatureS\n    }\n\n    /**\n     * @dev The signature derives the `address(0)`.\n     */\n    error ECDSAInvalidSignature();\n\n    /**\n     * @dev The signature has an invalid length.\n     */\n    error ECDSAInvalidSignatureLength(uint256 length);\n\n    /**\n     * @dev The signature has an S value that is in the upper half order.\n     */\n    error ECDSAInvalidSignatureS(bytes32 s);\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n     * and a bytes32 providing additional information about the error.\n     *\n     * If no error is returned, then the address can be used for verification purposes.\n     *\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n     *\n     * Documentation for signature generation:\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes memory signature\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        if (signature.length == 65) {\n            bytes32 r;\n            bytes32 s;\n            uint8 v;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            assembly (\"memory-safe\") {\n                r := mload(add(signature, 0x20))\n                s := mload(add(signature, 0x40))\n                v := byte(0, mload(add(signature, 0x60)))\n            }\n            return tryRecover(hash, v, r, s);\n        } else {\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature`. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n     */\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n     *\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes32 r,\n        bytes32 vs\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        unchecked {\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\n            return tryRecover(hash, v, r, s);\n        }\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n     */\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function tryRecover(\n        bytes32 hash,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n        //\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n        // these malleable signatures as well.\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n            return (address(0), RecoverError.InvalidSignatureS, s);\n        }\n\n        // If the signature is valid (and not malleable), return the signer address\n        address signer = ecrecover(hash, v, r, s);\n        if (signer == address(0)) {\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\n        }\n\n        return (signer, RecoverError.NoError, bytes32(0));\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n     */\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\n        if (error == RecoverError.NoError) {\n            return; // no error: do nothing\n        } else if (error == RecoverError.InvalidSignature) {\n            revert ECDSAInvalidSignature();\n        } else if (error == RecoverError.InvalidSignatureLength) {\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\n        } else if (error == RecoverError.InvalidSignatureS) {\n            revert ECDSAInvalidSignatureS(errorArg);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/SignatureChecker.sol)\n\npragma solidity ^0.8.20;\n\nimport {ECDSA} from \"./ECDSA.sol\";\nimport {IERC1271} from \"../../interfaces/IERC1271.sol\";\n\n/**\n * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA\n * signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like\n * Argent and Safe Wallet (previously Gnosis Safe).\n */\nlibrary SignatureChecker {\n    /**\n     * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the\n     * signature is validated against that smart contract using ERC-1271, otherwise it's validated using `ECDSA.recover`.\n     *\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\n     */\n    function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) internal view returns (bool) {\n        if (signer.code.length == 0) {\n            (address recovered, ECDSA.RecoverError err, ) = ECDSA.tryRecover(hash, signature);\n            return err == ECDSA.RecoverError.NoError && recovered == signer;\n        } else {\n            return isValidERC1271SignatureNow(signer, hash, signature);\n        }\n    }\n\n    /**\n     * @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\n     * against the signer smart contract using ERC-1271.\n     *\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\n     */\n    function isValidERC1271SignatureNow(\n        address signer,\n        bytes32 hash,\n        bytes memory signature\n    ) internal view returns (bool) {\n        (bool success, bytes memory result) = signer.staticcall(\n            abi.encodeCall(IERC1271.isValidSignature, (hash, signature))\n        );\n        return (success &&\n            result.length >= 32 &&\n            abi.decode(result, (bytes32)) == bytes32(IERC1271.isValidSignature.selector));\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/ERC6551Account.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport \"@openzeppelin/contracts/interfaces/IERC1271.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\";\nimport \"./interfaces/IERC6551Account.sol\";\nimport \"./interfaces/IERC6551Executable.sol\";\n\n/**\n * @title A simple implementation of ERC6551Account\n * @author ERC6551 Team\n */\ncontract ERC6551Account is\n    IERC165,\n    IERC1271,\n    IERC6551Account,\n    IERC6551Executable,\n    IERC721Receiver\n{\n    /**\n     * @dev Account state nonce, incremented on each transaction\n     */\n    uint256 public state;\n\n    /**\n     * @dev Storage slot for token data\n     * This is written during initialization by the registry\n     * Structure: chainId (uint256), tokenContract (address), tokenId (uint256)\n     */\n    bytes32 private constant TOKEN_DATA_SLOT =\n        keccak256(\"erc6551.account.token\");\n\n    /**\n     * @dev Allows the account to receive ETH\n     */\n    receive() external payable {}\n\n    /**\n     * @dev Executes a transaction from the token owner\n     */\n    function execute(\n        address to,\n        uint256 value,\n        bytes calldata data,\n        uint8 operation\n    ) external payable returns (bytes memory result) {\n        require(_isValidSigner(msg.sender), \"Invalid signer\");\n\n        ++state;\n\n        if (operation == 0) {\n            // Call\n            (bool success, bytes memory ret) = to.call{value: value}(data);\n            require(success, \"Call failed\");\n            return ret;\n        } else if (operation == 1) {\n            // Delegatecall\n            (bool success, bytes memory ret) = to.delegatecall(data);\n            require(success, \"Delegatecall failed\");\n            return ret;\n        } else {\n            revert(\"Unsupported operation\");\n        }\n    }\n\n    /**\n     * @dev Returns the token bound to this account\n     */\n    function token()\n        external\n        view\n        returns (uint256 chainId, address tokenContract, uint256 tokenId)\n    {\n        // Read the token data from storage\n        bytes32 slot = TOKEN_DATA_SLOT;\n        assembly {\n            chainId := sload(slot)\n            tokenContract := sload(add(slot, 1))\n            tokenId := sload(add(slot, 2))\n        }\n    }\n\n    /**\n     * @dev Initialization function that stores token data\n     * This is called by the registry during account creation\n     */\n    function initialize(\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId\n    ) external {\n        // Ensure this can only be called once during creation\n        bytes32 slot = TOKEN_DATA_SLOT;\n        uint256 storedChainId;\n        assembly {\n            storedChainId := sload(slot)\n        }\n        require(storedChainId == 0, \"Already initialized\");\n\n        // Store token data in storage\n        assembly {\n            sstore(slot, chainId)\n            sstore(add(slot, 1), tokenContract)\n            sstore(add(slot, 2), tokenId)\n        }\n    }\n\n    /**\n     * @dev Validates if a signer is authorized to perform actions\n     */\n    function isValidSigner(\n        address signer,\n        bytes calldata\n    ) external view returns (bytes4) {\n        if (_isValidSigner(signer)) {\n            return IERC6551Account.isValidSigner.selector;\n        }\n\n        return bytes4(0);\n    }\n\n    /**\n     * @dev Validates signatures according to ERC-1271\n     */\n    function isValidSignature(\n        bytes32 hash,\n        bytes memory signature\n    ) external view returns (bytes4 magicValue) {\n        (uint256 chainId, address tokenContract, uint256 tokenId) = this\n            .token();\n\n        if (chainId != block.chainid) return bytes4(0);\n\n        address owner = IERC721(tokenContract).ownerOf(tokenId);\n\n        if (SignatureChecker.isValidSignatureNow(owner, hash, signature)) {\n            return IERC1271.isValidSignature.selector;\n        }\n\n        return bytes4(0);\n    }\n\n    /**\n     * @dev Implements IERC721Receiver interface to allow the account to receive ERC721 tokens\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external override returns (bytes4) {\n        return IERC721Receiver.onERC721Received.selector;\n    }\n\n    /**\n     * @dev Implements interface detection\n     */\n    function supportsInterface(\n        bytes4 interfaceId\n    ) external pure returns (bool) {\n        return (interfaceId == type(IERC165).interfaceId ||\n            interfaceId == type(IERC6551Account).interfaceId ||\n            interfaceId == type(IERC6551Executable).interfaceId ||\n            interfaceId == type(IERC721Receiver).interfaceId);\n    }\n\n    /**\n     * @dev Internal helper to check if a signer is valid\n     */\n    function _isValidSigner(address signer) internal view returns (bool) {\n        (uint256 chainId, address tokenContract, uint256 tokenId) = this\n            .token();\n\n        if (chainId != block.chainid) return false;\n\n        return signer == IERC721(tokenContract).ownerOf(tokenId);\n    }\n}\n"},"contracts/interfaces/IERC6551Account.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @dev the ERC-165 identifier for this interface is `0x6faff5f1`\ninterface IERC6551Account {\n    /**\n     * @dev Allows the account to receive Ether.\n     *\n     * Accounts MUST implement a `receive` function.\n     *\n     * Accounts MAY perform arbitrary logic to restrict conditions\n     * under which Ether can be received.\n     */\n    receive() external payable;\n\n    /**\n     * @dev Returns the identifier of the non-fungible token which owns the account.\n     *\n     * The return value of this function MUST be constant - it MUST NOT change over time.\n     *\n     * @return chainId       The EIP-155 ID of the chain the token exists on\n     * @return tokenContract The contract address of the token\n     * @return tokenId       The ID of the token\n     */\n    function token()\n        external\n        view\n        returns (uint256 chainId, address tokenContract, uint256 tokenId);\n\n    /**\n     * @dev Returns a value that SHOULD be modified each time the account changes state.\n     *\n     * @return The current account state\n     */\n    function state() external view returns (uint256);\n\n    /**\n     * @dev Returns a magic value indicating whether a given signer is authorized to act on behalf\n     * of the account.\n     *\n     * MUST return the bytes4 magic value 0x523e3260 if the given signer is valid.\n     *\n     * By default, the holder of the non-fungible token the account is bound to MUST be considered\n     * a valid signer.\n     *\n     * Accounts MAY implement additional authorization logic which invalidates the holder as a\n     * signer or grants signing permissions to other non-holder accounts.\n     *\n     * @param  signer     The address to check signing authorization for\n     * @param  context    Additional data used to determine whether the signer is valid\n     * @return magicValue Magic value indicating whether the signer is valid\n     */\n    function isValidSigner(address signer, bytes calldata context)\n        external\n        view\n        returns (bytes4 magicValue);\n}\n"},"contracts/interfaces/IERC6551Executable.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @dev the ERC-165 identifier for this interface is `0x51945447`\ninterface IERC6551Executable {\n    /**\n     * @dev Executes a low-level operation if the caller is a valid signer on the account.\n     *\n     * Reverts and bubbles up error if operation fails.\n     *\n     * Accounts implementing this interface MUST accept the following operation parameter values:\n     * - 0 = CALL\n     * - 1 = DELEGATECALL\n     * - 2 = CREATE\n     * - 3 = CREATE2\n     *\n     * Accounts implementing this interface MAY support additional operations or restrict a signer's\n     * ability to execute certain operations.\n     *\n     * @param to        The target address of the operation\n     * @param value     The Ether value to be sent to the target\n     * @param data      The encoded operation calldata\n     * @param operation A value indicating the type of operation to perform\n     * @return The result of the operation\n     */\n    function execute(address to, uint256 value, bytes calldata data, uint8 operation)\n        external\n        payable\n        returns (bytes memory);\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"errors":[{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/ERC6551Account.sol:150:9:\n    |\n150 |         address operator,\n    |         ^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":4255,"file":"contracts/ERC6551Account.sol","start":4239},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/ERC6551Account.sol:151:9:\n    |\n151 |         address from,\n    |         ^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":4277,"file":"contracts/ERC6551Account.sol","start":4265},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/ERC6551Account.sol:152:9:\n    |\n152 |         uint256 tokenId,\n    |         ^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":4302,"file":"contracts/ERC6551Account.sol","start":4287},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n   --> contracts/ERC6551Account.sol:153:9:\n    |\n153 |         bytes calldata data\n    |         ^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":4331,"file":"contracts/ERC6551Account.sol","start":4312},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"Warning: Function state mutability can be restricted to pure\n   --> contracts/ERC6551Account.sol:149:5:\n    |\n149 |     function onERC721Received(\n    |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":4438,"file":"contracts/ERC6551Account.sol","start":4204},"type":"Warning"}],"sources":{"@openzeppelin/contracts/interfaces/IERC1271.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","exportedSymbols":{"IERC1271":[13]},"id":14,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"133:160:0","text":" @dev Interface of the ERC-1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]."},"fullyImplemented":false,"id":13,"linearizedBaseContracts":[13],"name":"IERC1271","nameLocation":"304:8:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"319:221:0","text":" @dev Should return whether the signature provided is valid for the provided data\n @param hash      Hash of the data to be signed\n @param signature Signature byte array associated with `hash`"},"functionSelector":"1626ba7e","id":12,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"554:16:0","nodeType":"FunctionDefinition","parameters":{"id":8,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"hash","nameLocation":"579:4:0","nodeType":"VariableDeclaration","scope":12,"src":"571:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4,"name":"bytes32","nodeType":"ElementaryTypeName","src":"571:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"signature","nameLocation":"598:9:0","nodeType":"VariableDeclaration","scope":12,"src":"585:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6,"name":"bytes","nodeType":"ElementaryTypeName","src":"585:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"570:38:0"},"returnParameters":{"id":11,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"mutability":"mutable","name":"magicValue","nameLocation":"639:10:0","nodeType":"VariableDeclaration","scope":12,"src":"632:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9,"name":"bytes4","nodeType":"ElementaryTypeName","src":"632:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"631:19:0"},"scope":13,"src":"545:106:0","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14,"src":"294:359:0","usedErrors":[],"usedEvents":[]}],"src":"107:547:0"},"id":0},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[616],"IERC721":[130]},"id":131,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":15,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:1"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":17,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":131,"sourceUnit":617,"src":"134:62:1","symbolAliases":[{"foreign":{"id":16,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"142:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":19,"name":"IERC165","nameLocations":["288:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"288:7:1"},"id":20,"nodeType":"InheritanceSpecifier","src":"288:7:1"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":18,"nodeType":"StructuredDocumentation","src":"198:68:1","text":" @dev Required interface of an ERC-721 compliant contract."},"fullyImplemented":false,"id":130,"linearizedBaseContracts":[130,616],"name":"IERC721","nameLocation":"277:7:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":21,"nodeType":"StructuredDocumentation","src":"302:88:1","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":29,"name":"Transfer","nameLocation":"401:8:1","nodeType":"EventDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"426:4:1","nodeType":"VariableDeclaration","scope":29,"src":"410:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22,"name":"address","nodeType":"ElementaryTypeName","src":"410:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"448:2:1","nodeType":"VariableDeclaration","scope":29,"src":"432:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"468:7:1","nodeType":"VariableDeclaration","scope":29,"src":"452:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:67:1"},"src":"395:82:1"},{"anonymous":false,"documentation":{"id":30,"nodeType":"StructuredDocumentation","src":"483:94:1","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":38,"name":"Approval","nameLocation":"588:8:1","nodeType":"EventDefinition","parameters":{"id":37,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"613:5:1","nodeType":"VariableDeclaration","scope":38,"src":"597:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"597:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":34,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"636:8:1","nodeType":"VariableDeclaration","scope":38,"src":"620:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"662:7:1","nodeType":"VariableDeclaration","scope":38,"src":"646:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:74:1"},"src":"582:89:1"},{"anonymous":false,"documentation":{"id":39,"nodeType":"StructuredDocumentation","src":"677:117:1","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":47,"name":"ApprovalForAll","nameLocation":"805:14:1","nodeType":"EventDefinition","parameters":{"id":46,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"836:5:1","nodeType":"VariableDeclaration","scope":47,"src":"820:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"859:8:1","nodeType":"VariableDeclaration","scope":47,"src":"843:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"843:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"874:8:1","nodeType":"VariableDeclaration","scope":47,"src":"869:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":44,"name":"bool","nodeType":"ElementaryTypeName","src":"869:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"819:64:1"},"src":"799:85:1"},{"documentation":{"id":48,"nodeType":"StructuredDocumentation","src":"890:76:1","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":55,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"980:9:1","nodeType":"FunctionDefinition","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"owner","nameLocation":"998:5:1","nodeType":"VariableDeclaration","scope":55,"src":"990:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":49,"name":"address","nodeType":"ElementaryTypeName","src":"990:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"989:15:1"},"returnParameters":{"id":54,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53,"mutability":"mutable","name":"balance","nameLocation":"1036:7:1","nodeType":"VariableDeclaration","scope":55,"src":"1028:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1027:17:1"},"scope":130,"src":"971:74:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":56,"nodeType":"StructuredDocumentation","src":"1051:131:1","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":63,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1196:7:1","nodeType":"FunctionDefinition","parameters":{"id":59,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58,"mutability":"mutable","name":"tokenId","nameLocation":"1212:7:1","nodeType":"VariableDeclaration","scope":63,"src":"1204:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":57,"name":"uint256","nodeType":"ElementaryTypeName","src":"1204:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1203:17:1"},"returnParameters":{"id":62,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61,"mutability":"mutable","name":"owner","nameLocation":"1252:5:1","nodeType":"VariableDeclaration","scope":63,"src":"1244:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"1244:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1243:15:1"},"scope":130,"src":"1187:72:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":64,"nodeType":"StructuredDocumentation","src":"1265:565:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n   a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":75,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1844:16:1","nodeType":"FunctionDefinition","parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":66,"mutability":"mutable","name":"from","nameLocation":"1869:4:1","nodeType":"VariableDeclaration","scope":75,"src":"1861:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":65,"name":"address","nodeType":"ElementaryTypeName","src":"1861:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":68,"mutability":"mutable","name":"to","nameLocation":"1883:2:1","nodeType":"VariableDeclaration","scope":75,"src":"1875:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":70,"mutability":"mutable","name":"tokenId","nameLocation":"1895:7:1","nodeType":"VariableDeclaration","scope":75,"src":"1887:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":69,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":72,"mutability":"mutable","name":"data","nameLocation":"1919:4:1","nodeType":"VariableDeclaration","scope":75,"src":"1904:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":71,"name":"bytes","nodeType":"ElementaryTypeName","src":"1904:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1860:64:1"},"returnParameters":{"id":74,"nodeType":"ParameterList","parameters":[],"src":"1933:0:1"},"scope":130,"src":"1835:99:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":76,"nodeType":"StructuredDocumentation","src":"1940:706:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n   {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n   a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":85,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2660:16:1","nodeType":"FunctionDefinition","parameters":{"id":83,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"from","nameLocation":"2685:4:1","nodeType":"VariableDeclaration","scope":85,"src":"2677:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80,"mutability":"mutable","name":"to","nameLocation":"2699:2:1","nodeType":"VariableDeclaration","scope":85,"src":"2691:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82,"mutability":"mutable","name":"tokenId","nameLocation":"2711:7:1","nodeType":"VariableDeclaration","scope":85,"src":"2703:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81,"name":"uint256","nodeType":"ElementaryTypeName","src":"2703:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:1"},"returnParameters":{"id":84,"nodeType":"ParameterList","parameters":[],"src":"2728:0:1"},"scope":130,"src":"2651:78:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2735:733:1","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":95,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3482:12:1","nodeType":"FunctionDefinition","parameters":{"id":93,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88,"mutability":"mutable","name":"from","nameLocation":"3503:4:1","nodeType":"VariableDeclaration","scope":95,"src":"3495:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87,"name":"address","nodeType":"ElementaryTypeName","src":"3495:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90,"mutability":"mutable","name":"to","nameLocation":"3517:2:1","nodeType":"VariableDeclaration","scope":95,"src":"3509:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":92,"mutability":"mutable","name":"tokenId","nameLocation":"3529:7:1","nodeType":"VariableDeclaration","scope":95,"src":"3521:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3494:43:1"},"returnParameters":{"id":94,"nodeType":"ParameterList","parameters":[],"src":"3546:0:1"},"scope":130,"src":"3473:74:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":96,"nodeType":"StructuredDocumentation","src":"3553:452:1","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":103,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4019:7:1","nodeType":"FunctionDefinition","parameters":{"id":101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":98,"mutability":"mutable","name":"to","nameLocation":"4035:2:1","nodeType":"VariableDeclaration","scope":103,"src":"4027:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"4027:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":100,"mutability":"mutable","name":"tokenId","nameLocation":"4047:7:1","nodeType":"VariableDeclaration","scope":103,"src":"4039:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":99,"name":"uint256","nodeType":"ElementaryTypeName","src":"4039:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:29:1"},"returnParameters":{"id":102,"nodeType":"ParameterList","parameters":[],"src":"4064:0:1"},"scope":130,"src":"4010:55:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":104,"nodeType":"StructuredDocumentation","src":"4071:315:1","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":111,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4400:17:1","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"mutability":"mutable","name":"operator","nameLocation":"4426:8:1","nodeType":"VariableDeclaration","scope":111,"src":"4418:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":105,"name":"address","nodeType":"ElementaryTypeName","src":"4418:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":108,"mutability":"mutable","name":"approved","nameLocation":"4441:8:1","nodeType":"VariableDeclaration","scope":111,"src":"4436:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":107,"name":"bool","nodeType":"ElementaryTypeName","src":"4436:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4417:33:1"},"returnParameters":{"id":110,"nodeType":"ParameterList","parameters":[],"src":"4459:0:1"},"scope":130,"src":"4391:69:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"4466:139:1","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":119,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4619:11:1","nodeType":"FunctionDefinition","parameters":{"id":115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"tokenId","nameLocation":"4639:7:1","nodeType":"VariableDeclaration","scope":119,"src":"4631:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113,"name":"uint256","nodeType":"ElementaryTypeName","src":"4631:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4630:17:1"},"returnParameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"operator","nameLocation":"4679:8:1","nodeType":"VariableDeclaration","scope":119,"src":"4671:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":116,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4670:18:1"},"scope":130,"src":"4610:79:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":120,"nodeType":"StructuredDocumentation","src":"4695:138:1","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":129,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4847:16:1","nodeType":"FunctionDefinition","parameters":{"id":125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":122,"mutability":"mutable","name":"owner","nameLocation":"4872:5:1","nodeType":"VariableDeclaration","scope":129,"src":"4864:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121,"name":"address","nodeType":"ElementaryTypeName","src":"4864:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":124,"mutability":"mutable","name":"operator","nameLocation":"4887:8:1","nodeType":"VariableDeclaration","scope":129,"src":"4879:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":123,"name":"address","nodeType":"ElementaryTypeName","src":"4879:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4863:33:1"},"returnParameters":{"id":128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":129,"src":"4920:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":126,"name":"bool","nodeType":"ElementaryTypeName","src":"4920:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4919:6:1"},"scope":130,"src":"4838:88:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":131,"src":"267:4661:1","usedErrors":[],"usedEvents":[29,38,47]}],"src":"108:4821:1"},"id":1},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[148]},"id":149,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":132,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"116:24:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":133,"nodeType":"StructuredDocumentation","src":"142:154:2","text":" @title ERC-721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC-721 asset contracts."},"fullyImplemented":false,"id":148,"linearizedBaseContracts":[148],"name":"IERC721Receiver","nameLocation":"307:15:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":134,"nodeType":"StructuredDocumentation","src":"329:500:2","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":147,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"843:16:2","nodeType":"FunctionDefinition","parameters":{"id":143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":136,"mutability":"mutable","name":"operator","nameLocation":"877:8:2","nodeType":"VariableDeclaration","scope":147,"src":"869:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135,"name":"address","nodeType":"ElementaryTypeName","src":"869:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":138,"mutability":"mutable","name":"from","nameLocation":"903:4:2","nodeType":"VariableDeclaration","scope":147,"src":"895:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":137,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":140,"mutability":"mutable","name":"tokenId","nameLocation":"925:7:2","nodeType":"VariableDeclaration","scope":147,"src":"917:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":139,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":142,"mutability":"mutable","name":"data","nameLocation":"957:4:2","nodeType":"VariableDeclaration","scope":147,"src":"942:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":141,"name":"bytes","nodeType":"ElementaryTypeName","src":"942:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"859:108:2"},"returnParameters":{"id":146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":147,"src":"986:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":144,"name":"bytes4","nodeType":"ElementaryTypeName","src":"986:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"985:8:2"},"scope":148,"src":"834:160:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":149,"src":"297:699:2","usedErrors":[],"usedEvents":[]}],"src":"116:881:2"},"id":2},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","exportedSymbols":{"ECDSA":[496]},"id":497,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":150,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:3"},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSA","contractDependencies":[],"contractKind":"library","documentation":{"id":151,"nodeType":"StructuredDocumentation","src":"138:205:3","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":496,"linearizedBaseContracts":[496],"name":"ECDSA","nameLocation":"352:5:3","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSA.RecoverError","id":156,"members":[{"id":152,"name":"NoError","nameLocation":"392:7:3","nodeType":"EnumValue","src":"392:7:3"},{"id":153,"name":"InvalidSignature","nameLocation":"409:16:3","nodeType":"EnumValue","src":"409:16:3"},{"id":154,"name":"InvalidSignatureLength","nameLocation":"435:22:3","nodeType":"EnumValue","src":"435:22:3"},{"id":155,"name":"InvalidSignatureS","nameLocation":"467:17:3","nodeType":"EnumValue","src":"467:17:3"}],"name":"RecoverError","nameLocation":"369:12:3","nodeType":"EnumDefinition","src":"364:126:3"},{"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"496:63:3","text":" @dev The signature derives the `address(0)`."},"errorSelector":"f645eedf","id":159,"name":"ECDSAInvalidSignature","nameLocation":"570:21:3","nodeType":"ErrorDefinition","parameters":{"id":158,"nodeType":"ParameterList","parameters":[],"src":"591:2:3"},"src":"564:30:3"},{"documentation":{"id":160,"nodeType":"StructuredDocumentation","src":"600:60:3","text":" @dev The signature has an invalid length."},"errorSelector":"fce698f7","id":164,"name":"ECDSAInvalidSignatureLength","nameLocation":"671:27:3","nodeType":"ErrorDefinition","parameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":162,"mutability":"mutable","name":"length","nameLocation":"707:6:3","nodeType":"VariableDeclaration","scope":164,"src":"699:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":161,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"698:16:3"},"src":"665:50:3"},{"documentation":{"id":165,"nodeType":"StructuredDocumentation","src":"721:85:3","text":" @dev The signature has an S value that is in the upper half order."},"errorSelector":"d78bce0c","id":169,"name":"ECDSAInvalidSignatureS","nameLocation":"817:22:3","nodeType":"ErrorDefinition","parameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"s","nameLocation":"848:1:3","nodeType":"VariableDeclaration","scope":169,"src":"840:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":166,"name":"bytes32","nodeType":"ElementaryTypeName","src":"840:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"839:11:3"},"src":"811:40:3"},{"body":{"id":221,"nodeType":"Block","src":"2285:622:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":184,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"2299:9:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2309:6:3","memberName":"length","nodeType":"MemberAccess","src":"2299:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2319:2:3","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2299:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":219,"nodeType":"Block","src":"2793:108:3","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:1:3","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":207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2815:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":206,"name":"address","nodeType":"ElementaryTypeName","src":"2815:7:3","typeDescriptions":{}}},"id":209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2815:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":210,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"2827:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2840:22:3","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":154,"src":"2827:35:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"expression":{"id":214,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"2872:9:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2882:6:3","memberName":"length","nodeType":"MemberAccess","src":"2872:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2864:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":212,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2864:7:3","typeDescriptions":{}}},"id":216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2864:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":217,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2814:76:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":183,"id":218,"nodeType":"Return","src":"2807:83:3"}]},"id":220,"nodeType":"IfStatement","src":"2295:606:3","trueBody":{"id":205,"nodeType":"Block","src":"2323:464:3","statements":[{"assignments":[189],"declarations":[{"constant":false,"id":189,"mutability":"mutable","name":"r","nameLocation":"2345:1:3","nodeType":"VariableDeclaration","scope":205,"src":"2337:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":188,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2337:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":190,"nodeType":"VariableDeclarationStatement","src":"2337:9:3"},{"assignments":[192],"declarations":[{"constant":false,"id":192,"mutability":"mutable","name":"s","nameLocation":"2368:1:3","nodeType":"VariableDeclaration","scope":205,"src":"2360:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2360:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":193,"nodeType":"VariableDeclarationStatement","src":"2360:9:3"},{"assignments":[195],"declarations":[{"constant":false,"id":195,"mutability":"mutable","name":"v","nameLocation":"2389:1:3","nodeType":"VariableDeclaration","scope":205,"src":"2383:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":194,"name":"uint8","nodeType":"ElementaryTypeName","src":"2383:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":196,"nodeType":"VariableDeclarationStatement","src":"2383:7:3"},{"AST":{"nativeSrc":"2560:171:3","nodeType":"YulBlock","src":"2560:171:3","statements":[{"nativeSrc":"2578:32:3","nodeType":"YulAssignment","src":"2578:32:3","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2593:9:3","nodeType":"YulIdentifier","src":"2593:9:3"},{"kind":"number","nativeSrc":"2604:4:3","nodeType":"YulLiteral","src":"2604:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2589:3:3","nodeType":"YulIdentifier","src":"2589:3:3"},"nativeSrc":"2589:20:3","nodeType":"YulFunctionCall","src":"2589:20:3"}],"functionName":{"name":"mload","nativeSrc":"2583:5:3","nodeType":"YulIdentifier","src":"2583:5:3"},"nativeSrc":"2583:27:3","nodeType":"YulFunctionCall","src":"2583:27:3"},"variableNames":[{"name":"r","nativeSrc":"2578:1:3","nodeType":"YulIdentifier","src":"2578:1:3"}]},{"nativeSrc":"2627:32:3","nodeType":"YulAssignment","src":"2627:32:3","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2642:9:3","nodeType":"YulIdentifier","src":"2642:9:3"},{"kind":"number","nativeSrc":"2653:4:3","nodeType":"YulLiteral","src":"2653:4:3","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2638:3:3","nodeType":"YulIdentifier","src":"2638:3:3"},"nativeSrc":"2638:20:3","nodeType":"YulFunctionCall","src":"2638:20:3"}],"functionName":{"name":"mload","nativeSrc":"2632:5:3","nodeType":"YulIdentifier","src":"2632:5:3"},"nativeSrc":"2632:27:3","nodeType":"YulFunctionCall","src":"2632:27:3"},"variableNames":[{"name":"s","nativeSrc":"2627:1:3","nodeType":"YulIdentifier","src":"2627:1:3"}]},{"nativeSrc":"2676:41:3","nodeType":"YulAssignment","src":"2676:41:3","value":{"arguments":[{"kind":"number","nativeSrc":"2686:1:3","nodeType":"YulLiteral","src":"2686:1:3","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2699:9:3","nodeType":"YulIdentifier","src":"2699:9:3"},{"kind":"number","nativeSrc":"2710:4:3","nodeType":"YulLiteral","src":"2710:4:3","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"2695:3:3","nodeType":"YulIdentifier","src":"2695:3:3"},"nativeSrc":"2695:20:3","nodeType":"YulFunctionCall","src":"2695:20:3"}],"functionName":{"name":"mload","nativeSrc":"2689:5:3","nodeType":"YulIdentifier","src":"2689:5:3"},"nativeSrc":"2689:27:3","nodeType":"YulFunctionCall","src":"2689:27:3"}],"functionName":{"name":"byte","nativeSrc":"2681:4:3","nodeType":"YulIdentifier","src":"2681:4:3"},"nativeSrc":"2681:36:3","nodeType":"YulFunctionCall","src":"2681:36:3"},"variableNames":[{"name":"v","nativeSrc":"2676:1:3","nodeType":"YulIdentifier","src":"2676:1:3"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":189,"isOffset":false,"isSlot":false,"src":"2578:1:3","valueSize":1},{"declaration":192,"isOffset":false,"isSlot":false,"src":"2627:1:3","valueSize":1},{"declaration":174,"isOffset":false,"isSlot":false,"src":"2593:9:3","valueSize":1},{"declaration":174,"isOffset":false,"isSlot":false,"src":"2642:9:3","valueSize":1},{"declaration":174,"isOffset":false,"isSlot":false,"src":"2699:9:3","valueSize":1},{"declaration":195,"isOffset":false,"isSlot":false,"src":"2676:1:3","valueSize":1}],"flags":["memory-safe"],"id":197,"nodeType":"InlineAssembly","src":"2535:196:3"},{"expression":{"arguments":[{"id":199,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"2762:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":200,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"2768:1:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":201,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"2771:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":202,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"2774:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":198,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[222,302,410],"referencedDeclaration":410,"src":"2751:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2751:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":183,"id":204,"nodeType":"Return","src":"2744:32:3"}]}}]},"documentation":{"id":170,"nodeType":"StructuredDocumentation","src":"857:1267:3","text":" @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]"},"id":222,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2138:10:3","nodeType":"FunctionDefinition","parameters":{"id":175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"hash","nameLocation":"2166:4:3","nodeType":"VariableDeclaration","scope":222,"src":"2158:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":171,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2158:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"signature","nameLocation":"2193:9:3","nodeType":"VariableDeclaration","scope":222,"src":"2180:22:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":173,"name":"bytes","nodeType":"ElementaryTypeName","src":"2180:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2148:60:3"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"recovered","nameLocation":"2240:9:3","nodeType":"VariableDeclaration","scope":222,"src":"2232:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"2232:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":180,"mutability":"mutable","name":"err","nameLocation":"2264:3:3","nodeType":"VariableDeclaration","scope":222,"src":"2251:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":179,"nodeType":"UserDefinedTypeName","pathNode":{"id":178,"name":"RecoverError","nameLocations":["2251:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":156,"src":"2251:12:3"},"referencedDeclaration":156,"src":"2251:12:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":182,"mutability":"mutable","name":"errArg","nameLocation":"2277:6:3","nodeType":"VariableDeclaration","scope":222,"src":"2269:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":181,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2269:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2231:53:3"},"scope":496,"src":"2129:778:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":251,"nodeType":"Block","src":"3801:168:3","statements":[{"assignments":[233,236,238],"declarations":[{"constant":false,"id":233,"mutability":"mutable","name":"recovered","nameLocation":"3820:9:3","nodeType":"VariableDeclaration","scope":251,"src":"3812:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":232,"name":"address","nodeType":"ElementaryTypeName","src":"3812:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":236,"mutability":"mutable","name":"error","nameLocation":"3844:5:3","nodeType":"VariableDeclaration","scope":251,"src":"3831:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":235,"nodeType":"UserDefinedTypeName","pathNode":{"id":234,"name":"RecoverError","nameLocations":["3831:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":156,"src":"3831:12:3"},"referencedDeclaration":156,"src":"3831:12:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":238,"mutability":"mutable","name":"errorArg","nameLocation":"3859:8:3","nodeType":"VariableDeclaration","scope":251,"src":"3851:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3851:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":243,"initialValue":{"arguments":[{"id":240,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"3882:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":241,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"3888:9:3","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":239,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[222,302,410],"referencedDeclaration":222,"src":"3871:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3871:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"3811:87:3"},{"expression":{"arguments":[{"id":245,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":236,"src":"3920:5:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},{"id":246,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"3927:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":244,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":495,"src":"3908:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$156_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3908:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":248,"nodeType":"ExpressionStatement","src":"3908:28:3"},{"expression":{"id":249,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":233,"src":"3953:9:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":231,"id":250,"nodeType":"Return","src":"3946:16:3"}]},"documentation":{"id":223,"nodeType":"StructuredDocumentation","src":"2913:796:3","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it."},"id":252,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3723:7:3","nodeType":"FunctionDefinition","parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"hash","nameLocation":"3739:4:3","nodeType":"VariableDeclaration","scope":252,"src":"3731:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":224,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3731:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":227,"mutability":"mutable","name":"signature","nameLocation":"3758:9:3","nodeType":"VariableDeclaration","scope":252,"src":"3745:22:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":226,"name":"bytes","nodeType":"ElementaryTypeName","src":"3745:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3730:38:3"},"returnParameters":{"id":231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":252,"src":"3792:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":229,"name":"address","nodeType":"ElementaryTypeName","src":"3792:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3791:9:3"},"scope":496,"src":"3714:255:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":301,"nodeType":"Block","src":"4348:342:3","statements":[{"id":300,"nodeType":"UncheckedBlock","src":"4358:326:3","statements":[{"assignments":[270],"declarations":[{"constant":false,"id":270,"mutability":"mutable","name":"s","nameLocation":"4390:1:3","nodeType":"VariableDeclaration","scope":300,"src":"4382:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":269,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4382:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":277,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":271,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"4394:2:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4407:66:3","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4399:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":272,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4399:7:3","typeDescriptions":{}}},"id":275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4399:75:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4394:80:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4382:92:3"},{"assignments":[279],"declarations":[{"constant":false,"id":279,"mutability":"mutable","name":"v","nameLocation":"4591:1:3","nodeType":"VariableDeclaration","scope":300,"src":"4585:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":278,"name":"uint8","nodeType":"ElementaryTypeName","src":"4585:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":292,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":284,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"4610:2:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4602:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":282,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:3","typeDescriptions":{}}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4602:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4617:3:3","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4602:18:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":288,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4601:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4624:2:3","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4601:25:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4595:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":280,"name":"uint8","nodeType":"ElementaryTypeName","src":"4595:5:3","typeDescriptions":{}}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4595:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4585:42:3"},{"expression":{"arguments":[{"id":294,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"4659:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":295,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"4665:1:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":296,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"4668:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":297,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":270,"src":"4671:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":293,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[222,302,410],"referencedDeclaration":410,"src":"4648:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4648:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":268,"id":299,"nodeType":"Return","src":"4641:32:3"}]}]},"documentation":{"id":253,"nodeType":"StructuredDocumentation","src":"3975:205:3","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]"},"id":302,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4194:10:3","nodeType":"FunctionDefinition","parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":255,"mutability":"mutable","name":"hash","nameLocation":"4222:4:3","nodeType":"VariableDeclaration","scope":302,"src":"4214:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":254,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4214:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":257,"mutability":"mutable","name":"r","nameLocation":"4244:1:3","nodeType":"VariableDeclaration","scope":302,"src":"4236:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":256,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4236:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"vs","nameLocation":"4263:2:3","nodeType":"VariableDeclaration","scope":302,"src":"4255:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":258,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4255:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4204:67:3"},"returnParameters":{"id":268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":262,"mutability":"mutable","name":"recovered","nameLocation":"4303:9:3","nodeType":"VariableDeclaration","scope":302,"src":"4295:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":261,"name":"address","nodeType":"ElementaryTypeName","src":"4295:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":265,"mutability":"mutable","name":"err","nameLocation":"4327:3:3","nodeType":"VariableDeclaration","scope":302,"src":"4314:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":264,"nodeType":"UserDefinedTypeName","pathNode":{"id":263,"name":"RecoverError","nameLocations":["4314:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":156,"src":"4314:12:3"},"referencedDeclaration":156,"src":"4314:12:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":267,"mutability":"mutable","name":"errArg","nameLocation":"4340:6:3","nodeType":"VariableDeclaration","scope":302,"src":"4332:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":266,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4332:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4294:53:3"},"scope":496,"src":"4185:505:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":334,"nodeType":"Block","src":"4903:164:3","statements":[{"assignments":[315,318,320],"declarations":[{"constant":false,"id":315,"mutability":"mutable","name":"recovered","nameLocation":"4922:9:3","nodeType":"VariableDeclaration","scope":334,"src":"4914:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"4914:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":318,"mutability":"mutable","name":"error","nameLocation":"4946:5:3","nodeType":"VariableDeclaration","scope":334,"src":"4933:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":317,"nodeType":"UserDefinedTypeName","pathNode":{"id":316,"name":"RecoverError","nameLocations":["4933:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":156,"src":"4933:12:3"},"referencedDeclaration":156,"src":"4933:12:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"errorArg","nameLocation":"4961:8:3","nodeType":"VariableDeclaration","scope":334,"src":"4953:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4953:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":326,"initialValue":{"arguments":[{"id":322,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"4984:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":323,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"4990:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":324,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"4993:2:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":321,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[222,302,410],"referencedDeclaration":302,"src":"4973:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4973:23:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"4913:83:3"},{"expression":{"arguments":[{"id":328,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"5018:5:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},{"id":329,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"5025:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":327,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":495,"src":"5006:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$156_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":331,"nodeType":"ExpressionStatement","src":"5006:28:3"},{"expression":{"id":332,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"5051:9:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":313,"id":333,"nodeType":"Return","src":"5044:16:3"}]},"documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"4696:116:3","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately."},"id":335,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4826:7:3","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":305,"mutability":"mutable","name":"hash","nameLocation":"4842:4:3","nodeType":"VariableDeclaration","scope":335,"src":"4834:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4834:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":307,"mutability":"mutable","name":"r","nameLocation":"4856:1:3","nodeType":"VariableDeclaration","scope":335,"src":"4848:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":306,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4848:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":309,"mutability":"mutable","name":"vs","nameLocation":"4867:2:3","nodeType":"VariableDeclaration","scope":335,"src":"4859:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":308,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4859:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4833:37:3"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":335,"src":"4894:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":311,"name":"address","nodeType":"ElementaryTypeName","src":"4894:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4893:9:3"},"scope":496,"src":"4817:250:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":409,"nodeType":"Block","src":"5382:1372:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":356,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"6278:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6270:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"6270:7:3","typeDescriptions":{}}},"id":357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6270:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6283:66:3","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6270:79:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":370,"nodeType":"IfStatement","src":"6266:164:3","trueBody":{"id":369,"nodeType":"Block","src":"6351:79:3","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6381:1:3","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":361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6373:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":360,"name":"address","nodeType":"ElementaryTypeName","src":"6373:7:3","typeDescriptions":{}}},"id":363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6373:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":364,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"6385:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6398:17:3","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":155,"src":"6385:30:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},{"id":366,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"6417:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6372:47:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":353,"id":368,"nodeType":"Return","src":"6365:54:3"}]}},{"assignments":[372],"declarations":[{"constant":false,"id":372,"mutability":"mutable","name":"signer","nameLocation":"6532:6:3","nodeType":"VariableDeclaration","scope":409,"src":"6524:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":371,"name":"address","nodeType":"ElementaryTypeName","src":"6524:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":379,"initialValue":{"arguments":[{"id":374,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"6551:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":375,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"6557:1:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":376,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"6560:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":377,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"6563:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":373,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6541:9:3","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6541:24:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6524:41:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":380,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6579:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6597:1:3","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":382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6589:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":381,"name":"address","nodeType":"ElementaryTypeName","src":"6589:7:3","typeDescriptions":{}}},"id":384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6589:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6579:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":399,"nodeType":"IfStatement","src":"6575:113:3","trueBody":{"id":398,"nodeType":"Block","src":"6601:87:3","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6631:1:3","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":387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6623:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"6623:7:3","typeDescriptions":{}}},"id":389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6623:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":390,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"6635:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6648:16:3","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":153,"src":"6635:29:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6674:1:3","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":393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6666:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":392,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6666:7:3","typeDescriptions":{}}},"id":395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6666:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":396,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6622:55:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":353,"id":397,"nodeType":"Return","src":"6615:62:3"}]}},{"expression":{"components":[{"id":400,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6706:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":401,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"6714:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6727:7:3","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":152,"src":"6714:20:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6744:1:3","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":404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6736:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6736:7:3","typeDescriptions":{}}},"id":406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6736:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":407,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6705:42:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":353,"id":408,"nodeType":"Return","src":"6698:49:3"}]},"documentation":{"id":336,"nodeType":"StructuredDocumentation","src":"5073:125:3","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":410,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5212:10:3","nodeType":"FunctionDefinition","parameters":{"id":345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":338,"mutability":"mutable","name":"hash","nameLocation":"5240:4:3","nodeType":"VariableDeclaration","scope":410,"src":"5232:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5232:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":340,"mutability":"mutable","name":"v","nameLocation":"5260:1:3","nodeType":"VariableDeclaration","scope":410,"src":"5254:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":339,"name":"uint8","nodeType":"ElementaryTypeName","src":"5254:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":342,"mutability":"mutable","name":"r","nameLocation":"5279:1:3","nodeType":"VariableDeclaration","scope":410,"src":"5271:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5271:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":344,"mutability":"mutable","name":"s","nameLocation":"5298:1:3","nodeType":"VariableDeclaration","scope":410,"src":"5290:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":343,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5290:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5222:83:3"},"returnParameters":{"id":353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":347,"mutability":"mutable","name":"recovered","nameLocation":"5337:9:3","nodeType":"VariableDeclaration","scope":410,"src":"5329:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":346,"name":"address","nodeType":"ElementaryTypeName","src":"5329:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"err","nameLocation":"5361:3:3","nodeType":"VariableDeclaration","scope":410,"src":"5348:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":349,"nodeType":"UserDefinedTypeName","pathNode":{"id":348,"name":"RecoverError","nameLocations":["5348:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":156,"src":"5348:12:3"},"referencedDeclaration":156,"src":"5348:12:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":352,"mutability":"mutable","name":"errArg","nameLocation":"5374:6:3","nodeType":"VariableDeclaration","scope":410,"src":"5366:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5366:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5328:53:3"},"scope":496,"src":"5203:1551:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":445,"nodeType":"Block","src":"6981:166:3","statements":[{"assignments":[425,428,430],"declarations":[{"constant":false,"id":425,"mutability":"mutable","name":"recovered","nameLocation":"7000:9:3","nodeType":"VariableDeclaration","scope":445,"src":"6992:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":424,"name":"address","nodeType":"ElementaryTypeName","src":"6992:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":428,"mutability":"mutable","name":"error","nameLocation":"7024:5:3","nodeType":"VariableDeclaration","scope":445,"src":"7011:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":427,"nodeType":"UserDefinedTypeName","pathNode":{"id":426,"name":"RecoverError","nameLocations":["7011:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":156,"src":"7011:12:3"},"referencedDeclaration":156,"src":"7011:12:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":430,"mutability":"mutable","name":"errorArg","nameLocation":"7039:8:3","nodeType":"VariableDeclaration","scope":445,"src":"7031:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":429,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7031:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":437,"initialValue":{"arguments":[{"id":432,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"7062:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":433,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":415,"src":"7068:1:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":434,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"7071:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":435,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"7074:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":431,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[222,302,410],"referencedDeclaration":410,"src":"7051:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7051:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6991:85:3"},{"expression":{"arguments":[{"id":439,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":428,"src":"7098:5:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},{"id":440,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"7105:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":438,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":495,"src":"7086:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$156_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7086:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":442,"nodeType":"ExpressionStatement","src":"7086:28:3"},{"expression":{"id":443,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":425,"src":"7131:9:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":423,"id":444,"nodeType":"Return","src":"7124:16:3"}]},"documentation":{"id":411,"nodeType":"StructuredDocumentation","src":"6760:122:3","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":446,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6896:7:3","nodeType":"FunctionDefinition","parameters":{"id":420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":413,"mutability":"mutable","name":"hash","nameLocation":"6912:4:3","nodeType":"VariableDeclaration","scope":446,"src":"6904:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":412,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6904:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":415,"mutability":"mutable","name":"v","nameLocation":"6924:1:3","nodeType":"VariableDeclaration","scope":446,"src":"6918:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":414,"name":"uint8","nodeType":"ElementaryTypeName","src":"6918:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":417,"mutability":"mutable","name":"r","nameLocation":"6935:1:3","nodeType":"VariableDeclaration","scope":446,"src":"6927:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":416,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6927:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":419,"mutability":"mutable","name":"s","nameLocation":"6946:1:3","nodeType":"VariableDeclaration","scope":446,"src":"6938:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":418,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6938:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6903:45:3"},"returnParameters":{"id":423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":422,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":446,"src":"6972:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":421,"name":"address","nodeType":"ElementaryTypeName","src":"6972:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6971:9:3"},"scope":496,"src":"6887:260:3","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":494,"nodeType":"Block","src":"7352:460:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"id":458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":455,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"7366:5:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":456,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"7375:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7388:7:3","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":152,"src":"7375:20:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"src":"7366:29:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":461,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"7462:5:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":462,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"7471:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7484:16:3","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":153,"src":"7471:29:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"src":"7462:38:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":469,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"7567:5:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":470,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"7576:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7589:22:3","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":154,"src":"7576:35:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"src":"7567:44:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"id":484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":481,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"7701:5:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":482,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"7710:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7723:17:3","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":155,"src":"7710:30:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"src":"7701:39:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":490,"nodeType":"IfStatement","src":"7697:109:3","trueBody":{"id":489,"nodeType":"Block","src":"7742:64:3","statements":[{"errorCall":{"arguments":[{"id":486,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"7786:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":485,"name":"ECDSAInvalidSignatureS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"7763:22:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7763:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":488,"nodeType":"RevertStatement","src":"7756:39:3"}]}},"id":491,"nodeType":"IfStatement","src":"7563:243:3","trueBody":{"id":480,"nodeType":"Block","src":"7613:78:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":476,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"7670:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7662:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":474,"name":"uint256","nodeType":"ElementaryTypeName","src":"7662:7:3","typeDescriptions":{}}},"id":477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7662:17:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":473,"name":"ECDSAInvalidSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":164,"src":"7634:27:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7634:46:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":479,"nodeType":"RevertStatement","src":"7627:53:3"}]}},"id":492,"nodeType":"IfStatement","src":"7458:348:3","trueBody":{"id":468,"nodeType":"Block","src":"7502:55:3","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":465,"name":"ECDSAInvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":159,"src":"7523:21:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7523:23:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":467,"nodeType":"RevertStatement","src":"7516:30:3"}]}},"id":493,"nodeType":"IfStatement","src":"7362:444:3","trueBody":{"id":460,"nodeType":"Block","src":"7397:55:3","statements":[{"functionReturnParameters":454,"id":459,"nodeType":"Return","src":"7411:7:3"}]}}]},"documentation":{"id":447,"nodeType":"StructuredDocumentation","src":"7153:122:3","text":" @dev Optionally reverts with the corresponding custom error according to the `error` argument provided."},"id":495,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"7289:11:3","nodeType":"FunctionDefinition","parameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":450,"mutability":"mutable","name":"error","nameLocation":"7314:5:3","nodeType":"VariableDeclaration","scope":495,"src":"7301:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":449,"nodeType":"UserDefinedTypeName","pathNode":{"id":448,"name":"RecoverError","nameLocations":["7301:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":156,"src":"7301:12:3"},"referencedDeclaration":156,"src":"7301:12:3","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":452,"mutability":"mutable","name":"errorArg","nameLocation":"7329:8:3","nodeType":"VariableDeclaration","scope":495,"src":"7321:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":451,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7321:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7300:38:3"},"returnParameters":{"id":454,"nodeType":"ParameterList","parameters":[],"src":"7352:0:3"},"scope":496,"src":"7280:532:3","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":497,"src":"344:7470:3","usedErrors":[159,164,169],"usedEvents":[]}],"src":"112:7703:3"},"id":3},"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol","exportedSymbols":{"ECDSA":[496],"IERC1271":[13],"SignatureChecker":[604]},"id":605,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":498,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:4"},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","file":"./ECDSA.sol","id":500,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":605,"sourceUnit":497,"src":"149:34:4","symbolAliases":[{"foreign":{"id":499,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"157:5:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","file":"../../interfaces/IERC1271.sol","id":502,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":605,"sourceUnit":14,"src":"184:55:4","symbolAliases":[{"foreign":{"id":501,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"192:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignatureChecker","contractDependencies":[],"contractKind":"library","documentation":{"id":503,"nodeType":"StructuredDocumentation","src":"241:290:4","text":" @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA\n signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like\n Argent and Safe Wallet (previously Gnosis Safe)."},"fullyImplemented":true,"id":604,"linearizedBaseContracts":[604],"name":"SignatureChecker","nameLocation":"540:16:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":550,"nodeType":"Block","src":"1153:317:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":515,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"1167:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1174:4:4","memberName":"code","nodeType":"MemberAccess","src":"1167:11:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1179:6:4","memberName":"length","nodeType":"MemberAccess","src":"1167:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1189:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1167:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":548,"nodeType":"Block","src":"1381:83:4","statements":[{"expression":{"arguments":[{"id":543,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"1429:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":544,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"1437:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":545,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"1443:9:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":542,"name":"isValidERC1271SignatureNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"1402:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1402:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":514,"id":547,"nodeType":"Return","src":"1395:58:4"}]},"id":549,"nodeType":"IfStatement","src":"1163:301:4","trueBody":{"id":541,"nodeType":"Block","src":"1192:183:4","statements":[{"assignments":[521,524,null],"declarations":[{"constant":false,"id":521,"mutability":"mutable","name":"recovered","nameLocation":"1215:9:4","nodeType":"VariableDeclaration","scope":541,"src":"1207:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":520,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":524,"mutability":"mutable","name":"err","nameLocation":"1245:3:4","nodeType":"VariableDeclaration","scope":541,"src":"1226:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":523,"nodeType":"UserDefinedTypeName","pathNode":{"id":522,"name":"ECDSA.RecoverError","nameLocations":["1226:5:4","1232:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":156,"src":"1226:18:4"},"referencedDeclaration":156,"src":"1226:18:4","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},null],"id":530,"initialValue":{"arguments":[{"id":527,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":508,"src":"1271:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":528,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":510,"src":"1277:9:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":525,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"1254:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$496_$","typeString":"type(library ECDSA)"}},"id":526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1260:10:4","memberName":"tryRecover","nodeType":"MemberAccess","referencedDeclaration":222,"src":"1254:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$156_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"1206:81:4"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"},"id":535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":531,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"1308:3:4","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":532,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"1315:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$496_$","typeString":"type(library ECDSA)"}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1321:12:4","memberName":"RecoverError","nodeType":"MemberAccess","referencedDeclaration":156,"src":"1315:18:4","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$156_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1334:7:4","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":152,"src":"1315:26:4","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$156","typeString":"enum ECDSA.RecoverError"}},"src":"1308:33:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":536,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"1345:9:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":537,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"1358:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1345:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1308:56:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":514,"id":540,"nodeType":"Return","src":"1301:63:4"}]}}]},"documentation":{"id":504,"nodeType":"StructuredDocumentation","src":"563:473:4","text":" @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the\n signature is validated against that smart contract using ERC-1271, otherwise it's validated using `ECDSA.recover`.\n NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n change through time. It could return true at block N and false at block N+1 (or the opposite)."},"id":551,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignatureNow","nameLocation":"1050:19:4","nodeType":"FunctionDefinition","parameters":{"id":511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":506,"mutability":"mutable","name":"signer","nameLocation":"1078:6:4","nodeType":"VariableDeclaration","scope":551,"src":"1070:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":505,"name":"address","nodeType":"ElementaryTypeName","src":"1070:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":508,"mutability":"mutable","name":"hash","nameLocation":"1094:4:4","nodeType":"VariableDeclaration","scope":551,"src":"1086:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":507,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1086:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":510,"mutability":"mutable","name":"signature","nameLocation":"1113:9:4","nodeType":"VariableDeclaration","scope":551,"src":"1100:22:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":509,"name":"bytes","nodeType":"ElementaryTypeName","src":"1100:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1069:54:4"},"returnParameters":{"id":514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":551,"src":"1147:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":512,"name":"bool","nodeType":"ElementaryTypeName","src":"1147:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1146:6:4"},"scope":604,"src":"1041:429:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":602,"nodeType":"Block","src":"2026:309:4","statements":[{"assignments":[564,566],"declarations":[{"constant":false,"id":564,"mutability":"mutable","name":"success","nameLocation":"2042:7:4","nodeType":"VariableDeclaration","scope":602,"src":"2037:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":563,"name":"bool","nodeType":"ElementaryTypeName","src":"2037:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":566,"mutability":"mutable","name":"result","nameLocation":"2064:6:4","nodeType":"VariableDeclaration","scope":602,"src":"2051:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":565,"name":"bytes","nodeType":"ElementaryTypeName","src":"2051:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":578,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":571,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"2120:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$13_$","typeString":"type(contract IERC1271)"}},"id":572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2129:16:4","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":12,"src":"2120:25:4","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},{"components":[{"id":573,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"2148:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":574,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"2154:9:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":575,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2147:17:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"},{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes32,bytes memory)"}],"expression":{"id":569,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2105:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2109:10:4","memberName":"encodeCall","nodeType":"MemberAccess","src":"2105:14:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2105:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":567,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"2074:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2081:10:4","memberName":"staticcall","nodeType":"MemberAccess","src":"2074:17:4","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2074:101:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2036:139:4"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"2193:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":580,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"2216:6:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2223:6:4","memberName":"length","nodeType":"MemberAccess","src":"2216:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2233:2:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2216:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2193:42:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":587,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"2262:6:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2271:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":588,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2271:7:4","typeDescriptions":{}}}],"id":590,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2270:9:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}],"expression":{"id":585,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2251:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2255:6:4","memberName":"decode","nodeType":"MemberAccess","src":"2251:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":594,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"2292:8:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$13_$","typeString":"type(contract IERC1271)"}},"id":595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2301:16:4","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":12,"src":"2292:25:4","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2318:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2292:34:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2284:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":592,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:4","typeDescriptions":{}}},"id":597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2284:43:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2251:76:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2193:134:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":600,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2192:136:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":562,"id":601,"nodeType":"Return","src":"2185:143:4"}]},"documentation":{"id":552,"nodeType":"StructuredDocumentation","src":"1476:396:4","text":" @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\n against the signer smart contract using ERC-1271.\n NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n change through time. It could return true at block N and false at block N+1 (or the opposite)."},"id":603,"implemented":true,"kind":"function","modifiers":[],"name":"isValidERC1271SignatureNow","nameLocation":"1886:26:4","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":554,"mutability":"mutable","name":"signer","nameLocation":"1930:6:4","nodeType":"VariableDeclaration","scope":603,"src":"1922:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":553,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":556,"mutability":"mutable","name":"hash","nameLocation":"1954:4:4","nodeType":"VariableDeclaration","scope":603,"src":"1946:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":555,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1946:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":558,"mutability":"mutable","name":"signature","nameLocation":"1981:9:4","nodeType":"VariableDeclaration","scope":603,"src":"1968:22:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":557,"name":"bytes","nodeType":"ElementaryTypeName","src":"1968:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1912:84:4"},"returnParameters":{"id":562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":603,"src":"2020:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":560,"name":"bool","nodeType":"ElementaryTypeName","src":"2020:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2019:6:4"},"scope":604,"src":"1877:458:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":605,"src":"532:1805:4","usedErrors":[],"usedEvents":[]}],"src":"123:2215:4"},"id":4},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[616]},"id":617,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":606,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":607,"nodeType":"StructuredDocumentation","src":"141:280:5","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":616,"linearizedBaseContracts":[616],"name":"IERC165","nameLocation":"432:7:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":608,"nodeType":"StructuredDocumentation","src":"446:340:5","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":615,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"800:17:5","nodeType":"FunctionDefinition","parameters":{"id":611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":610,"mutability":"mutable","name":"interfaceId","nameLocation":"825:11:5","nodeType":"VariableDeclaration","scope":615,"src":"818:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":609,"name":"bytes4","nodeType":"ElementaryTypeName","src":"818:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"817:20:5"},"returnParameters":{"id":614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":615,"src":"861:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":612,"name":"bool","nodeType":"ElementaryTypeName","src":"861:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"860:6:5"},"scope":616,"src":"791:76:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":617,"src":"422:447:5","usedErrors":[],"usedEvents":[]}],"src":"115:755:5"},"id":5},"contracts/ERC6551Account.sol":{"ast":{"absolutePath":"contracts/ERC6551Account.sol","exportedSymbols":{"ECDSA":[496],"ERC6551Account":[944],"IERC1271":[13],"IERC165":[616],"IERC6551Account":[978],"IERC6551Executable":[996],"IERC721":[130],"IERC721Receiver":[148],"SignatureChecker":[604]},"id":945,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":618,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:6"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":619,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":617,"src":"57:65:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":620,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":131,"src":"123:58:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":621,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":149,"src":"182:66:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","file":"@openzeppelin/contracts/interfaces/IERC1271.sol","id":622,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":14,"src":"249:57:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol","file":"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol","id":623,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":605,"src":"307:73:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC6551Account.sol","file":"./interfaces/IERC6551Account.sol","id":624,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":979,"src":"381:42:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC6551Executable.sol","file":"./interfaces/IERC6551Executable.sol","id":625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":997,"src":"424:45:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":627,"name":"IERC165","nameLocations":["586:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"586:7:6"},"id":628,"nodeType":"InheritanceSpecifier","src":"586:7:6"},{"baseName":{"id":629,"name":"IERC1271","nameLocations":["599:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"599:8:6"},"id":630,"nodeType":"InheritanceSpecifier","src":"599:8:6"},{"baseName":{"id":631,"name":"IERC6551Account","nameLocations":["613:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":978,"src":"613:15:6"},"id":632,"nodeType":"InheritanceSpecifier","src":"613:15:6"},{"baseName":{"id":633,"name":"IERC6551Executable","nameLocations":["634:18:6"],"nodeType":"IdentifierPath","referencedDeclaration":996,"src":"634:18:6"},"id":634,"nodeType":"InheritanceSpecifier","src":"634:18:6"},{"baseName":{"id":635,"name":"IERC721Receiver","nameLocations":["658:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":148,"src":"658:15:6"},"id":636,"nodeType":"InheritanceSpecifier","src":"658:15:6"}],"canonicalName":"ERC6551Account","contractDependencies":[],"contractKind":"contract","documentation":{"id":626,"nodeType":"StructuredDocumentation","src":"471:83:6","text":" @title A simple implementation of ERC6551Account\n @author ERC6551 Team"},"fullyImplemented":true,"id":944,"linearizedBaseContracts":[944,148,996,978,13,616],"name":"ERC6551Account","nameLocation":"564:14:6","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[967],"constant":false,"documentation":{"id":637,"nodeType":"StructuredDocumentation","src":"680:76:6","text":" @dev Account state nonce, incremented on each transaction"},"functionSelector":"c19d93fb","id":639,"mutability":"mutable","name":"state","nameLocation":"776:5:6","nodeType":"VariableDeclaration","scope":944,"src":"761:20:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":638,"name":"uint256","nodeType":"ElementaryTypeName","src":"761:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"documentation":{"id":640,"nodeType":"StructuredDocumentation","src":"788:192:6","text":" @dev Storage slot for token data\n This is written during initialization by the registry\n Structure: chainId (uint256), tokenContract (address), tokenId (uint256)"},"id":645,"mutability":"constant","name":"TOKEN_DATA_SLOT","nameLocation":"1010:15:6","nodeType":"VariableDeclaration","scope":944,"src":"985:85:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":641,"name":"bytes32","nodeType":"ElementaryTypeName","src":"985:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"657263363535312e6163636f756e742e746f6b656e","id":643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1046:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0","typeString":"literal_string \"erc6551.account.token\""},"value":"erc6551.account.token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0","typeString":"literal_string \"erc6551.account.token\""}],"id":642,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1036:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1036:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"baseFunctions":[951],"body":{"id":649,"nodeType":"Block","src":"1166:2:6","statements":[]},"documentation":{"id":646,"nodeType":"StructuredDocumentation","src":"1077:57:6","text":" @dev Allows the account to receive ETH"},"id":650,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"1146:2:6"},"returnParameters":{"id":648,"nodeType":"ParameterList","parameters":[],"src":"1166:0:6"},"scope":944,"src":"1139:29:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[995],"body":{"id":724,"nodeType":"Block","src":"1413:568:6","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":666,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1446:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1450:6:6","memberName":"sender","nodeType":"MemberAccess","src":"1446:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":665,"name":"_isValidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"1431:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1431:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964207369676e6572","id":669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1459:16:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365","typeString":"literal_string \"Invalid signer\""},"value":"Invalid signer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365","typeString":"literal_string \"Invalid signer\""}],"id":664,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1423:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1423:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":671,"nodeType":"ExpressionStatement","src":"1423:53:6"},{"expression":{"id":673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1487:7:6","subExpression":{"id":672,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"1489:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":674,"nodeType":"ExpressionStatement","src":"1487:7:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":675,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":659,"src":"1509:9:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1522:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1509:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":697,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":659,"src":"1711:9:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1711:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":721,"nodeType":"Block","src":"1919:56:6","statements":[{"expression":{"arguments":[{"hexValue":"556e737570706f72746564206f7065726174696f6e","id":718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1940:23:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5","typeString":"literal_string \"Unsupported operation\""},"value":"Unsupported operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5","typeString":"literal_string \"Unsupported operation\""}],"id":717,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1933:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1933:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":720,"nodeType":"ExpressionStatement","src":"1933:31:6"}]},"id":722,"nodeType":"IfStatement","src":"1707:268:6","trueBody":{"id":716,"nodeType":"Block","src":"1727:186:6","statements":[{"assignments":[701,703],"declarations":[{"constant":false,"id":701,"mutability":"mutable","name":"success","nameLocation":"1775:7:6","nodeType":"VariableDeclaration","scope":716,"src":"1770:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":700,"name":"bool","nodeType":"ElementaryTypeName","src":"1770:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":703,"mutability":"mutable","name":"ret","nameLocation":"1797:3:6","nodeType":"VariableDeclaration","scope":716,"src":"1784:16:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":702,"name":"bytes","nodeType":"ElementaryTypeName","src":"1784:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":708,"initialValue":{"arguments":[{"id":706,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"1820:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":704,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"1804:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1807:12:6","memberName":"delegatecall","nodeType":"MemberAccess","src":"1804:15:6","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1804:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1769:56:6"},{"expression":{"arguments":[{"id":710,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"1847:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"44656c656761746563616c6c206661696c6564","id":711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1856:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb","typeString":"literal_string \"Delegatecall failed\""},"value":"Delegatecall failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb","typeString":"literal_string \"Delegatecall failed\""}],"id":709,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1839:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1839:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":713,"nodeType":"ExpressionStatement","src":"1839:39:6"},{"expression":{"id":714,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"1899:3:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":663,"id":715,"nodeType":"Return","src":"1892:10:6"}]}},"id":723,"nodeType":"IfStatement","src":"1505:470:6","trueBody":{"id":696,"nodeType":"Block","src":"1525:176:6","statements":[{"assignments":[679,681],"declarations":[{"constant":false,"id":679,"mutability":"mutable","name":"success","nameLocation":"1565:7:6","nodeType":"VariableDeclaration","scope":696,"src":"1560:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":678,"name":"bool","nodeType":"ElementaryTypeName","src":"1560:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":681,"mutability":"mutable","name":"ret","nameLocation":"1587:3:6","nodeType":"VariableDeclaration","scope":696,"src":"1574:16:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":680,"name":"bytes","nodeType":"ElementaryTypeName","src":"1574:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":688,"initialValue":{"arguments":[{"id":686,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"1616:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":682,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":653,"src":"1594:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1597:4:6","memberName":"call","nodeType":"MemberAccess","src":"1594:7:6","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":685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":684,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"1609:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1594:21:6","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":687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1594:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1559:62:6"},{"expression":{"arguments":[{"id":690,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":679,"src":"1643:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616c6c206661696c6564","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1652:13:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b","typeString":"literal_string \"Call failed\""},"value":"Call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b","typeString":"literal_string \"Call failed\""}],"id":689,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1635:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1635:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":693,"nodeType":"ExpressionStatement","src":"1635:31:6"},{"expression":{"id":694,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":681,"src":"1687:3:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":663,"id":695,"nodeType":"Return","src":"1680:10:6"}]}}]},"documentation":{"id":651,"nodeType":"StructuredDocumentation","src":"1174:67:6","text":" @dev Executes a transaction from the token owner"},"functionSelector":"51945447","id":725,"implemented":true,"kind":"function","modifiers":[],"name":"execute","nameLocation":"1255:7:6","nodeType":"FunctionDefinition","parameters":{"id":660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":653,"mutability":"mutable","name":"to","nameLocation":"1280:2:6","nodeType":"VariableDeclaration","scope":725,"src":"1272:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":652,"name":"address","nodeType":"ElementaryTypeName","src":"1272:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":655,"mutability":"mutable","name":"value","nameLocation":"1300:5:6","nodeType":"VariableDeclaration","scope":725,"src":"1292:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":654,"name":"uint256","nodeType":"ElementaryTypeName","src":"1292:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"data","nameLocation":"1330:4:6","nodeType":"VariableDeclaration","scope":725,"src":"1315:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":656,"name":"bytes","nodeType":"ElementaryTypeName","src":"1315:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":659,"mutability":"mutable","name":"operation","nameLocation":"1350:9:6","nodeType":"VariableDeclaration","scope":725,"src":"1344:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":658,"name":"uint8","nodeType":"ElementaryTypeName","src":"1344:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1262:103:6"},"returnParameters":{"id":663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":662,"mutability":"mutable","name":"result","nameLocation":"1405:6:6","nodeType":"VariableDeclaration","scope":725,"src":"1392:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":661,"name":"bytes","nodeType":"ElementaryTypeName","src":"1392:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1391:21:6"},"scope":944,"src":"1246:735:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[961],"body":{"id":740,"nodeType":"Block","src":"2180:247:6","statements":[{"assignments":[736],"declarations":[{"constant":false,"id":736,"mutability":"mutable","name":"slot","nameLocation":"2242:4:6","nodeType":"VariableDeclaration","scope":740,"src":"2234:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":735,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2234:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":738,"initialValue":{"id":737,"name":"TOKEN_DATA_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"2249:15:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2234:30:6"},{"AST":{"nativeSrc":"2283:138:6","nodeType":"YulBlock","src":"2283:138:6","statements":[{"nativeSrc":"2297:22:6","nodeType":"YulAssignment","src":"2297:22:6","value":{"arguments":[{"name":"slot","nativeSrc":"2314:4:6","nodeType":"YulIdentifier","src":"2314:4:6"}],"functionName":{"name":"sload","nativeSrc":"2308:5:6","nodeType":"YulIdentifier","src":"2308:5:6"},"nativeSrc":"2308:11:6","nodeType":"YulFunctionCall","src":"2308:11:6"},"variableNames":[{"name":"chainId","nativeSrc":"2297:7:6","nodeType":"YulIdentifier","src":"2297:7:6"}]},{"nativeSrc":"2332:36:6","nodeType":"YulAssignment","src":"2332:36:6","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"2359:4:6","nodeType":"YulIdentifier","src":"2359:4:6"},{"kind":"number","nativeSrc":"2365:1:6","nodeType":"YulLiteral","src":"2365:1:6","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2355:3:6","nodeType":"YulIdentifier","src":"2355:3:6"},"nativeSrc":"2355:12:6","nodeType":"YulFunctionCall","src":"2355:12:6"}],"functionName":{"name":"sload","nativeSrc":"2349:5:6","nodeType":"YulIdentifier","src":"2349:5:6"},"nativeSrc":"2349:19:6","nodeType":"YulFunctionCall","src":"2349:19:6"},"variableNames":[{"name":"tokenContract","nativeSrc":"2332:13:6","nodeType":"YulIdentifier","src":"2332:13:6"}]},{"nativeSrc":"2381:30:6","nodeType":"YulAssignment","src":"2381:30:6","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"2402:4:6","nodeType":"YulIdentifier","src":"2402:4:6"},{"kind":"number","nativeSrc":"2408:1:6","nodeType":"YulLiteral","src":"2408:1:6","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"2398:3:6","nodeType":"YulIdentifier","src":"2398:3:6"},"nativeSrc":"2398:12:6","nodeType":"YulFunctionCall","src":"2398:12:6"}],"functionName":{"name":"sload","nativeSrc":"2392:5:6","nodeType":"YulIdentifier","src":"2392:5:6"},"nativeSrc":"2392:19:6","nodeType":"YulFunctionCall","src":"2392:19:6"},"variableNames":[{"name":"tokenId","nativeSrc":"2381:7:6","nodeType":"YulIdentifier","src":"2381:7:6"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":729,"isOffset":false,"isSlot":false,"src":"2297:7:6","valueSize":1},{"declaration":736,"isOffset":false,"isSlot":false,"src":"2314:4:6","valueSize":1},{"declaration":736,"isOffset":false,"isSlot":false,"src":"2359:4:6","valueSize":1},{"declaration":736,"isOffset":false,"isSlot":false,"src":"2402:4:6","valueSize":1},{"declaration":731,"isOffset":false,"isSlot":false,"src":"2332:13:6","valueSize":1},{"declaration":733,"isOffset":false,"isSlot":false,"src":"2381:7:6","valueSize":1}],"id":739,"nodeType":"InlineAssembly","src":"2274:147:6"}]},"documentation":{"id":726,"nodeType":"StructuredDocumentation","src":"1987:63:6","text":" @dev Returns the token bound to this account"},"functionSelector":"fc0c546a","id":741,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"2064:5:6","nodeType":"FunctionDefinition","parameters":{"id":727,"nodeType":"ParameterList","parameters":[],"src":"2069:2:6"},"returnParameters":{"id":734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":729,"mutability":"mutable","name":"chainId","nameLocation":"2127:7:6","nodeType":"VariableDeclaration","scope":741,"src":"2119:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":728,"name":"uint256","nodeType":"ElementaryTypeName","src":"2119:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":731,"mutability":"mutable","name":"tokenContract","nameLocation":"2144:13:6","nodeType":"VariableDeclaration","scope":741,"src":"2136:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":730,"name":"address","nodeType":"ElementaryTypeName","src":"2136:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":733,"mutability":"mutable","name":"tokenId","nameLocation":"2167:7:6","nodeType":"VariableDeclaration","scope":741,"src":"2159:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":732,"name":"uint256","nodeType":"ElementaryTypeName","src":"2159:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2118:57:6"},"scope":944,"src":"2055:372:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":767,"nodeType":"Block","src":"2686:464:6","statements":[{"assignments":[752],"declarations":[{"constant":false,"id":752,"mutability":"mutable","name":"slot","nameLocation":"2767:4:6","nodeType":"VariableDeclaration","scope":767,"src":"2759:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2759:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":754,"initialValue":{"id":753,"name":"TOKEN_DATA_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"2774:15:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2759:30:6"},{"assignments":[756],"declarations":[{"constant":false,"id":756,"mutability":"mutable","name":"storedChainId","nameLocation":"2807:13:6","nodeType":"VariableDeclaration","scope":767,"src":"2799:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":755,"name":"uint256","nodeType":"ElementaryTypeName","src":"2799:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":757,"nodeType":"VariableDeclarationStatement","src":"2799:21:6"},{"AST":{"nativeSrc":"2839:52:6","nodeType":"YulBlock","src":"2839:52:6","statements":[{"nativeSrc":"2853:28:6","nodeType":"YulAssignment","src":"2853:28:6","value":{"arguments":[{"name":"slot","nativeSrc":"2876:4:6","nodeType":"YulIdentifier","src":"2876:4:6"}],"functionName":{"name":"sload","nativeSrc":"2870:5:6","nodeType":"YulIdentifier","src":"2870:5:6"},"nativeSrc":"2870:11:6","nodeType":"YulFunctionCall","src":"2870:11:6"},"variableNames":[{"name":"storedChainId","nativeSrc":"2853:13:6","nodeType":"YulIdentifier","src":"2853:13:6"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":752,"isOffset":false,"isSlot":false,"src":"2876:4:6","valueSize":1},{"declaration":756,"isOffset":false,"isSlot":false,"src":"2853:13:6","valueSize":1}],"id":758,"nodeType":"InlineAssembly","src":"2830:61:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":760,"name":"storedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"2908:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2925:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2908:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920696e697469616c697a6564","id":763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2928:21:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""},"value":"Already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""}],"id":759,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2900:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2900:50:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":765,"nodeType":"ExpressionStatement","src":"2900:50:6"},{"AST":{"nativeSrc":"3009:135:6","nodeType":"YulBlock","src":"3009:135:6","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"3030:4:6","nodeType":"YulIdentifier","src":"3030:4:6"},{"name":"chainId","nativeSrc":"3036:7:6","nodeType":"YulIdentifier","src":"3036:7:6"}],"functionName":{"name":"sstore","nativeSrc":"3023:6:6","nodeType":"YulIdentifier","src":"3023:6:6"},"nativeSrc":"3023:21:6","nodeType":"YulFunctionCall","src":"3023:21:6"},"nativeSrc":"3023:21:6","nodeType":"YulExpressionStatement","src":"3023:21:6"},{"expression":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3068:4:6","nodeType":"YulIdentifier","src":"3068:4:6"},{"kind":"number","nativeSrc":"3074:1:6","nodeType":"YulLiteral","src":"3074:1:6","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3064:3:6","nodeType":"YulIdentifier","src":"3064:3:6"},"nativeSrc":"3064:12:6","nodeType":"YulFunctionCall","src":"3064:12:6"},{"name":"tokenContract","nativeSrc":"3078:13:6","nodeType":"YulIdentifier","src":"3078:13:6"}],"functionName":{"name":"sstore","nativeSrc":"3057:6:6","nodeType":"YulIdentifier","src":"3057:6:6"},"nativeSrc":"3057:35:6","nodeType":"YulFunctionCall","src":"3057:35:6"},"nativeSrc":"3057:35:6","nodeType":"YulExpressionStatement","src":"3057:35:6"},{"expression":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3116:4:6","nodeType":"YulIdentifier","src":"3116:4:6"},{"kind":"number","nativeSrc":"3122:1:6","nodeType":"YulLiteral","src":"3122:1:6","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"3112:3:6","nodeType":"YulIdentifier","src":"3112:3:6"},"nativeSrc":"3112:12:6","nodeType":"YulFunctionCall","src":"3112:12:6"},{"name":"tokenId","nativeSrc":"3126:7:6","nodeType":"YulIdentifier","src":"3126:7:6"}],"functionName":{"name":"sstore","nativeSrc":"3105:6:6","nodeType":"YulIdentifier","src":"3105:6:6"},"nativeSrc":"3105:29:6","nodeType":"YulFunctionCall","src":"3105:29:6"},"nativeSrc":"3105:29:6","nodeType":"YulExpressionStatement","src":"3105:29:6"}]},"evmVersion":"paris","externalReferences":[{"declaration":744,"isOffset":false,"isSlot":false,"src":"3036:7:6","valueSize":1},{"declaration":752,"isOffset":false,"isSlot":false,"src":"3030:4:6","valueSize":1},{"declaration":752,"isOffset":false,"isSlot":false,"src":"3068:4:6","valueSize":1},{"declaration":752,"isOffset":false,"isSlot":false,"src":"3116:4:6","valueSize":1},{"declaration":746,"isOffset":false,"isSlot":false,"src":"3078:13:6","valueSize":1},{"declaration":748,"isOffset":false,"isSlot":false,"src":"3126:7:6","valueSize":1}],"id":766,"nodeType":"InlineAssembly","src":"3000:144:6"}]},"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"2433:132:6","text":" @dev Initialization function that stores token data\n This is called by the registry during account creation"},"functionSelector":"fffb5183","id":768,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"2579:10:6","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"chainId","nameLocation":"2607:7:6","nodeType":"VariableDeclaration","scope":768,"src":"2599:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":743,"name":"uint256","nodeType":"ElementaryTypeName","src":"2599:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"tokenContract","nameLocation":"2632:13:6","nodeType":"VariableDeclaration","scope":768,"src":"2624:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":745,"name":"address","nodeType":"ElementaryTypeName","src":"2624:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"tokenId","nameLocation":"2663:7:6","nodeType":"VariableDeclaration","scope":768,"src":"2655:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":747,"name":"uint256","nodeType":"ElementaryTypeName","src":"2655:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2589:87:6"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[],"src":"2686:0:6"},"scope":944,"src":"2570:580:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[977],"body":{"id":792,"nodeType":"Block","src":"3347:141:6","statements":[{"condition":{"arguments":[{"id":779,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":771,"src":"3376:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":778,"name":"_isValidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"3361:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3361:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":786,"nodeType":"IfStatement","src":"3357:98:6","trueBody":{"id":785,"nodeType":"Block","src":"3385:70:6","statements":[{"expression":{"expression":{"expression":{"id":781,"name":"IERC6551Account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":978,"src":"3406:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$978_$","typeString":"type(contract IERC6551Account)"}},"id":782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3422:13:6","memberName":"isValidSigner","nodeType":"MemberAccess","referencedDeclaration":977,"src":"3406:29:6","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC6551Account.isValidSigner(address,bytes calldata) view returns (bytes4)"}},"id":783,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3436:8:6","memberName":"selector","nodeType":"MemberAccess","src":"3406:38:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":777,"id":784,"nodeType":"Return","src":"3399:45:6"}]}},{"expression":{"arguments":[{"hexValue":"30","id":789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3479:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3472:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":787,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3472:6:6","typeDescriptions":{}}},"id":790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3472:9:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":777,"id":791,"nodeType":"Return","src":"3465:16:6"}]},"documentation":{"id":769,"nodeType":"StructuredDocumentation","src":"3156:78:6","text":" @dev Validates if a signer is authorized to perform actions"},"functionSelector":"523e3260","id":793,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSigner","nameLocation":"3248:13:6","nodeType":"FunctionDefinition","parameters":{"id":774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"signer","nameLocation":"3279:6:6","nodeType":"VariableDeclaration","scope":793,"src":"3271:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":770,"name":"address","nodeType":"ElementaryTypeName","src":"3271:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":793,"src":"3295:14:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":772,"name":"bytes","nodeType":"ElementaryTypeName","src":"3295:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3261:54:6"},"returnParameters":{"id":777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":793,"src":"3339:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":775,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3339:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3338:8:6"},"scope":944,"src":"3239:249:6","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[12],"body":{"id":849,"nodeType":"Block","src":"3693:394:6","statements":[{"assignments":[804,806,808],"declarations":[{"constant":false,"id":804,"mutability":"mutable","name":"chainId","nameLocation":"3712:7:6","nodeType":"VariableDeclaration","scope":849,"src":"3704:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":803,"name":"uint256","nodeType":"ElementaryTypeName","src":"3704:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":806,"mutability":"mutable","name":"tokenContract","nameLocation":"3729:13:6","nodeType":"VariableDeclaration","scope":849,"src":"3721:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":805,"name":"address","nodeType":"ElementaryTypeName","src":"3721:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":808,"mutability":"mutable","name":"tokenId","nameLocation":"3752:7:6","nodeType":"VariableDeclaration","scope":849,"src":"3744:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":807,"name":"uint256","nodeType":"ElementaryTypeName","src":"3744:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":812,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":809,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3763:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_ERC6551Account_$944","typeString":"contract ERC6551Account"}},"id":810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3781:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":741,"src":"3763:23:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view external returns (uint256,address,uint256)"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3763:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3703:85:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":813,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":804,"src":"3803:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":814,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3814:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3820:7:6","memberName":"chainid","nodeType":"MemberAccess","src":"3814:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3803:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":822,"nodeType":"IfStatement","src":"3799:46:6","trueBody":{"expression":{"arguments":[{"hexValue":"30","id":819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3836:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":817,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3836:6:6","typeDescriptions":{}}},"id":820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3836:9:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":802,"id":821,"nodeType":"Return","src":"3829:16:6"}},{"assignments":[824],"declarations":[{"constant":false,"id":824,"mutability":"mutable","name":"owner","nameLocation":"3864:5:6","nodeType":"VariableDeclaration","scope":849,"src":"3856:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":823,"name":"address","nodeType":"ElementaryTypeName","src":"3856:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":831,"initialValue":{"arguments":[{"id":829,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"3903:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":826,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"3880:13:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":825,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"3872:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$130_$","typeString":"type(contract IERC721)"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3872:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$130","typeString":"contract IERC721"}},"id":828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3895:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":63,"src":"3872:30:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3872:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3856:55:6"},{"condition":{"arguments":[{"id":834,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"3963:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":835,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"3970:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":836,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"3976:9:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":832,"name":"SignatureChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"3926:16:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignatureChecker_$604_$","typeString":"type(library SignatureChecker)"}},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3943:19:6","memberName":"isValidSignatureNow","nodeType":"MemberAccess","referencedDeclaration":551,"src":"3926:36:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3926:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":843,"nodeType":"IfStatement","src":"3922:132:6","trueBody":{"id":842,"nodeType":"Block","src":"3988:66:6","statements":[{"expression":{"expression":{"expression":{"id":838,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"4009:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$13_$","typeString":"type(contract IERC1271)"}},"id":839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4018:16:6","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":12,"src":"4009:25:6","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},"id":840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4035:8:6","memberName":"selector","nodeType":"MemberAccess","src":"4009:34:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":802,"id":841,"nodeType":"Return","src":"4002:41:6"}]}},{"expression":{"arguments":[{"hexValue":"30","id":846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4078:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4071:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":844,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4071:6:6","typeDescriptions":{}}},"id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4071:9:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":802,"id":848,"nodeType":"Return","src":"4064:16:6"}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"3494:66:6","text":" @dev Validates signatures according to ERC-1271"},"functionSelector":"1626ba7e","id":850,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"3574:16:6","nodeType":"FunctionDefinition","parameters":{"id":799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"hash","nameLocation":"3608:4:6","nodeType":"VariableDeclaration","scope":850,"src":"3600:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3600:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":798,"mutability":"mutable","name":"signature","nameLocation":"3635:9:6","nodeType":"VariableDeclaration","scope":850,"src":"3622:22:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":797,"name":"bytes","nodeType":"ElementaryTypeName","src":"3622:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3590:60:6"},"returnParameters":{"id":802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":801,"mutability":"mutable","name":"magicValue","nameLocation":"3681:10:6","nodeType":"VariableDeclaration","scope":850,"src":"3674:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":800,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3674:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3673:19:6"},"scope":944,"src":"3565:522:6","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[147],"body":{"id":869,"nodeType":"Block","src":"4373:65:6","statements":[{"expression":{"expression":{"expression":{"id":865,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"4390:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$148_$","typeString":"type(contract IERC721Receiver)"}},"id":866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4406:16:6","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":147,"src":"4390:32:6","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4423:8:6","memberName":"selector","nodeType":"MemberAccess","src":"4390:41:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":864,"id":868,"nodeType":"Return","src":"4383:48:6"}]},"documentation":{"id":851,"nodeType":"StructuredDocumentation","src":"4093:106:6","text":" @dev Implements IERC721Receiver interface to allow the account to receive ERC721 tokens"},"functionSelector":"150b7a02","id":870,"implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"4213:16:6","nodeType":"FunctionDefinition","overrides":{"id":861,"nodeType":"OverrideSpecifier","overrides":[],"src":"4347:8:6"},"parameters":{"id":860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":853,"mutability":"mutable","name":"operator","nameLocation":"4247:8:6","nodeType":"VariableDeclaration","scope":870,"src":"4239:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":852,"name":"address","nodeType":"ElementaryTypeName","src":"4239:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":855,"mutability":"mutable","name":"from","nameLocation":"4273:4:6","nodeType":"VariableDeclaration","scope":870,"src":"4265:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":854,"name":"address","nodeType":"ElementaryTypeName","src":"4265:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":857,"mutability":"mutable","name":"tokenId","nameLocation":"4295:7:6","nodeType":"VariableDeclaration","scope":870,"src":"4287:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":856,"name":"uint256","nodeType":"ElementaryTypeName","src":"4287:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":859,"mutability":"mutable","name":"data","nameLocation":"4327:4:6","nodeType":"VariableDeclaration","scope":870,"src":"4312:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":858,"name":"bytes","nodeType":"ElementaryTypeName","src":"4312:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4229:108:6"},"returnParameters":{"id":864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":863,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":870,"src":"4365:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":862,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4365:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4364:8:6"},"scope":944,"src":"4204:234:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[615],"body":{"id":907,"nodeType":"Block","src":"4593:261:6","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":878,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"4611:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":880,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"4631:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$616_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$616_$","typeString":"type(contract IERC165)"}],"id":879,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4626:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4626:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$616","typeString":"type(contract IERC165)"}},"id":882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4640:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"4626:25:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4611:40:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":884,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"4667:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":886,"name":"IERC6551Account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":978,"src":"4687:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$978_$","typeString":"type(contract IERC6551Account)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$978_$","typeString":"type(contract IERC6551Account)"}],"id":885,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4682:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4682:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC6551Account_$978","typeString":"type(contract IERC6551Account)"}},"id":888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4704:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"4682:33:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4667:48:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4611:104:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":891,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"4731:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":893,"name":"IERC6551Executable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"4751:18:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Executable_$996_$","typeString":"type(contract IERC6551Executable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC6551Executable_$996_$","typeString":"type(contract IERC6551Executable)"}],"id":892,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4746:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4746:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC6551Executable_$996","typeString":"type(contract IERC6551Executable)"}},"id":895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4771:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"4746:36:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4731:51:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4611:171:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":898,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"4798:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":900,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"4818:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$148_$","typeString":"type(contract IERC721Receiver)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$148_$","typeString":"type(contract IERC721Receiver)"}],"id":899,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4813:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4813:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Receiver_$148","typeString":"type(contract IERC721Receiver)"}},"id":902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4835:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"4813:33:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4798:48:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4611:235:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4610:237:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":877,"id":906,"nodeType":"Return","src":"4603:244:6"}]},"documentation":{"id":871,"nodeType":"StructuredDocumentation","src":"4444:54:6","text":" @dev Implements interface detection"},"functionSelector":"01ffc9a7","id":908,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4512:17:6","nodeType":"FunctionDefinition","parameters":{"id":874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":873,"mutability":"mutable","name":"interfaceId","nameLocation":"4546:11:6","nodeType":"VariableDeclaration","scope":908,"src":"4539:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":872,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4539:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4529:34:6"},"returnParameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":908,"src":"4587:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":875,"name":"bool","nodeType":"ElementaryTypeName","src":"4587:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4586:6:6"},"scope":944,"src":"4503:351:6","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":942,"nodeType":"Block","src":"5003:222:6","statements":[{"assignments":[917,919,921],"declarations":[{"constant":false,"id":917,"mutability":"mutable","name":"chainId","nameLocation":"5022:7:6","nodeType":"VariableDeclaration","scope":942,"src":"5014:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":916,"name":"uint256","nodeType":"ElementaryTypeName","src":"5014:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":919,"mutability":"mutable","name":"tokenContract","nameLocation":"5039:13:6","nodeType":"VariableDeclaration","scope":942,"src":"5031:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":918,"name":"address","nodeType":"ElementaryTypeName","src":"5031:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":921,"mutability":"mutable","name":"tokenId","nameLocation":"5062:7:6","nodeType":"VariableDeclaration","scope":942,"src":"5054:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":920,"name":"uint256","nodeType":"ElementaryTypeName","src":"5054:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":925,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":922,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5073:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_ERC6551Account_$944","typeString":"contract ERC6551Account"}},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5091:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":741,"src":"5073:23:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view external returns (uint256,address,uint256)"}},"id":924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5073:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5013:85:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":926,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"5113:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":927,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5124:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5130:7:6","memberName":"chainid","nodeType":"MemberAccess","src":"5124:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5113:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":932,"nodeType":"IfStatement","src":"5109:42:6","trueBody":{"expression":{"hexValue":"66616c7365","id":930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5146:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":915,"id":931,"nodeType":"Return","src":"5139:12:6"}},{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":933,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":911,"src":"5169:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":938,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":921,"src":"5210:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":935,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"5187:13:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":934,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"5179:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$130_$","typeString":"type(contract IERC721)"}},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5179:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$130","typeString":"contract IERC721"}},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5202:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":63,"src":"5179:30:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5179:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5169:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":915,"id":941,"nodeType":"Return","src":"5162:56:6"}]},"documentation":{"id":909,"nodeType":"StructuredDocumentation","src":"4860:69:6","text":" @dev Internal helper to check if a signer is valid"},"id":943,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSigner","nameLocation":"4943:14:6","nodeType":"FunctionDefinition","parameters":{"id":912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":911,"mutability":"mutable","name":"signer","nameLocation":"4966:6:6","nodeType":"VariableDeclaration","scope":943,"src":"4958:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":910,"name":"address","nodeType":"ElementaryTypeName","src":"4958:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4957:16:6"},"returnParameters":{"id":915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":943,"src":"4997:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":913,"name":"bool","nodeType":"ElementaryTypeName","src":"4997:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4996:6:6"},"scope":944,"src":"4934:291:6","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":945,"src":"555:4672:6","usedErrors":[],"usedEvents":[]}],"src":"32:5196:6"},"id":6},"contracts/interfaces/IERC6551Account.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Account.sol","exportedSymbols":{"IERC6551Account":[978]},"id":979,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":946,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Account","contractDependencies":[],"contractKind":"interface","documentation":{"id":947,"nodeType":"StructuredDocumentation","src":"57:67:7","text":"@dev the ERC-165 identifier for this interface is `0x6faff5f1`"},"fullyImplemented":false,"id":978,"linearizedBaseContracts":[978],"name":"IERC6551Account","nameLocation":"134:15:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":948,"nodeType":"StructuredDocumentation","src":"156:236:7","text":" @dev Allows the account to receive Ether.\n Accounts MUST implement a `receive` function.\n Accounts MAY perform arbitrary logic to restrict conditions\n under which Ether can be received."},"id":951,"implemented":false,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":949,"nodeType":"ParameterList","parameters":[],"src":"404:2:7"},"returnParameters":{"id":950,"nodeType":"ParameterList","parameters":[],"src":"423:0:7"},"scope":978,"src":"397:27:7","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":952,"nodeType":"StructuredDocumentation","src":"430:389:7","text":" @dev Returns the identifier of the non-fungible token which owns the account.\n The return value of this function MUST be constant - it MUST NOT change over time.\n @return chainId       The EIP-155 ID of the chain the token exists on\n @return tokenContract The contract address of the token\n @return tokenId       The ID of the token"},"functionSelector":"fc0c546a","id":961,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"833:5:7","nodeType":"FunctionDefinition","parameters":{"id":953,"nodeType":"ParameterList","parameters":[],"src":"838:2:7"},"returnParameters":{"id":960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":955,"mutability":"mutable","name":"chainId","nameLocation":"896:7:7","nodeType":"VariableDeclaration","scope":961,"src":"888:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":954,"name":"uint256","nodeType":"ElementaryTypeName","src":"888:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":957,"mutability":"mutable","name":"tokenContract","nameLocation":"913:13:7","nodeType":"VariableDeclaration","scope":961,"src":"905:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":956,"name":"address","nodeType":"ElementaryTypeName","src":"905:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":959,"mutability":"mutable","name":"tokenId","nameLocation":"936:7:7","nodeType":"VariableDeclaration","scope":961,"src":"928:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":958,"name":"uint256","nodeType":"ElementaryTypeName","src":"928:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"887:57:7"},"scope":978,"src":"824:121:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":962,"nodeType":"StructuredDocumentation","src":"951:148:7","text":" @dev Returns a value that SHOULD be modified each time the account changes state.\n @return The current account state"},"functionSelector":"c19d93fb","id":967,"implemented":false,"kind":"function","modifiers":[],"name":"state","nameLocation":"1113:5:7","nodeType":"FunctionDefinition","parameters":{"id":963,"nodeType":"ParameterList","parameters":[],"src":"1118:2:7"},"returnParameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":967,"src":"1144:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":964,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1143:9:7"},"scope":978,"src":"1104:49:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":968,"nodeType":"StructuredDocumentation","src":"1159:773:7","text":" @dev Returns a magic value indicating whether a given signer is authorized to act on behalf\n of the account.\n MUST return the bytes4 magic value 0x523e3260 if the given signer is valid.\n By default, the holder of the non-fungible token the account is bound to MUST be considered\n a valid signer.\n Accounts MAY implement additional authorization logic which invalidates the holder as a\n signer or grants signing permissions to other non-holder accounts.\n @param  signer     The address to check signing authorization for\n @param  context    Additional data used to determine whether the signer is valid\n @return magicValue Magic value indicating whether the signer is valid"},"functionSelector":"523e3260","id":977,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSigner","nameLocation":"1946:13:7","nodeType":"FunctionDefinition","parameters":{"id":973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":970,"mutability":"mutable","name":"signer","nameLocation":"1968:6:7","nodeType":"VariableDeclaration","scope":977,"src":"1960:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":969,"name":"address","nodeType":"ElementaryTypeName","src":"1960:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":972,"mutability":"mutable","name":"context","nameLocation":"1991:7:7","nodeType":"VariableDeclaration","scope":977,"src":"1976:22:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":971,"name":"bytes","nodeType":"ElementaryTypeName","src":"1976:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1959:40:7"},"returnParameters":{"id":976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":975,"mutability":"mutable","name":"magicValue","nameLocation":"2054:10:7","nodeType":"VariableDeclaration","scope":977,"src":"2047:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":974,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2047:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2046:19:7"},"scope":978,"src":"1937:129:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":979,"src":"124:1944:7","usedErrors":[],"usedEvents":[]}],"src":"32:2037:7"},"id":7},"contracts/interfaces/IERC6551Executable.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Executable.sol","exportedSymbols":{"IERC6551Executable":[996]},"id":997,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":980,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Executable","contractDependencies":[],"contractKind":"interface","documentation":{"id":981,"nodeType":"StructuredDocumentation","src":"57:67:8","text":"@dev the ERC-165 identifier for this interface is `0x51945447`"},"fullyImplemented":false,"id":996,"linearizedBaseContracts":[996],"name":"IERC6551Executable","nameLocation":"134:18:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":982,"nodeType":"StructuredDocumentation","src":"159:815:8","text":" @dev Executes a low-level operation if the caller is a valid signer on the account.\n Reverts and bubbles up error if operation fails.\n Accounts implementing this interface MUST accept the following operation parameter values:\n - 0 = CALL\n - 1 = DELEGATECALL\n - 2 = CREATE\n - 3 = CREATE2\n Accounts implementing this interface MAY support additional operations or restrict a signer's\n ability to execute certain operations.\n @param to        The target address of the operation\n @param value     The Ether value to be sent to the target\n @param data      The encoded operation calldata\n @param operation A value indicating the type of operation to perform\n @return The result of the operation"},"functionSelector":"51945447","id":995,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"988:7:8","nodeType":"FunctionDefinition","parameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":984,"mutability":"mutable","name":"to","nameLocation":"1004:2:8","nodeType":"VariableDeclaration","scope":995,"src":"996:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":983,"name":"address","nodeType":"ElementaryTypeName","src":"996:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":986,"mutability":"mutable","name":"value","nameLocation":"1016:5:8","nodeType":"VariableDeclaration","scope":995,"src":"1008:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":985,"name":"uint256","nodeType":"ElementaryTypeName","src":"1008:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":988,"mutability":"mutable","name":"data","nameLocation":"1038:4:8","nodeType":"VariableDeclaration","scope":995,"src":"1023:19:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":987,"name":"bytes","nodeType":"ElementaryTypeName","src":"1023:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":990,"mutability":"mutable","name":"operation","nameLocation":"1050:9:8","nodeType":"VariableDeclaration","scope":995,"src":"1044:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":989,"name":"uint8","nodeType":"ElementaryTypeName","src":"1044:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"995:65:8"},"returnParameters":{"id":994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":995,"src":"1111:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":992,"name":"bytes","nodeType":"ElementaryTypeName","src":"1111:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1110:14:8"},"scope":996,"src":"979:146:8","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":997,"src":"124:1003:8","usedErrors":[],"usedEvents":[]}],"src":"32:1096:8"},"id":8}},"contracts":{"@openzeppelin/contracts/interfaces/IERC1271.sol":{"IERC1271":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC-1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].","kind":"dev","methods":{"isValidSignature(bytes32,bytes)":{"details":"Should return whether the signature provided is valid for the provided data","params":{"hash":"Hash of the data to be signed","signature":"Signature byte array associated with `hash`"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with `hash`\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n */\\ninterface IERC1271 {\\n    /**\\n     * @dev Should return whether the signature provided is valid for the provided data\\n     * @param hash      Hash of the data to be signed\\n     * @param signature Signature byte array associated with `hash`\\n     */\\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x3d4cd07258d675b6dfa3d9dfd623a77b38fb9935f4a5381ff4bc969948720976\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC-721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.","kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"title":"ERC-721 token receiver interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC-721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title ERC-721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC-721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\\n     * reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ECDSA":{"abi":[{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"}],"devdoc":{"details":"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.","errors":{"ECDSAInvalidSignature()":[{"details":"The signature derives the `address(0)`."}],"ECDSAInvalidSignatureLength(uint256)":[{"details":"The signature has an invalid length."}],"ECDSAInvalidSignatureS(bytes32)":[{"details":"The signature has an S value that is in the upper half order."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122039bc2487fd3cc8ea322ee1adcf4ae1e0015b22c0865365a58624c63c3478eb2764736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY 0xBC 0x24 DUP8 REVERT EXTCODECOPY 0xC8 0xEA ORIGIN 0x2E 0xE1 0xAD 0xCF BLOBBASEFEE 0xE1 0xE0 ADD JUMPDEST 0x22 0xC0 DUP7 MSTORE8 PUSH6 0xA58624C63C34 PUSH25 0xEB2764736F6C634300081C0033000000000000000000000000 ","sourceMap":"344:7470:3:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;344:7470:3;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122039bc2487fd3cc8ea322ee1adcf4ae1e0015b22c0865365a58624c63c3478eb2764736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY 0xBC 0x24 DUP8 REVERT EXTCODECOPY 0xC8 0xEA ORIGIN 0x2E 0xE1 0xAD 0xCF BLOBBASEFEE 0xE1 0xE0 ADD JUMPDEST 0x22 0xC0 DUP7 MSTORE8 PUSH6 0xA58624C63C34 PUSH25 0xEB2764736F6C634300081C0033000000000000000000000000 ","sourceMap":"344:7470:3:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_throwError(enum ECDSA.RecoverError,bytes32)":"infinite","recover(bytes32,bytes memory)":"infinite","recover(bytes32,bytes32,bytes32)":"infinite","recover(bytes32,uint8,bytes32,bytes32)":"infinite","tryRecover(bytes32,bytes memory)":"infinite","tryRecover(bytes32,bytes32,bytes32)":"infinite","tryRecover(bytes32,uint8,bytes32,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS\\n    }\\n\\n    /**\\n     * @dev The signature derives the `address(0)`.\\n     */\\n    error ECDSAInvalidSignature();\\n\\n    /**\\n     * @dev The signature has an invalid length.\\n     */\\n    error ECDSAInvalidSignatureLength(uint256 length);\\n\\n    /**\\n     * @dev The signature has an S value that is in the upper half order.\\n     */\\n    error ECDSAInvalidSignatureS(bytes32 s);\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\n     * and a bytes32 providing additional information about the error.\\n     *\\n     * If no error is returned, then the address can be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            assembly (\\\"memory-safe\\\") {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        unchecked {\\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\\n            return tryRecover(hash, v, r, s);\\n        }\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS, s);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\\n        }\\n\\n        return (signer, RecoverError.NoError, bytes32(0));\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\n     */\\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert ECDSAInvalidSignature();\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert ECDSAInvalidSignatureS(errorArg);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol":{"SignatureChecker":{"abi":[],"devdoc":{"details":"Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like Argent and Safe Wallet (previously Gnosis Safe).","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205171501d7d3886cbf713fcc29e01aa165b4a344033880059626bd4b5f659b4ab64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD PUSH18 0x501D7D3886CBF713FCC29E01AA165B4A3440 CALLER DUP9 STOP MSIZE PUSH3 0x6BD4B5 0xF6 MSIZE 0xB4 0xAB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"532:1805:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;532:1805:4;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205171501d7d3886cbf713fcc29e01aa165b4a344033880059626bd4b5f659b4ab64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD PUSH18 0x501D7D3886CBF713FCC29E01AA165B4A3440 CALLER DUP9 STOP MSIZE PUSH3 0x6BD4B5 0xF6 MSIZE 0xB4 0xAB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"532:1805:4:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"isValidERC1271SignatureNow(address,bytes32,bytes memory)":"infinite","isValidSignatureNow(address,bytes32,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like Argent and Safe Wallet (previously Gnosis Safe).\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":\"SignatureChecker\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n */\\ninterface IERC1271 {\\n    /**\\n     * @dev Should return whether the signature provided is valid for the provided data\\n     * @param hash      Hash of the data to be signed\\n     * @param signature Signature byte array associated with `hash`\\n     */\\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x3d4cd07258d675b6dfa3d9dfd623a77b38fb9935f4a5381ff4bc969948720976\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS\\n    }\\n\\n    /**\\n     * @dev The signature derives the `address(0)`.\\n     */\\n    error ECDSAInvalidSignature();\\n\\n    /**\\n     * @dev The signature has an invalid length.\\n     */\\n    error ECDSAInvalidSignatureLength(uint256 length);\\n\\n    /**\\n     * @dev The signature has an S value that is in the upper half order.\\n     */\\n    error ECDSAInvalidSignatureS(bytes32 s);\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\n     * and a bytes32 providing additional information about the error.\\n     *\\n     * If no error is returned, then the address can be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            assembly (\\\"memory-safe\\\") {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        unchecked {\\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\\n            return tryRecover(hash, v, r, s);\\n        }\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS, s);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\\n        }\\n\\n        return (signer, RecoverError.NoError, bytes32(0));\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\n     */\\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert ECDSAInvalidSignature();\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert ECDSAInvalidSignatureS(errorArg);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/SignatureChecker.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ECDSA} from \\\"./ECDSA.sol\\\";\\nimport {IERC1271} from \\\"../../interfaces/IERC1271.sol\\\";\\n\\n/**\\n * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA\\n * signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like\\n * Argent and Safe Wallet (previously Gnosis Safe).\\n */\\nlibrary SignatureChecker {\\n    /**\\n     * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the\\n     * signature is validated against that smart contract using ERC-1271, otherwise it's validated using `ECDSA.recover`.\\n     *\\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\\n     */\\n    function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) internal view returns (bool) {\\n        if (signer.code.length == 0) {\\n            (address recovered, ECDSA.RecoverError err, ) = ECDSA.tryRecover(hash, signature);\\n            return err == ECDSA.RecoverError.NoError && recovered == signer;\\n        } else {\\n            return isValidERC1271SignatureNow(signer, hash, signature);\\n        }\\n    }\\n\\n    /**\\n     * @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\\n     * against the signer smart contract using ERC-1271.\\n     *\\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\\n     */\\n    function isValidERC1271SignatureNow(\\n        address signer,\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal view returns (bool) {\\n        (bool success, bytes memory result) = signer.staticcall(\\n            abi.encodeCall(IERC1271.isValidSignature, (hash, signature))\\n        );\\n        return (success &&\\n            result.length >= 32 &&\\n            abi.decode(result, (bytes32)) == bytes32(IERC1271.isValidSignature.selector));\\n    }\\n}\\n\",\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ERC6551Account.sol":{"ERC6551Account":{"abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint8","name":"operation","type":"uint8"}],"name":"execute","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"isValidSigner","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"author":"ERC6551 Team","kind":"dev","methods":{"execute(address,uint256,bytes,uint8)":{"details":"Executes a transaction from the token owner"},"initialize(uint256,address,uint256)":{"details":"Initialization function that stores token data This is called by the registry during account creation"},"isValidSignature(bytes32,bytes)":{"details":"Validates signatures according to ERC-1271"},"isValidSigner(address,bytes)":{"details":"Validates if a signer is authorized to perform actions"},"onERC721Received(address,address,uint256,bytes)":{"details":"Implements IERC721Receiver interface to allow the account to receive ERC721 tokens"},"supportsInterface(bytes4)":{"details":"Implements interface detection"},"token()":{"details":"Returns the token bound to this account"}},"stateVariables":{"TOKEN_DATA_SLOT":{"details":"Storage slot for token data This is written during initialization by the registry Structure: chainId (uint256), tokenContract (address), tokenId (uint256)"},"state":{"details":"Account state nonce, incremented on each transaction"}},"title":"A simple implementation of ERC6551Account","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50610e618061001f6000396000f3fe60806040526004361061007f5760003560e01c8063523e32601161004e578063523e326014610139578063c19d93fb14610159578063fc0c546a1461017d578063fffb51831461021357600080fd5b806301ffc9a71461008b578063150b7a02146100c05780631626ba7e146100f9578063519454471461011957600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a63660046109ef565b610235565b60405190151581526020015b60405180910390f35b3480156100cc57600080fd5b506100e06100db366004610a7a565b6102a2565b6040516001600160e01b031990911681526020016100b7565b34801561010557600080fd5b506100e0610114366004610b03565b6102b4565b61012c610127366004610bc6565b6103d5565b6040516100b79190610c90565b34801561014557600080fd5b506100e0610154366004610ca3565b6105d8565b34801561016557600080fd5b5061016f60005481565b6040519081526020016100b7565b34801561018957600080fd5b507f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0547f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f1547f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f254604080519384526001600160a01b039092166020840152908201526060016100b7565b34801561021f57600080fd5b5061023361022e366004610cf8565b610601565b005b60006001600160e01b031982166301ffc9a760e01b148061026657506001600160e01b03198216636faff5f160e01b145b8061028157506001600160e01b03198216635194544760e01b145b8061029c57506001600160e01b03198216630a85bd0160e11b145b92915050565b630a85bd0160e11b5b95945050505050565b600080600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190610d30565b92509250925046831461033657506000925061029c915050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e90602401602060405180830381865afa15801561037e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a29190610d6b565b90506103af81888861067c565b156103c85750630b135d3f60e11b935061029c92505050565b5060009695505050505050565b60606103e0336106f0565b6104225760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b60448201526064015b60405180910390fd5b600080815461043090610d88565b9091555060ff82166000036104e857600080876001600160a01b031687878760405161045d929190610daf565b60006040518083038185875af1925050503d806000811461049a576040519150601f19603f3d011682016040523d82523d6000602084013e61049f565b606091505b5091509150816104df5760405162461bcd60e51b815260206004820152600b60248201526a10d85b1b0819985a5b195960aa1b6044820152606401610419565b91506102ab9050565b8160ff1660010361059857600080876001600160a01b03168686604051610510929190610daf565b600060405180830381855af49150503d806000811461054b576040519150601f19603f3d011682016040523d82523d6000602084013e610550565b606091505b5091509150816104df5760405162461bcd60e51b815260206004820152601360248201527211195b1959d85d1958d85b1b0819985a5b1959606a1b6044820152606401610419565b60405162461bcd60e51b81526020600482015260156024820152742ab739bab83837b93a32b21037b832b930ba34b7b760591b6044820152606401610419565b60006105e3846106f0565b156105f65750630291f19360e51b6105fa565b5060005b9392505050565b7f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0805480156106685760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610419565b509283556001830191909155600290910155565b6000836001600160a01b03163b6000036106de5760008061069d85856107f7565b50909250905060008160038111156106b7576106b7610dbf565b1480156106d55750856001600160a01b0316826001600160a01b0316145b925050506105fa565b6106e9848484610844565b90506105fa565b600080600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107589190610d30565b92509250925046831461077057506000949350505050565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa1580156107b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d99190610d6b565b6001600160a01b0316856001600160a01b0316149350505050919050565b600080600083516041036108315760208401516040850151606086015160001a61082388828585610920565b95509550955050505061083d565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401610866929190610dd5565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b1790525161089b9190610df6565b600060405180830381855afa9150503d80600081146108d6576040519150601f19603f3d011682016040523d82523d6000602084013e6108db565b606091505b50915091508180156108ef57506020815110155b801561091657508051630b135d3f60e11b906109149083016020908101908401610e12565b145b9695505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561095b57506000915060039050826109e5565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156109af573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109db575060009250600191508290506109e5565b9250600091508190505b9450945094915050565b600060208284031215610a0157600080fd5b81356001600160e01b0319811681146105fa57600080fd5b6001600160a01b0381168114610a2e57600080fd5b50565b60008083601f840112610a4357600080fd5b50813567ffffffffffffffff811115610a5b57600080fd5b602083019150836020828501011115610a7357600080fd5b9250929050565b600080600080600060808688031215610a9257600080fd5b8535610a9d81610a19565b94506020860135610aad81610a19565b935060408601359250606086013567ffffffffffffffff811115610ad057600080fd5b610adc88828901610a31565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b1657600080fd5b82359150602083013567ffffffffffffffff811115610b3457600080fd5b8301601f81018513610b4557600080fd5b803567ffffffffffffffff811115610b5f57610b5f610aed565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610b8e57610b8e610aed565b604052818152828201602001871015610ba657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215610bde57600080fd5b8535610be981610a19565b945060208601359350604086013567ffffffffffffffff811115610c0c57600080fd5b610c1888828901610a31565b909450925050606086013560ff81168114610c3257600080fd5b809150509295509295909350565b60005b83811015610c5b578181015183820152602001610c43565b50506000910152565b60008151808452610c7c816020860160208601610c40565b601f01601f19169290920160200192915050565b6020815260006105fa6020830184610c64565b600080600060408486031215610cb857600080fd5b8335610cc381610a19565b9250602084013567ffffffffffffffff811115610cdf57600080fd5b610ceb86828701610a31565b9497909650939450505050565b600080600060608486031215610d0d57600080fd5b833592506020840135610d1f81610a19565b929592945050506040919091013590565b600080600060608486031215610d4557600080fd5b83516020850151909350610d5881610a19565b6040949094015192959394509192915050565b600060208284031215610d7d57600080fd5b81516105fa81610a19565b600060018201610da857634e487b7160e01b600052601160045260246000fd5b5060010190565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000610dee6040830184610c64565b949350505050565b60008251610e08818460208701610c40565b9190910192915050565b600060208284031215610e2457600080fd5b505191905056fea264697066735822122009e00011b5b82562847cb4b277466b312de5046da5e2f489fc7f36ee3192ddae64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE61 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x523E3260 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0xFFFB5183 EQ PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x86 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAB PUSH2 0xA6 CALLDATASIZE PUSH1 0x4 PUSH2 0x9EF JUMP JUMPDEST PUSH2 0x235 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE0 PUSH2 0xDB CALLDATASIZE PUSH1 0x4 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE0 PUSH2 0x114 CALLDATASIZE PUSH1 0x4 PUSH2 0xB03 JUMP JUMPDEST PUSH2 0x2B4 JUMP JUMPDEST PUSH2 0x12C PUSH2 0x127 CALLDATASIZE PUSH1 0x4 PUSH2 0xBC6 JUMP JUMPDEST PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0xC90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE0 PUSH2 0x154 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0x5D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F0 SLOAD PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F1 SLOAD PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F2 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0xB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0xCF8 JUMP JUMPDEST PUSH2 0x601 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x266 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x281 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x51945447 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x29C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31C SWAP2 SWAP1 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x336 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH2 0x29C SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A2 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST SWAP1 POP PUSH2 0x3AF DUP2 DUP9 DUP9 PUSH2 0x67C JUMP JUMPDEST ISZERO PUSH2 0x3C8 JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP4 POP PUSH2 0x29C SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3E0 CALLER PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x422 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD PUSH2 0x430 SWAP1 PUSH2 0xD88 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0xFF DUP3 AND PUSH1 0x0 SUB PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP3 SWAP2 SWAP1 PUSH2 0xDAF 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 0x49A 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 0x49F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x10D85B1B0819985A5B1959 PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x419 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AB SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x510 SWAP3 SWAP2 SWAP1 PUSH2 0xDAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x54B 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 0x550 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x11195B1959D85D1958D85B1B0819985A5B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x2AB739BAB83837B93A32B21037B832B930BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E3 DUP5 PUSH2 0x6F0 JUMP JUMPDEST ISZERO PUSH2 0x5F6 JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL PUSH2 0x5FA JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F0 DUP1 SLOAD DUP1 ISZERO PUSH2 0x668 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x105B1C9958591E481A5B9A5D1A585B1A5E9959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x419 JUMP JUMPDEST POP SWAP3 DUP4 SSTORE PUSH1 0x1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 PUSH2 0x69D DUP6 DUP6 PUSH2 0x7F7 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x6B7 JUMPI PUSH2 0x6B7 PUSH2 0xDBF JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x6D5 JUMPI POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x6E9 DUP5 DUP5 DUP5 PUSH2 0x844 JUMP JUMPDEST SWAP1 POP PUSH2 0x5FA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x734 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x758 SWAP2 SWAP1 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x770 JUMPI POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D9 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x831 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x823 DUP9 DUP3 DUP6 DUP6 PUSH2 0x920 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x83D JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x866 SWAP3 SWAP2 SWAP1 PUSH2 0xDD5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB135D3F PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x89B SWAP2 SWAP1 PUSH2 0xDF6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x8D6 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 0x8DB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x8EF JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x916 JUMPI POP DUP1 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 PUSH2 0x914 SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH2 0xE12 JUMP JUMPDEST EQ JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x95B JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9DB JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x9E5 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xA9D DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xAAD DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xADC DUP9 DUP3 DUP10 ADD PUSH2 0xA31 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0xB45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB5F JUMPI PUSH2 0xB5F PUSH2 0xAED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB8E JUMPI PUSH2 0xB8E PUSH2 0xAED JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0xBA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xBDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xBE9 DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC18 DUP9 DUP3 DUP10 ADD PUSH2 0xA31 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xC32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC5B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC43 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xC7C DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x5FA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC64 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xCB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xCC3 DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCEB DUP7 DUP3 DUP8 ADD PUSH2 0xA31 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xD1F DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xD58 DUP2 PUSH2 0xA19 JUMP JUMPDEST PUSH1 0x40 SWAP5 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP6 SWAP4 SWAP5 POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5FA DUP2 PUSH2 0xA19 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0xDA8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xDEE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xC64 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xE08 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xC40 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD 0xE0 STOP GT 0xB5 0xB8 0x25 PUSH3 0x847CB4 0xB2 PUSH24 0x466B312DE5046DA5E2F489FC7F36EE3192DDAE64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"555:4672:6:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_650":{"entryPoint":null,"id":650,"parameterSlots":0,"returnSlots":0},"@_isValidSigner_943":{"entryPoint":1776,"id":943,"parameterSlots":1,"returnSlots":1},"@execute_725":{"entryPoint":981,"id":725,"parameterSlots":5,"returnSlots":1},"@initialize_768":{"entryPoint":1537,"id":768,"parameterSlots":3,"returnSlots":0},"@isValidERC1271SignatureNow_603":{"entryPoint":2116,"id":603,"parameterSlots":3,"returnSlots":1},"@isValidSignatureNow_551":{"entryPoint":1660,"id":551,"parameterSlots":3,"returnSlots":1},"@isValidSignature_850":{"entryPoint":692,"id":850,"parameterSlots":2,"returnSlots":1},"@isValidSigner_793":{"entryPoint":1496,"id":793,"parameterSlots":3,"returnSlots":1},"@onERC721Received_870":{"entryPoint":674,"id":870,"parameterSlots":5,"returnSlots":1},"@state_639":{"entryPoint":null,"id":639,"parameterSlots":0,"returnSlots":0},"@supportsInterface_908":{"entryPoint":565,"id":908,"parameterSlots":1,"returnSlots":1},"@token_741":{"entryPoint":null,"id":741,"parameterSlots":0,"returnSlots":3},"@tryRecover_222":{"entryPoint":2039,"id":222,"parameterSlots":2,"returnSlots":3},"@tryRecover_410":{"entryPoint":2336,"id":410,"parameterSlots":4,"returnSlots":3},"abi_decode_bytes_calldata":{"entryPoint":2609,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":3435,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr":{"entryPoint":2682,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":3235,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8":{"entryPoint":3014,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":3602,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_bytes_memory_ptr":{"entryPoint":2819,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":2543,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_addresst_uint256":{"entryPoint":3320,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256t_addresst_uint256_fromMemory":{"entryPoint":3376,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_bytes":{"entryPoint":3172,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3503,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3574,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3541,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3216,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3136,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint256":{"entryPoint":3464,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x21":{"entryPoint":3519,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2797,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":2585,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:10598:9","nodeType":"YulBlock","src":"0:10598:9","statements":[{"nativeSrc":"6:3:9","nodeType":"YulBlock","src":"6:3:9","statements":[]},{"body":{"nativeSrc":"83:217:9","nodeType":"YulBlock","src":"83:217:9","statements":[{"body":{"nativeSrc":"129:16:9","nodeType":"YulBlock","src":"129:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"138:1:9","nodeType":"YulLiteral","src":"138:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"141:1:9","nodeType":"YulLiteral","src":"141:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"131:6:9","nodeType":"YulIdentifier","src":"131:6:9"},"nativeSrc":"131:12:9","nodeType":"YulFunctionCall","src":"131:12:9"},"nativeSrc":"131:12:9","nodeType":"YulExpressionStatement","src":"131:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"104:7:9","nodeType":"YulIdentifier","src":"104:7:9"},{"name":"headStart","nativeSrc":"113:9:9","nodeType":"YulIdentifier","src":"113:9:9"}],"functionName":{"name":"sub","nativeSrc":"100:3:9","nodeType":"YulIdentifier","src":"100:3:9"},"nativeSrc":"100:23:9","nodeType":"YulFunctionCall","src":"100:23:9"},{"kind":"number","nativeSrc":"125:2:9","nodeType":"YulLiteral","src":"125:2:9","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"96:3:9","nodeType":"YulIdentifier","src":"96:3:9"},"nativeSrc":"96:32:9","nodeType":"YulFunctionCall","src":"96:32:9"},"nativeSrc":"93:52:9","nodeType":"YulIf","src":"93:52:9"},{"nativeSrc":"154:36:9","nodeType":"YulVariableDeclaration","src":"154:36:9","value":{"arguments":[{"name":"headStart","nativeSrc":"180:9:9","nodeType":"YulIdentifier","src":"180:9:9"}],"functionName":{"name":"calldataload","nativeSrc":"167:12:9","nodeType":"YulIdentifier","src":"167:12:9"},"nativeSrc":"167:23:9","nodeType":"YulFunctionCall","src":"167:23:9"},"variables":[{"name":"value","nativeSrc":"158:5:9","nodeType":"YulTypedName","src":"158:5:9","type":""}]},{"body":{"nativeSrc":"254:16:9","nodeType":"YulBlock","src":"254:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"263:1:9","nodeType":"YulLiteral","src":"263:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"266:1:9","nodeType":"YulLiteral","src":"266:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"256:6:9","nodeType":"YulIdentifier","src":"256:6:9"},"nativeSrc":"256:12:9","nodeType":"YulFunctionCall","src":"256:12:9"},"nativeSrc":"256:12:9","nodeType":"YulExpressionStatement","src":"256:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"212:5:9","nodeType":"YulIdentifier","src":"212:5:9"},{"arguments":[{"name":"value","nativeSrc":"223:5:9","nodeType":"YulIdentifier","src":"223:5:9"},{"arguments":[{"kind":"number","nativeSrc":"234:3:9","nodeType":"YulLiteral","src":"234:3:9","type":"","value":"224"},{"kind":"number","nativeSrc":"239:10:9","nodeType":"YulLiteral","src":"239:10:9","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"230:3:9","nodeType":"YulIdentifier","src":"230:3:9"},"nativeSrc":"230:20:9","nodeType":"YulFunctionCall","src":"230:20:9"}],"functionName":{"name":"and","nativeSrc":"219:3:9","nodeType":"YulIdentifier","src":"219:3:9"},"nativeSrc":"219:32:9","nodeType":"YulFunctionCall","src":"219:32:9"}],"functionName":{"name":"eq","nativeSrc":"209:2:9","nodeType":"YulIdentifier","src":"209:2:9"},"nativeSrc":"209:43:9","nodeType":"YulFunctionCall","src":"209:43:9"}],"functionName":{"name":"iszero","nativeSrc":"202:6:9","nodeType":"YulIdentifier","src":"202:6:9"},"nativeSrc":"202:51:9","nodeType":"YulFunctionCall","src":"202:51:9"},"nativeSrc":"199:71:9","nodeType":"YulIf","src":"199:71:9"},{"nativeSrc":"279:15:9","nodeType":"YulAssignment","src":"279:15:9","value":{"name":"value","nativeSrc":"289:5:9","nodeType":"YulIdentifier","src":"289:5:9"},"variableNames":[{"name":"value0","nativeSrc":"279:6:9","nodeType":"YulIdentifier","src":"279:6:9"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"14:286:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"49:9:9","nodeType":"YulTypedName","src":"49:9:9","type":""},{"name":"dataEnd","nativeSrc":"60:7:9","nodeType":"YulTypedName","src":"60:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"72:6:9","nodeType":"YulTypedName","src":"72:6:9","type":""}],"src":"14:286:9"},{"body":{"nativeSrc":"400:92:9","nodeType":"YulBlock","src":"400:92:9","statements":[{"nativeSrc":"410:26:9","nodeType":"YulAssignment","src":"410:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"422:9:9","nodeType":"YulIdentifier","src":"422:9:9"},{"kind":"number","nativeSrc":"433:2:9","nodeType":"YulLiteral","src":"433:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"418:3:9","nodeType":"YulIdentifier","src":"418:3:9"},"nativeSrc":"418:18:9","nodeType":"YulFunctionCall","src":"418:18:9"},"variableNames":[{"name":"tail","nativeSrc":"410:4:9","nodeType":"YulIdentifier","src":"410:4:9"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"452:9:9","nodeType":"YulIdentifier","src":"452:9:9"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"477:6:9","nodeType":"YulIdentifier","src":"477:6:9"}],"functionName":{"name":"iszero","nativeSrc":"470:6:9","nodeType":"YulIdentifier","src":"470:6:9"},"nativeSrc":"470:14:9","nodeType":"YulFunctionCall","src":"470:14:9"}],"functionName":{"name":"iszero","nativeSrc":"463:6:9","nodeType":"YulIdentifier","src":"463:6:9"},"nativeSrc":"463:22:9","nodeType":"YulFunctionCall","src":"463:22:9"}],"functionName":{"name":"mstore","nativeSrc":"445:6:9","nodeType":"YulIdentifier","src":"445:6:9"},"nativeSrc":"445:41:9","nodeType":"YulFunctionCall","src":"445:41:9"},"nativeSrc":"445:41:9","nodeType":"YulExpressionStatement","src":"445:41:9"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"305:187:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"369:9:9","nodeType":"YulTypedName","src":"369:9:9","type":""},{"name":"value0","nativeSrc":"380:6:9","nodeType":"YulTypedName","src":"380:6:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"391:4:9","nodeType":"YulTypedName","src":"391:4:9","type":""}],"src":"305:187:9"},{"body":{"nativeSrc":"542:86:9","nodeType":"YulBlock","src":"542:86:9","statements":[{"body":{"nativeSrc":"606:16:9","nodeType":"YulBlock","src":"606:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:1:9","nodeType":"YulLiteral","src":"615:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"618:1:9","nodeType":"YulLiteral","src":"618:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"608:6:9","nodeType":"YulIdentifier","src":"608:6:9"},"nativeSrc":"608:12:9","nodeType":"YulFunctionCall","src":"608:12:9"},"nativeSrc":"608:12:9","nodeType":"YulExpressionStatement","src":"608:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"565:5:9","nodeType":"YulIdentifier","src":"565:5:9"},{"arguments":[{"name":"value","nativeSrc":"576:5:9","nodeType":"YulIdentifier","src":"576:5:9"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"591:3:9","nodeType":"YulLiteral","src":"591:3:9","type":"","value":"160"},{"kind":"number","nativeSrc":"596:1:9","nodeType":"YulLiteral","src":"596:1:9","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"587:3:9","nodeType":"YulIdentifier","src":"587:3:9"},"nativeSrc":"587:11:9","nodeType":"YulFunctionCall","src":"587:11:9"},{"kind":"number","nativeSrc":"600:1:9","nodeType":"YulLiteral","src":"600:1:9","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"583:3:9","nodeType":"YulIdentifier","src":"583:3:9"},"nativeSrc":"583:19:9","nodeType":"YulFunctionCall","src":"583:19:9"}],"functionName":{"name":"and","nativeSrc":"572:3:9","nodeType":"YulIdentifier","src":"572:3:9"},"nativeSrc":"572:31:9","nodeType":"YulFunctionCall","src":"572:31:9"}],"functionName":{"name":"eq","nativeSrc":"562:2:9","nodeType":"YulIdentifier","src":"562:2:9"},"nativeSrc":"562:42:9","nodeType":"YulFunctionCall","src":"562:42:9"}],"functionName":{"name":"iszero","nativeSrc":"555:6:9","nodeType":"YulIdentifier","src":"555:6:9"},"nativeSrc":"555:50:9","nodeType":"YulFunctionCall","src":"555:50:9"},"nativeSrc":"552:70:9","nodeType":"YulIf","src":"552:70:9"}]},"name":"validator_revert_address","nativeSrc":"497:131:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"531:5:9","nodeType":"YulTypedName","src":"531:5:9","type":""}],"src":"497:131:9"},{"body":{"nativeSrc":"705:275:9","nodeType":"YulBlock","src":"705:275:9","statements":[{"body":{"nativeSrc":"754:16:9","nodeType":"YulBlock","src":"754:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"763:1:9","nodeType":"YulLiteral","src":"763:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"766:1:9","nodeType":"YulLiteral","src":"766:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"756:6:9","nodeType":"YulIdentifier","src":"756:6:9"},"nativeSrc":"756:12:9","nodeType":"YulFunctionCall","src":"756:12:9"},"nativeSrc":"756:12:9","nodeType":"YulExpressionStatement","src":"756:12:9"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"733:6:9","nodeType":"YulIdentifier","src":"733:6:9"},{"kind":"number","nativeSrc":"741:4:9","nodeType":"YulLiteral","src":"741:4:9","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"729:3:9","nodeType":"YulIdentifier","src":"729:3:9"},"nativeSrc":"729:17:9","nodeType":"YulFunctionCall","src":"729:17:9"},{"name":"end","nativeSrc":"748:3:9","nodeType":"YulIdentifier","src":"748:3:9"}],"functionName":{"name":"slt","nativeSrc":"725:3:9","nodeType":"YulIdentifier","src":"725:3:9"},"nativeSrc":"725:27:9","nodeType":"YulFunctionCall","src":"725:27:9"}],"functionName":{"name":"iszero","nativeSrc":"718:6:9","nodeType":"YulIdentifier","src":"718:6:9"},"nativeSrc":"718:35:9","nodeType":"YulFunctionCall","src":"718:35:9"},"nativeSrc":"715:55:9","nodeType":"YulIf","src":"715:55:9"},{"nativeSrc":"779:30:9","nodeType":"YulAssignment","src":"779:30:9","value":{"arguments":[{"name":"offset","nativeSrc":"802:6:9","nodeType":"YulIdentifier","src":"802:6:9"}],"functionName":{"name":"calldataload","nativeSrc":"789:12:9","nodeType":"YulIdentifier","src":"789:12:9"},"nativeSrc":"789:20:9","nodeType":"YulFunctionCall","src":"789:20:9"},"variableNames":[{"name":"length","nativeSrc":"779:6:9","nodeType":"YulIdentifier","src":"779:6:9"}]},{"body":{"nativeSrc":"852:16:9","nodeType":"YulBlock","src":"852:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"861:1:9","nodeType":"YulLiteral","src":"861:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"864:1:9","nodeType":"YulLiteral","src":"864:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"854:6:9","nodeType":"YulIdentifier","src":"854:6:9"},"nativeSrc":"854:12:9","nodeType":"YulFunctionCall","src":"854:12:9"},"nativeSrc":"854:12:9","nodeType":"YulExpressionStatement","src":"854:12:9"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"824:6:9","nodeType":"YulIdentifier","src":"824:6:9"},{"kind":"number","nativeSrc":"832:18:9","nodeType":"YulLiteral","src":"832:18:9","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"821:2:9","nodeType":"YulIdentifier","src":"821:2:9"},"nativeSrc":"821:30:9","nodeType":"YulFunctionCall","src":"821:30:9"},"nativeSrc":"818:50:9","nodeType":"YulIf","src":"818:50:9"},{"nativeSrc":"877:29:9","nodeType":"YulAssignment","src":"877:29:9","value":{"arguments":[{"name":"offset","nativeSrc":"893:6:9","nodeType":"YulIdentifier","src":"893:6:9"},{"kind":"number","nativeSrc":"901:4:9","nodeType":"YulLiteral","src":"901:4:9","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"889:3:9","nodeType":"YulIdentifier","src":"889:3:9"},"nativeSrc":"889:17:9","nodeType":"YulFunctionCall","src":"889:17:9"},"variableNames":[{"name":"arrayPos","nativeSrc":"877:8:9","nodeType":"YulIdentifier","src":"877:8:9"}]},{"body":{"nativeSrc":"958:16:9","nodeType":"YulBlock","src":"958:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"967:1:9","nodeType":"YulLiteral","src":"967:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"970:1:9","nodeType":"YulLiteral","src":"970:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"960:6:9","nodeType":"YulIdentifier","src":"960:6:9"},"nativeSrc":"960:12:9","nodeType":"YulFunctionCall","src":"960:12:9"},"nativeSrc":"960:12:9","nodeType":"YulExpressionStatement","src":"960:12:9"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"929:6:9","nodeType":"YulIdentifier","src":"929:6:9"},{"name":"length","nativeSrc":"937:6:9","nodeType":"YulIdentifier","src":"937:6:9"}],"functionName":{"name":"add","nativeSrc":"925:3:9","nodeType":"YulIdentifier","src":"925:3:9"},"nativeSrc":"925:19:9","nodeType":"YulFunctionCall","src":"925:19:9"},{"kind":"number","nativeSrc":"946:4:9","nodeType":"YulLiteral","src":"946:4:9","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"921:3:9","nodeType":"YulIdentifier","src":"921:3:9"},"nativeSrc":"921:30:9","nodeType":"YulFunctionCall","src":"921:30:9"},{"name":"end","nativeSrc":"953:3:9","nodeType":"YulIdentifier","src":"953:3:9"}],"functionName":{"name":"gt","nativeSrc":"918:2:9","nodeType":"YulIdentifier","src":"918:2:9"},"nativeSrc":"918:39:9","nodeType":"YulFunctionCall","src":"918:39:9"},"nativeSrc":"915:59:9","nodeType":"YulIf","src":"915:59:9"}]},"name":"abi_decode_bytes_calldata","nativeSrc":"633:347:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"668:6:9","nodeType":"YulTypedName","src":"668:6:9","type":""},{"name":"end","nativeSrc":"676:3:9","nodeType":"YulTypedName","src":"676:3:9","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"684:8:9","nodeType":"YulTypedName","src":"684:8:9","type":""},{"name":"length","nativeSrc":"694:6:9","nodeType":"YulTypedName","src":"694:6:9","type":""}],"src":"633:347:9"},{"body":{"nativeSrc":"1125:666:9","nodeType":"YulBlock","src":"1125:666:9","statements":[{"body":{"nativeSrc":"1172:16:9","nodeType":"YulBlock","src":"1172:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1181:1:9","nodeType":"YulLiteral","src":"1181:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"1184:1:9","nodeType":"YulLiteral","src":"1184:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1174:6:9","nodeType":"YulIdentifier","src":"1174:6:9"},"nativeSrc":"1174:12:9","nodeType":"YulFunctionCall","src":"1174:12:9"},"nativeSrc":"1174:12:9","nodeType":"YulExpressionStatement","src":"1174:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1146:7:9","nodeType":"YulIdentifier","src":"1146:7:9"},{"name":"headStart","nativeSrc":"1155:9:9","nodeType":"YulIdentifier","src":"1155:9:9"}],"functionName":{"name":"sub","nativeSrc":"1142:3:9","nodeType":"YulIdentifier","src":"1142:3:9"},"nativeSrc":"1142:23:9","nodeType":"YulFunctionCall","src":"1142:23:9"},{"kind":"number","nativeSrc":"1167:3:9","nodeType":"YulLiteral","src":"1167:3:9","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"1138:3:9","nodeType":"YulIdentifier","src":"1138:3:9"},"nativeSrc":"1138:33:9","nodeType":"YulFunctionCall","src":"1138:33:9"},"nativeSrc":"1135:53:9","nodeType":"YulIf","src":"1135:53:9"},{"nativeSrc":"1197:36:9","nodeType":"YulVariableDeclaration","src":"1197:36:9","value":{"arguments":[{"name":"headStart","nativeSrc":"1223:9:9","nodeType":"YulIdentifier","src":"1223:9:9"}],"functionName":{"name":"calldataload","nativeSrc":"1210:12:9","nodeType":"YulIdentifier","src":"1210:12:9"},"nativeSrc":"1210:23:9","nodeType":"YulFunctionCall","src":"1210:23:9"},"variables":[{"name":"value","nativeSrc":"1201:5:9","nodeType":"YulTypedName","src":"1201:5:9","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1267:5:9","nodeType":"YulIdentifier","src":"1267:5:9"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1242:24:9","nodeType":"YulIdentifier","src":"1242:24:9"},"nativeSrc":"1242:31:9","nodeType":"YulFunctionCall","src":"1242:31:9"},"nativeSrc":"1242:31:9","nodeType":"YulExpressionStatement","src":"1242:31:9"},{"nativeSrc":"1282:15:9","nodeType":"YulAssignment","src":"1282:15:9","value":{"name":"value","nativeSrc":"1292:5:9","nodeType":"YulIdentifier","src":"1292:5:9"},"variableNames":[{"name":"value0","nativeSrc":"1282:6:9","nodeType":"YulIdentifier","src":"1282:6:9"}]},{"nativeSrc":"1306:47:9","nodeType":"YulVariableDeclaration","src":"1306:47:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1338:9:9","nodeType":"YulIdentifier","src":"1338:9:9"},{"kind":"number","nativeSrc":"1349:2:9","nodeType":"YulLiteral","src":"1349:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1334:3:9","nodeType":"YulIdentifier","src":"1334:3:9"},"nativeSrc":"1334:18:9","nodeType":"YulFunctionCall","src":"1334:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"1321:12:9","nodeType":"YulIdentifier","src":"1321:12:9"},"nativeSrc":"1321:32:9","nodeType":"YulFunctionCall","src":"1321:32:9"},"variables":[{"name":"value_1","nativeSrc":"1310:7:9","nodeType":"YulTypedName","src":"1310:7:9","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"1387:7:9","nodeType":"YulIdentifier","src":"1387:7:9"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1362:24:9","nodeType":"YulIdentifier","src":"1362:24:9"},"nativeSrc":"1362:33:9","nodeType":"YulFunctionCall","src":"1362:33:9"},"nativeSrc":"1362:33:9","nodeType":"YulExpressionStatement","src":"1362:33:9"},{"nativeSrc":"1404:17:9","nodeType":"YulAssignment","src":"1404:17:9","value":{"name":"value_1","nativeSrc":"1414:7:9","nodeType":"YulIdentifier","src":"1414:7:9"},"variableNames":[{"name":"value1","nativeSrc":"1404:6:9","nodeType":"YulIdentifier","src":"1404:6:9"}]},{"nativeSrc":"1430:16:9","nodeType":"YulVariableDeclaration","src":"1430:16:9","value":{"kind":"number","nativeSrc":"1445:1:9","nodeType":"YulLiteral","src":"1445:1:9","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"1434:7:9","nodeType":"YulTypedName","src":"1434:7:9","type":""}]},{"nativeSrc":"1455:43:9","nodeType":"YulAssignment","src":"1455:43:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1483:9:9","nodeType":"YulIdentifier","src":"1483:9:9"},{"kind":"number","nativeSrc":"1494:2:9","nodeType":"YulLiteral","src":"1494:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1479:3:9","nodeType":"YulIdentifier","src":"1479:3:9"},"nativeSrc":"1479:18:9","nodeType":"YulFunctionCall","src":"1479:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"1466:12:9","nodeType":"YulIdentifier","src":"1466:12:9"},"nativeSrc":"1466:32:9","nodeType":"YulFunctionCall","src":"1466:32:9"},"variableNames":[{"name":"value_2","nativeSrc":"1455:7:9","nodeType":"YulIdentifier","src":"1455:7:9"}]},{"nativeSrc":"1507:17:9","nodeType":"YulAssignment","src":"1507:17:9","value":{"name":"value_2","nativeSrc":"1517:7:9","nodeType":"YulIdentifier","src":"1517:7:9"},"variableNames":[{"name":"value2","nativeSrc":"1507:6:9","nodeType":"YulIdentifier","src":"1507:6:9"}]},{"nativeSrc":"1533:46:9","nodeType":"YulVariableDeclaration","src":"1533:46:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1564:9:9","nodeType":"YulIdentifier","src":"1564:9:9"},{"kind":"number","nativeSrc":"1575:2:9","nodeType":"YulLiteral","src":"1575:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1560:3:9","nodeType":"YulIdentifier","src":"1560:3:9"},"nativeSrc":"1560:18:9","nodeType":"YulFunctionCall","src":"1560:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"1547:12:9","nodeType":"YulIdentifier","src":"1547:12:9"},"nativeSrc":"1547:32:9","nodeType":"YulFunctionCall","src":"1547:32:9"},"variables":[{"name":"offset","nativeSrc":"1537:6:9","nodeType":"YulTypedName","src":"1537:6:9","type":""}]},{"body":{"nativeSrc":"1622:16:9","nodeType":"YulBlock","src":"1622:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1631:1:9","nodeType":"YulLiteral","src":"1631:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"1634:1:9","nodeType":"YulLiteral","src":"1634:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1624:6:9","nodeType":"YulIdentifier","src":"1624:6:9"},"nativeSrc":"1624:12:9","nodeType":"YulFunctionCall","src":"1624:12:9"},"nativeSrc":"1624:12:9","nodeType":"YulExpressionStatement","src":"1624:12:9"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1594:6:9","nodeType":"YulIdentifier","src":"1594:6:9"},{"kind":"number","nativeSrc":"1602:18:9","nodeType":"YulLiteral","src":"1602:18:9","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1591:2:9","nodeType":"YulIdentifier","src":"1591:2:9"},"nativeSrc":"1591:30:9","nodeType":"YulFunctionCall","src":"1591:30:9"},"nativeSrc":"1588:50:9","nodeType":"YulIf","src":"1588:50:9"},{"nativeSrc":"1647:84:9","nodeType":"YulVariableDeclaration","src":"1647:84:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1703:9:9","nodeType":"YulIdentifier","src":"1703:9:9"},{"name":"offset","nativeSrc":"1714:6:9","nodeType":"YulIdentifier","src":"1714:6:9"}],"functionName":{"name":"add","nativeSrc":"1699:3:9","nodeType":"YulIdentifier","src":"1699:3:9"},"nativeSrc":"1699:22:9","nodeType":"YulFunctionCall","src":"1699:22:9"},{"name":"dataEnd","nativeSrc":"1723:7:9","nodeType":"YulIdentifier","src":"1723:7:9"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"1673:25:9","nodeType":"YulIdentifier","src":"1673:25:9"},"nativeSrc":"1673:58:9","nodeType":"YulFunctionCall","src":"1673:58:9"},"variables":[{"name":"value3_1","nativeSrc":"1651:8:9","nodeType":"YulTypedName","src":"1651:8:9","type":""},{"name":"value4_1","nativeSrc":"1661:8:9","nodeType":"YulTypedName","src":"1661:8:9","type":""}]},{"nativeSrc":"1740:18:9","nodeType":"YulAssignment","src":"1740:18:9","value":{"name":"value3_1","nativeSrc":"1750:8:9","nodeType":"YulIdentifier","src":"1750:8:9"},"variableNames":[{"name":"value3","nativeSrc":"1740:6:9","nodeType":"YulIdentifier","src":"1740:6:9"}]},{"nativeSrc":"1767:18:9","nodeType":"YulAssignment","src":"1767:18:9","value":{"name":"value4_1","nativeSrc":"1777:8:9","nodeType":"YulIdentifier","src":"1777:8:9"},"variableNames":[{"name":"value4","nativeSrc":"1767:6:9","nodeType":"YulIdentifier","src":"1767:6:9"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr","nativeSrc":"985:806:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1059:9:9","nodeType":"YulTypedName","src":"1059:9:9","type":""},{"name":"dataEnd","nativeSrc":"1070:7:9","nodeType":"YulTypedName","src":"1070:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1082:6:9","nodeType":"YulTypedName","src":"1082:6:9","type":""},{"name":"value1","nativeSrc":"1090:6:9","nodeType":"YulTypedName","src":"1090:6:9","type":""},{"name":"value2","nativeSrc":"1098:6:9","nodeType":"YulTypedName","src":"1098:6:9","type":""},{"name":"value3","nativeSrc":"1106:6:9","nodeType":"YulTypedName","src":"1106:6:9","type":""},{"name":"value4","nativeSrc":"1114:6:9","nodeType":"YulTypedName","src":"1114:6:9","type":""}],"src":"985:806:9"},{"body":{"nativeSrc":"1895:103:9","nodeType":"YulBlock","src":"1895:103:9","statements":[{"nativeSrc":"1905:26:9","nodeType":"YulAssignment","src":"1905:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"1917:9:9","nodeType":"YulIdentifier","src":"1917:9:9"},{"kind":"number","nativeSrc":"1928:2:9","nodeType":"YulLiteral","src":"1928:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1913:3:9","nodeType":"YulIdentifier","src":"1913:3:9"},"nativeSrc":"1913:18:9","nodeType":"YulFunctionCall","src":"1913:18:9"},"variableNames":[{"name":"tail","nativeSrc":"1905:4:9","nodeType":"YulIdentifier","src":"1905:4:9"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1947:9:9","nodeType":"YulIdentifier","src":"1947:9:9"},{"arguments":[{"name":"value0","nativeSrc":"1962:6:9","nodeType":"YulIdentifier","src":"1962:6:9"},{"arguments":[{"kind":"number","nativeSrc":"1974:3:9","nodeType":"YulLiteral","src":"1974:3:9","type":"","value":"224"},{"kind":"number","nativeSrc":"1979:10:9","nodeType":"YulLiteral","src":"1979:10:9","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1970:3:9","nodeType":"YulIdentifier","src":"1970:3:9"},"nativeSrc":"1970:20:9","nodeType":"YulFunctionCall","src":"1970:20:9"}],"functionName":{"name":"and","nativeSrc":"1958:3:9","nodeType":"YulIdentifier","src":"1958:3:9"},"nativeSrc":"1958:33:9","nodeType":"YulFunctionCall","src":"1958:33:9"}],"functionName":{"name":"mstore","nativeSrc":"1940:6:9","nodeType":"YulIdentifier","src":"1940:6:9"},"nativeSrc":"1940:52:9","nodeType":"YulFunctionCall","src":"1940:52:9"},"nativeSrc":"1940:52:9","nodeType":"YulExpressionStatement","src":"1940:52:9"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"1796:202:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1864:9:9","nodeType":"YulTypedName","src":"1864:9:9","type":""},{"name":"value0","nativeSrc":"1875:6:9","nodeType":"YulTypedName","src":"1875:6:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1886:4:9","nodeType":"YulTypedName","src":"1886:4:9","type":""}],"src":"1796:202:9"},{"body":{"nativeSrc":"2035:95:9","nodeType":"YulBlock","src":"2035:95:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2052:1:9","nodeType":"YulLiteral","src":"2052:1:9","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2059:3:9","nodeType":"YulLiteral","src":"2059:3:9","type":"","value":"224"},{"kind":"number","nativeSrc":"2064:10:9","nodeType":"YulLiteral","src":"2064:10:9","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2055:3:9","nodeType":"YulIdentifier","src":"2055:3:9"},"nativeSrc":"2055:20:9","nodeType":"YulFunctionCall","src":"2055:20:9"}],"functionName":{"name":"mstore","nativeSrc":"2045:6:9","nodeType":"YulIdentifier","src":"2045:6:9"},"nativeSrc":"2045:31:9","nodeType":"YulFunctionCall","src":"2045:31:9"},"nativeSrc":"2045:31:9","nodeType":"YulExpressionStatement","src":"2045:31:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2092:1:9","nodeType":"YulLiteral","src":"2092:1:9","type":"","value":"4"},{"kind":"number","nativeSrc":"2095:4:9","nodeType":"YulLiteral","src":"2095:4:9","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"2085:6:9","nodeType":"YulIdentifier","src":"2085:6:9"},"nativeSrc":"2085:15:9","nodeType":"YulFunctionCall","src":"2085:15:9"},"nativeSrc":"2085:15:9","nodeType":"YulExpressionStatement","src":"2085:15:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2116:1:9","nodeType":"YulLiteral","src":"2116:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"2119:4:9","nodeType":"YulLiteral","src":"2119:4:9","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2109:6:9","nodeType":"YulIdentifier","src":"2109:6:9"},"nativeSrc":"2109:15:9","nodeType":"YulFunctionCall","src":"2109:15:9"},"nativeSrc":"2109:15:9","nodeType":"YulExpressionStatement","src":"2109:15:9"}]},"name":"panic_error_0x41","nativeSrc":"2003:127:9","nodeType":"YulFunctionDefinition","src":"2003:127:9"},{"body":{"nativeSrc":"2231:916:9","nodeType":"YulBlock","src":"2231:916:9","statements":[{"body":{"nativeSrc":"2277:16:9","nodeType":"YulBlock","src":"2277:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2286:1:9","nodeType":"YulLiteral","src":"2286:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"2289:1:9","nodeType":"YulLiteral","src":"2289:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2279:6:9","nodeType":"YulIdentifier","src":"2279:6:9"},"nativeSrc":"2279:12:9","nodeType":"YulFunctionCall","src":"2279:12:9"},"nativeSrc":"2279:12:9","nodeType":"YulExpressionStatement","src":"2279:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2252:7:9","nodeType":"YulIdentifier","src":"2252:7:9"},{"name":"headStart","nativeSrc":"2261:9:9","nodeType":"YulIdentifier","src":"2261:9:9"}],"functionName":{"name":"sub","nativeSrc":"2248:3:9","nodeType":"YulIdentifier","src":"2248:3:9"},"nativeSrc":"2248:23:9","nodeType":"YulFunctionCall","src":"2248:23:9"},{"kind":"number","nativeSrc":"2273:2:9","nodeType":"YulLiteral","src":"2273:2:9","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2244:3:9","nodeType":"YulIdentifier","src":"2244:3:9"},"nativeSrc":"2244:32:9","nodeType":"YulFunctionCall","src":"2244:32:9"},"nativeSrc":"2241:52:9","nodeType":"YulIf","src":"2241:52:9"},{"nativeSrc":"2302:33:9","nodeType":"YulAssignment","src":"2302:33:9","value":{"arguments":[{"name":"headStart","nativeSrc":"2325:9:9","nodeType":"YulIdentifier","src":"2325:9:9"}],"functionName":{"name":"calldataload","nativeSrc":"2312:12:9","nodeType":"YulIdentifier","src":"2312:12:9"},"nativeSrc":"2312:23:9","nodeType":"YulFunctionCall","src":"2312:23:9"},"variableNames":[{"name":"value0","nativeSrc":"2302:6:9","nodeType":"YulIdentifier","src":"2302:6:9"}]},{"nativeSrc":"2344:46:9","nodeType":"YulVariableDeclaration","src":"2344:46:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2375:9:9","nodeType":"YulIdentifier","src":"2375:9:9"},{"kind":"number","nativeSrc":"2386:2:9","nodeType":"YulLiteral","src":"2386:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2371:3:9","nodeType":"YulIdentifier","src":"2371:3:9"},"nativeSrc":"2371:18:9","nodeType":"YulFunctionCall","src":"2371:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"2358:12:9","nodeType":"YulIdentifier","src":"2358:12:9"},"nativeSrc":"2358:32:9","nodeType":"YulFunctionCall","src":"2358:32:9"},"variables":[{"name":"offset","nativeSrc":"2348:6:9","nodeType":"YulTypedName","src":"2348:6:9","type":""}]},{"body":{"nativeSrc":"2433:16:9","nodeType":"YulBlock","src":"2433:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2442:1:9","nodeType":"YulLiteral","src":"2442:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"2445:1:9","nodeType":"YulLiteral","src":"2445:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2435:6:9","nodeType":"YulIdentifier","src":"2435:6:9"},"nativeSrc":"2435:12:9","nodeType":"YulFunctionCall","src":"2435:12:9"},"nativeSrc":"2435:12:9","nodeType":"YulExpressionStatement","src":"2435:12:9"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2405:6:9","nodeType":"YulIdentifier","src":"2405:6:9"},{"kind":"number","nativeSrc":"2413:18:9","nodeType":"YulLiteral","src":"2413:18:9","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2402:2:9","nodeType":"YulIdentifier","src":"2402:2:9"},"nativeSrc":"2402:30:9","nodeType":"YulFunctionCall","src":"2402:30:9"},"nativeSrc":"2399:50:9","nodeType":"YulIf","src":"2399:50:9"},{"nativeSrc":"2458:32:9","nodeType":"YulVariableDeclaration","src":"2458:32:9","value":{"arguments":[{"name":"headStart","nativeSrc":"2472:9:9","nodeType":"YulIdentifier","src":"2472:9:9"},{"name":"offset","nativeSrc":"2483:6:9","nodeType":"YulIdentifier","src":"2483:6:9"}],"functionName":{"name":"add","nativeSrc":"2468:3:9","nodeType":"YulIdentifier","src":"2468:3:9"},"nativeSrc":"2468:22:9","nodeType":"YulFunctionCall","src":"2468:22:9"},"variables":[{"name":"_1","nativeSrc":"2462:2:9","nodeType":"YulTypedName","src":"2462:2:9","type":""}]},{"body":{"nativeSrc":"2538:16:9","nodeType":"YulBlock","src":"2538:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2547:1:9","nodeType":"YulLiteral","src":"2547:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"2550:1:9","nodeType":"YulLiteral","src":"2550:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2540:6:9","nodeType":"YulIdentifier","src":"2540:6:9"},"nativeSrc":"2540:12:9","nodeType":"YulFunctionCall","src":"2540:12:9"},"nativeSrc":"2540:12:9","nodeType":"YulExpressionStatement","src":"2540:12:9"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"2517:2:9","nodeType":"YulIdentifier","src":"2517:2:9"},{"kind":"number","nativeSrc":"2521:4:9","nodeType":"YulLiteral","src":"2521:4:9","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2513:3:9","nodeType":"YulIdentifier","src":"2513:3:9"},"nativeSrc":"2513:13:9","nodeType":"YulFunctionCall","src":"2513:13:9"},{"name":"dataEnd","nativeSrc":"2528:7:9","nodeType":"YulIdentifier","src":"2528:7:9"}],"functionName":{"name":"slt","nativeSrc":"2509:3:9","nodeType":"YulIdentifier","src":"2509:3:9"},"nativeSrc":"2509:27:9","nodeType":"YulFunctionCall","src":"2509:27:9"}],"functionName":{"name":"iszero","nativeSrc":"2502:6:9","nodeType":"YulIdentifier","src":"2502:6:9"},"nativeSrc":"2502:35:9","nodeType":"YulFunctionCall","src":"2502:35:9"},"nativeSrc":"2499:55:9","nodeType":"YulIf","src":"2499:55:9"},{"nativeSrc":"2563:30:9","nodeType":"YulVariableDeclaration","src":"2563:30:9","value":{"arguments":[{"name":"_1","nativeSrc":"2590:2:9","nodeType":"YulIdentifier","src":"2590:2:9"}],"functionName":{"name":"calldataload","nativeSrc":"2577:12:9","nodeType":"YulIdentifier","src":"2577:12:9"},"nativeSrc":"2577:16:9","nodeType":"YulFunctionCall","src":"2577:16:9"},"variables":[{"name":"length","nativeSrc":"2567:6:9","nodeType":"YulTypedName","src":"2567:6:9","type":""}]},{"body":{"nativeSrc":"2636:22:9","nodeType":"YulBlock","src":"2636:22:9","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"2638:16:9","nodeType":"YulIdentifier","src":"2638:16:9"},"nativeSrc":"2638:18:9","nodeType":"YulFunctionCall","src":"2638:18:9"},"nativeSrc":"2638:18:9","nodeType":"YulExpressionStatement","src":"2638:18:9"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2608:6:9","nodeType":"YulIdentifier","src":"2608:6:9"},{"kind":"number","nativeSrc":"2616:18:9","nodeType":"YulLiteral","src":"2616:18:9","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2605:2:9","nodeType":"YulIdentifier","src":"2605:2:9"},"nativeSrc":"2605:30:9","nodeType":"YulFunctionCall","src":"2605:30:9"},"nativeSrc":"2602:56:9","nodeType":"YulIf","src":"2602:56:9"},{"nativeSrc":"2667:23:9","nodeType":"YulVariableDeclaration","src":"2667:23:9","value":{"arguments":[{"kind":"number","nativeSrc":"2687:2:9","nodeType":"YulLiteral","src":"2687:2:9","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"2681:5:9","nodeType":"YulIdentifier","src":"2681:5:9"},"nativeSrc":"2681:9:9","nodeType":"YulFunctionCall","src":"2681:9:9"},"variables":[{"name":"memPtr","nativeSrc":"2671:6:9","nodeType":"YulTypedName","src":"2671:6:9","type":""}]},{"nativeSrc":"2699:85:9","nodeType":"YulVariableDeclaration","src":"2699:85:9","value":{"arguments":[{"name":"memPtr","nativeSrc":"2721:6:9","nodeType":"YulIdentifier","src":"2721:6:9"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2745:6:9","nodeType":"YulIdentifier","src":"2745:6:9"},{"kind":"number","nativeSrc":"2753:4:9","nodeType":"YulLiteral","src":"2753:4:9","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2741:3:9","nodeType":"YulIdentifier","src":"2741:3:9"},"nativeSrc":"2741:17:9","nodeType":"YulFunctionCall","src":"2741:17:9"},{"arguments":[{"kind":"number","nativeSrc":"2764:2:9","nodeType":"YulLiteral","src":"2764:2:9","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2760:3:9","nodeType":"YulIdentifier","src":"2760:3:9"},"nativeSrc":"2760:7:9","nodeType":"YulFunctionCall","src":"2760:7:9"}],"functionName":{"name":"and","nativeSrc":"2737:3:9","nodeType":"YulIdentifier","src":"2737:3:9"},"nativeSrc":"2737:31:9","nodeType":"YulFunctionCall","src":"2737:31:9"},{"kind":"number","nativeSrc":"2770:2:9","nodeType":"YulLiteral","src":"2770:2:9","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"2733:3:9","nodeType":"YulIdentifier","src":"2733:3:9"},"nativeSrc":"2733:40:9","nodeType":"YulFunctionCall","src":"2733:40:9"},{"arguments":[{"kind":"number","nativeSrc":"2779:2:9","nodeType":"YulLiteral","src":"2779:2:9","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2775:3:9","nodeType":"YulIdentifier","src":"2775:3:9"},"nativeSrc":"2775:7:9","nodeType":"YulFunctionCall","src":"2775:7:9"}],"functionName":{"name":"and","nativeSrc":"2729:3:9","nodeType":"YulIdentifier","src":"2729:3:9"},"nativeSrc":"2729:54:9","nodeType":"YulFunctionCall","src":"2729:54:9"}],"functionName":{"name":"add","nativeSrc":"2717:3:9","nodeType":"YulIdentifier","src":"2717:3:9"},"nativeSrc":"2717:67:9","nodeType":"YulFunctionCall","src":"2717:67:9"},"variables":[{"name":"newFreePtr","nativeSrc":"2703:10:9","nodeType":"YulTypedName","src":"2703:10:9","type":""}]},{"body":{"nativeSrc":"2859:22:9","nodeType":"YulBlock","src":"2859:22:9","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"2861:16:9","nodeType":"YulIdentifier","src":"2861:16:9"},"nativeSrc":"2861:18:9","nodeType":"YulFunctionCall","src":"2861:18:9"},"nativeSrc":"2861:18:9","nodeType":"YulExpressionStatement","src":"2861:18:9"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"2802:10:9","nodeType":"YulIdentifier","src":"2802:10:9"},{"kind":"number","nativeSrc":"2814:18:9","nodeType":"YulLiteral","src":"2814:18:9","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2799:2:9","nodeType":"YulIdentifier","src":"2799:2:9"},"nativeSrc":"2799:34:9","nodeType":"YulFunctionCall","src":"2799:34:9"},{"arguments":[{"name":"newFreePtr","nativeSrc":"2838:10:9","nodeType":"YulIdentifier","src":"2838:10:9"},{"name":"memPtr","nativeSrc":"2850:6:9","nodeType":"YulIdentifier","src":"2850:6:9"}],"functionName":{"name":"lt","nativeSrc":"2835:2:9","nodeType":"YulIdentifier","src":"2835:2:9"},"nativeSrc":"2835:22:9","nodeType":"YulFunctionCall","src":"2835:22:9"}],"functionName":{"name":"or","nativeSrc":"2796:2:9","nodeType":"YulIdentifier","src":"2796:2:9"},"nativeSrc":"2796:62:9","nodeType":"YulFunctionCall","src":"2796:62:9"},"nativeSrc":"2793:88:9","nodeType":"YulIf","src":"2793:88:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2897:2:9","nodeType":"YulLiteral","src":"2897:2:9","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"2901:10:9","nodeType":"YulIdentifier","src":"2901:10:9"}],"functionName":{"name":"mstore","nativeSrc":"2890:6:9","nodeType":"YulIdentifier","src":"2890:6:9"},"nativeSrc":"2890:22:9","nodeType":"YulFunctionCall","src":"2890:22:9"},"nativeSrc":"2890:22:9","nodeType":"YulExpressionStatement","src":"2890:22:9"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"2928:6:9","nodeType":"YulIdentifier","src":"2928:6:9"},{"name":"length","nativeSrc":"2936:6:9","nodeType":"YulIdentifier","src":"2936:6:9"}],"functionName":{"name":"mstore","nativeSrc":"2921:6:9","nodeType":"YulIdentifier","src":"2921:6:9"},"nativeSrc":"2921:22:9","nodeType":"YulFunctionCall","src":"2921:22:9"},"nativeSrc":"2921:22:9","nodeType":"YulExpressionStatement","src":"2921:22:9"},{"body":{"nativeSrc":"2993:16:9","nodeType":"YulBlock","src":"2993:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3002:1:9","nodeType":"YulLiteral","src":"3002:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"3005:1:9","nodeType":"YulLiteral","src":"3005:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2995:6:9","nodeType":"YulIdentifier","src":"2995:6:9"},"nativeSrc":"2995:12:9","nodeType":"YulFunctionCall","src":"2995:12:9"},"nativeSrc":"2995:12:9","nodeType":"YulExpressionStatement","src":"2995:12:9"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"2966:2:9","nodeType":"YulIdentifier","src":"2966:2:9"},{"name":"length","nativeSrc":"2970:6:9","nodeType":"YulIdentifier","src":"2970:6:9"}],"functionName":{"name":"add","nativeSrc":"2962:3:9","nodeType":"YulIdentifier","src":"2962:3:9"},"nativeSrc":"2962:15:9","nodeType":"YulFunctionCall","src":"2962:15:9"},{"kind":"number","nativeSrc":"2979:2:9","nodeType":"YulLiteral","src":"2979:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2958:3:9","nodeType":"YulIdentifier","src":"2958:3:9"},"nativeSrc":"2958:24:9","nodeType":"YulFunctionCall","src":"2958:24:9"},{"name":"dataEnd","nativeSrc":"2984:7:9","nodeType":"YulIdentifier","src":"2984:7:9"}],"functionName":{"name":"gt","nativeSrc":"2955:2:9","nodeType":"YulIdentifier","src":"2955:2:9"},"nativeSrc":"2955:37:9","nodeType":"YulFunctionCall","src":"2955:37:9"},"nativeSrc":"2952:57:9","nodeType":"YulIf","src":"2952:57:9"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3035:6:9","nodeType":"YulIdentifier","src":"3035:6:9"},{"kind":"number","nativeSrc":"3043:2:9","nodeType":"YulLiteral","src":"3043:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3031:3:9","nodeType":"YulIdentifier","src":"3031:3:9"},"nativeSrc":"3031:15:9","nodeType":"YulFunctionCall","src":"3031:15:9"},{"arguments":[{"name":"_1","nativeSrc":"3052:2:9","nodeType":"YulIdentifier","src":"3052:2:9"},{"kind":"number","nativeSrc":"3056:2:9","nodeType":"YulLiteral","src":"3056:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3048:3:9","nodeType":"YulIdentifier","src":"3048:3:9"},"nativeSrc":"3048:11:9","nodeType":"YulFunctionCall","src":"3048:11:9"},{"name":"length","nativeSrc":"3061:6:9","nodeType":"YulIdentifier","src":"3061:6:9"}],"functionName":{"name":"calldatacopy","nativeSrc":"3018:12:9","nodeType":"YulIdentifier","src":"3018:12:9"},"nativeSrc":"3018:50:9","nodeType":"YulFunctionCall","src":"3018:50:9"},"nativeSrc":"3018:50:9","nodeType":"YulExpressionStatement","src":"3018:50:9"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3092:6:9","nodeType":"YulIdentifier","src":"3092:6:9"},{"name":"length","nativeSrc":"3100:6:9","nodeType":"YulIdentifier","src":"3100:6:9"}],"functionName":{"name":"add","nativeSrc":"3088:3:9","nodeType":"YulIdentifier","src":"3088:3:9"},"nativeSrc":"3088:19:9","nodeType":"YulFunctionCall","src":"3088:19:9"},{"kind":"number","nativeSrc":"3109:2:9","nodeType":"YulLiteral","src":"3109:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3084:3:9","nodeType":"YulIdentifier","src":"3084:3:9"},"nativeSrc":"3084:28:9","nodeType":"YulFunctionCall","src":"3084:28:9"},{"kind":"number","nativeSrc":"3114:1:9","nodeType":"YulLiteral","src":"3114:1:9","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3077:6:9","nodeType":"YulIdentifier","src":"3077:6:9"},"nativeSrc":"3077:39:9","nodeType":"YulFunctionCall","src":"3077:39:9"},"nativeSrc":"3077:39:9","nodeType":"YulExpressionStatement","src":"3077:39:9"},{"nativeSrc":"3125:16:9","nodeType":"YulAssignment","src":"3125:16:9","value":{"name":"memPtr","nativeSrc":"3135:6:9","nodeType":"YulIdentifier","src":"3135:6:9"},"variableNames":[{"name":"value1","nativeSrc":"3125:6:9","nodeType":"YulIdentifier","src":"3125:6:9"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes_memory_ptr","nativeSrc":"2135:1012:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2189:9:9","nodeType":"YulTypedName","src":"2189:9:9","type":""},{"name":"dataEnd","nativeSrc":"2200:7:9","nodeType":"YulTypedName","src":"2200:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2212:6:9","nodeType":"YulTypedName","src":"2212:6:9","type":""},{"name":"value1","nativeSrc":"2220:6:9","nodeType":"YulTypedName","src":"2220:6:9","type":""}],"src":"2135:1012:9"},{"body":{"nativeSrc":"3290:692:9","nodeType":"YulBlock","src":"3290:692:9","statements":[{"body":{"nativeSrc":"3337:16:9","nodeType":"YulBlock","src":"3337:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3346:1:9","nodeType":"YulLiteral","src":"3346:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"3349:1:9","nodeType":"YulLiteral","src":"3349:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3339:6:9","nodeType":"YulIdentifier","src":"3339:6:9"},"nativeSrc":"3339:12:9","nodeType":"YulFunctionCall","src":"3339:12:9"},"nativeSrc":"3339:12:9","nodeType":"YulExpressionStatement","src":"3339:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3311:7:9","nodeType":"YulIdentifier","src":"3311:7:9"},{"name":"headStart","nativeSrc":"3320:9:9","nodeType":"YulIdentifier","src":"3320:9:9"}],"functionName":{"name":"sub","nativeSrc":"3307:3:9","nodeType":"YulIdentifier","src":"3307:3:9"},"nativeSrc":"3307:23:9","nodeType":"YulFunctionCall","src":"3307:23:9"},{"kind":"number","nativeSrc":"3332:3:9","nodeType":"YulLiteral","src":"3332:3:9","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"3303:3:9","nodeType":"YulIdentifier","src":"3303:3:9"},"nativeSrc":"3303:33:9","nodeType":"YulFunctionCall","src":"3303:33:9"},"nativeSrc":"3300:53:9","nodeType":"YulIf","src":"3300:53:9"},{"nativeSrc":"3362:36:9","nodeType":"YulVariableDeclaration","src":"3362:36:9","value":{"arguments":[{"name":"headStart","nativeSrc":"3388:9:9","nodeType":"YulIdentifier","src":"3388:9:9"}],"functionName":{"name":"calldataload","nativeSrc":"3375:12:9","nodeType":"YulIdentifier","src":"3375:12:9"},"nativeSrc":"3375:23:9","nodeType":"YulFunctionCall","src":"3375:23:9"},"variables":[{"name":"value","nativeSrc":"3366:5:9","nodeType":"YulTypedName","src":"3366:5:9","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3432:5:9","nodeType":"YulIdentifier","src":"3432:5:9"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3407:24:9","nodeType":"YulIdentifier","src":"3407:24:9"},"nativeSrc":"3407:31:9","nodeType":"YulFunctionCall","src":"3407:31:9"},"nativeSrc":"3407:31:9","nodeType":"YulExpressionStatement","src":"3407:31:9"},{"nativeSrc":"3447:15:9","nodeType":"YulAssignment","src":"3447:15:9","value":{"name":"value","nativeSrc":"3457:5:9","nodeType":"YulIdentifier","src":"3457:5:9"},"variableNames":[{"name":"value0","nativeSrc":"3447:6:9","nodeType":"YulIdentifier","src":"3447:6:9"}]},{"nativeSrc":"3471:16:9","nodeType":"YulVariableDeclaration","src":"3471:16:9","value":{"kind":"number","nativeSrc":"3486:1:9","nodeType":"YulLiteral","src":"3486:1:9","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"3475:7:9","nodeType":"YulTypedName","src":"3475:7:9","type":""}]},{"nativeSrc":"3496:43:9","nodeType":"YulAssignment","src":"3496:43:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3524:9:9","nodeType":"YulIdentifier","src":"3524:9:9"},{"kind":"number","nativeSrc":"3535:2:9","nodeType":"YulLiteral","src":"3535:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3520:3:9","nodeType":"YulIdentifier","src":"3520:3:9"},"nativeSrc":"3520:18:9","nodeType":"YulFunctionCall","src":"3520:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"3507:12:9","nodeType":"YulIdentifier","src":"3507:12:9"},"nativeSrc":"3507:32:9","nodeType":"YulFunctionCall","src":"3507:32:9"},"variableNames":[{"name":"value_1","nativeSrc":"3496:7:9","nodeType":"YulIdentifier","src":"3496:7:9"}]},{"nativeSrc":"3548:17:9","nodeType":"YulAssignment","src":"3548:17:9","value":{"name":"value_1","nativeSrc":"3558:7:9","nodeType":"YulIdentifier","src":"3558:7:9"},"variableNames":[{"name":"value1","nativeSrc":"3548:6:9","nodeType":"YulIdentifier","src":"3548:6:9"}]},{"nativeSrc":"3574:46:9","nodeType":"YulVariableDeclaration","src":"3574:46:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3605:9:9","nodeType":"YulIdentifier","src":"3605:9:9"},{"kind":"number","nativeSrc":"3616:2:9","nodeType":"YulLiteral","src":"3616:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3601:3:9","nodeType":"YulIdentifier","src":"3601:3:9"},"nativeSrc":"3601:18:9","nodeType":"YulFunctionCall","src":"3601:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"3588:12:9","nodeType":"YulIdentifier","src":"3588:12:9"},"nativeSrc":"3588:32:9","nodeType":"YulFunctionCall","src":"3588:32:9"},"variables":[{"name":"offset","nativeSrc":"3578:6:9","nodeType":"YulTypedName","src":"3578:6:9","type":""}]},{"body":{"nativeSrc":"3663:16:9","nodeType":"YulBlock","src":"3663:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3672:1:9","nodeType":"YulLiteral","src":"3672:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"3675:1:9","nodeType":"YulLiteral","src":"3675:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3665:6:9","nodeType":"YulIdentifier","src":"3665:6:9"},"nativeSrc":"3665:12:9","nodeType":"YulFunctionCall","src":"3665:12:9"},"nativeSrc":"3665:12:9","nodeType":"YulExpressionStatement","src":"3665:12:9"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3635:6:9","nodeType":"YulIdentifier","src":"3635:6:9"},{"kind":"number","nativeSrc":"3643:18:9","nodeType":"YulLiteral","src":"3643:18:9","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3632:2:9","nodeType":"YulIdentifier","src":"3632:2:9"},"nativeSrc":"3632:30:9","nodeType":"YulFunctionCall","src":"3632:30:9"},"nativeSrc":"3629:50:9","nodeType":"YulIf","src":"3629:50:9"},{"nativeSrc":"3688:84:9","nodeType":"YulVariableDeclaration","src":"3688:84:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3744:9:9","nodeType":"YulIdentifier","src":"3744:9:9"},{"name":"offset","nativeSrc":"3755:6:9","nodeType":"YulIdentifier","src":"3755:6:9"}],"functionName":{"name":"add","nativeSrc":"3740:3:9","nodeType":"YulIdentifier","src":"3740:3:9"},"nativeSrc":"3740:22:9","nodeType":"YulFunctionCall","src":"3740:22:9"},{"name":"dataEnd","nativeSrc":"3764:7:9","nodeType":"YulIdentifier","src":"3764:7:9"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"3714:25:9","nodeType":"YulIdentifier","src":"3714:25:9"},"nativeSrc":"3714:58:9","nodeType":"YulFunctionCall","src":"3714:58:9"},"variables":[{"name":"value2_1","nativeSrc":"3692:8:9","nodeType":"YulTypedName","src":"3692:8:9","type":""},{"name":"value3_1","nativeSrc":"3702:8:9","nodeType":"YulTypedName","src":"3702:8:9","type":""}]},{"nativeSrc":"3781:18:9","nodeType":"YulAssignment","src":"3781:18:9","value":{"name":"value2_1","nativeSrc":"3791:8:9","nodeType":"YulIdentifier","src":"3791:8:9"},"variableNames":[{"name":"value2","nativeSrc":"3781:6:9","nodeType":"YulIdentifier","src":"3781:6:9"}]},{"nativeSrc":"3808:18:9","nodeType":"YulAssignment","src":"3808:18:9","value":{"name":"value3_1","nativeSrc":"3818:8:9","nodeType":"YulIdentifier","src":"3818:8:9"},"variableNames":[{"name":"value3","nativeSrc":"3808:6:9","nodeType":"YulIdentifier","src":"3808:6:9"}]},{"nativeSrc":"3835:47:9","nodeType":"YulVariableDeclaration","src":"3835:47:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3867:9:9","nodeType":"YulIdentifier","src":"3867:9:9"},{"kind":"number","nativeSrc":"3878:2:9","nodeType":"YulLiteral","src":"3878:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3863:3:9","nodeType":"YulIdentifier","src":"3863:3:9"},"nativeSrc":"3863:18:9","nodeType":"YulFunctionCall","src":"3863:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"3850:12:9","nodeType":"YulIdentifier","src":"3850:12:9"},"nativeSrc":"3850:32:9","nodeType":"YulFunctionCall","src":"3850:32:9"},"variables":[{"name":"value_2","nativeSrc":"3839:7:9","nodeType":"YulTypedName","src":"3839:7:9","type":""}]},{"body":{"nativeSrc":"3934:16:9","nodeType":"YulBlock","src":"3934:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3943:1:9","nodeType":"YulLiteral","src":"3943:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"3946:1:9","nodeType":"YulLiteral","src":"3946:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3936:6:9","nodeType":"YulIdentifier","src":"3936:6:9"},"nativeSrc":"3936:12:9","nodeType":"YulFunctionCall","src":"3936:12:9"},"nativeSrc":"3936:12:9","nodeType":"YulExpressionStatement","src":"3936:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nativeSrc":"3904:7:9","nodeType":"YulIdentifier","src":"3904:7:9"},{"arguments":[{"name":"value_2","nativeSrc":"3917:7:9","nodeType":"YulIdentifier","src":"3917:7:9"},{"kind":"number","nativeSrc":"3926:4:9","nodeType":"YulLiteral","src":"3926:4:9","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3913:3:9","nodeType":"YulIdentifier","src":"3913:3:9"},"nativeSrc":"3913:18:9","nodeType":"YulFunctionCall","src":"3913:18:9"}],"functionName":{"name":"eq","nativeSrc":"3901:2:9","nodeType":"YulIdentifier","src":"3901:2:9"},"nativeSrc":"3901:31:9","nodeType":"YulFunctionCall","src":"3901:31:9"}],"functionName":{"name":"iszero","nativeSrc":"3894:6:9","nodeType":"YulIdentifier","src":"3894:6:9"},"nativeSrc":"3894:39:9","nodeType":"YulFunctionCall","src":"3894:39:9"},"nativeSrc":"3891:59:9","nodeType":"YulIf","src":"3891:59:9"},{"nativeSrc":"3959:17:9","nodeType":"YulAssignment","src":"3959:17:9","value":{"name":"value_2","nativeSrc":"3969:7:9","nodeType":"YulIdentifier","src":"3969:7:9"},"variableNames":[{"name":"value4","nativeSrc":"3959:6:9","nodeType":"YulIdentifier","src":"3959:6:9"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8","nativeSrc":"3152:830:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3224:9:9","nodeType":"YulTypedName","src":"3224:9:9","type":""},{"name":"dataEnd","nativeSrc":"3235:7:9","nodeType":"YulTypedName","src":"3235:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3247:6:9","nodeType":"YulTypedName","src":"3247:6:9","type":""},{"name":"value1","nativeSrc":"3255:6:9","nodeType":"YulTypedName","src":"3255:6:9","type":""},{"name":"value2","nativeSrc":"3263:6:9","nodeType":"YulTypedName","src":"3263:6:9","type":""},{"name":"value3","nativeSrc":"3271:6:9","nodeType":"YulTypedName","src":"3271:6:9","type":""},{"name":"value4","nativeSrc":"3279:6:9","nodeType":"YulTypedName","src":"3279:6:9","type":""}],"src":"3152:830:9"},{"body":{"nativeSrc":"4053:184:9","nodeType":"YulBlock","src":"4053:184:9","statements":[{"nativeSrc":"4063:10:9","nodeType":"YulVariableDeclaration","src":"4063:10:9","value":{"kind":"number","nativeSrc":"4072:1:9","nodeType":"YulLiteral","src":"4072:1:9","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"4067:1:9","nodeType":"YulTypedName","src":"4067:1:9","type":""}]},{"body":{"nativeSrc":"4132:63:9","nodeType":"YulBlock","src":"4132:63:9","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"4157:3:9","nodeType":"YulIdentifier","src":"4157:3:9"},{"name":"i","nativeSrc":"4162:1:9","nodeType":"YulIdentifier","src":"4162:1:9"}],"functionName":{"name":"add","nativeSrc":"4153:3:9","nodeType":"YulIdentifier","src":"4153:3:9"},"nativeSrc":"4153:11:9","nodeType":"YulFunctionCall","src":"4153:11:9"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4176:3:9","nodeType":"YulIdentifier","src":"4176:3:9"},{"name":"i","nativeSrc":"4181:1:9","nodeType":"YulIdentifier","src":"4181:1:9"}],"functionName":{"name":"add","nativeSrc":"4172:3:9","nodeType":"YulIdentifier","src":"4172:3:9"},"nativeSrc":"4172:11:9","nodeType":"YulFunctionCall","src":"4172:11:9"}],"functionName":{"name":"mload","nativeSrc":"4166:5:9","nodeType":"YulIdentifier","src":"4166:5:9"},"nativeSrc":"4166:18:9","nodeType":"YulFunctionCall","src":"4166:18:9"}],"functionName":{"name":"mstore","nativeSrc":"4146:6:9","nodeType":"YulIdentifier","src":"4146:6:9"},"nativeSrc":"4146:39:9","nodeType":"YulFunctionCall","src":"4146:39:9"},"nativeSrc":"4146:39:9","nodeType":"YulExpressionStatement","src":"4146:39:9"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"4093:1:9","nodeType":"YulIdentifier","src":"4093:1:9"},{"name":"length","nativeSrc":"4096:6:9","nodeType":"YulIdentifier","src":"4096:6:9"}],"functionName":{"name":"lt","nativeSrc":"4090:2:9","nodeType":"YulIdentifier","src":"4090:2:9"},"nativeSrc":"4090:13:9","nodeType":"YulFunctionCall","src":"4090:13:9"},"nativeSrc":"4082:113:9","nodeType":"YulForLoop","post":{"nativeSrc":"4104:19:9","nodeType":"YulBlock","src":"4104:19:9","statements":[{"nativeSrc":"4106:15:9","nodeType":"YulAssignment","src":"4106:15:9","value":{"arguments":[{"name":"i","nativeSrc":"4115:1:9","nodeType":"YulIdentifier","src":"4115:1:9"},{"kind":"number","nativeSrc":"4118:2:9","nodeType":"YulLiteral","src":"4118:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4111:3:9","nodeType":"YulIdentifier","src":"4111:3:9"},"nativeSrc":"4111:10:9","nodeType":"YulFunctionCall","src":"4111:10:9"},"variableNames":[{"name":"i","nativeSrc":"4106:1:9","nodeType":"YulIdentifier","src":"4106:1:9"}]}]},"pre":{"nativeSrc":"4086:3:9","nodeType":"YulBlock","src":"4086:3:9","statements":[]},"src":"4082:113:9"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"4215:3:9","nodeType":"YulIdentifier","src":"4215:3:9"},{"name":"length","nativeSrc":"4220:6:9","nodeType":"YulIdentifier","src":"4220:6:9"}],"functionName":{"name":"add","nativeSrc":"4211:3:9","nodeType":"YulIdentifier","src":"4211:3:9"},"nativeSrc":"4211:16:9","nodeType":"YulFunctionCall","src":"4211:16:9"},{"kind":"number","nativeSrc":"4229:1:9","nodeType":"YulLiteral","src":"4229:1:9","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4204:6:9","nodeType":"YulIdentifier","src":"4204:6:9"},"nativeSrc":"4204:27:9","nodeType":"YulFunctionCall","src":"4204:27:9"},"nativeSrc":"4204:27:9","nodeType":"YulExpressionStatement","src":"4204:27:9"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"3987:250:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"4031:3:9","nodeType":"YulTypedName","src":"4031:3:9","type":""},{"name":"dst","nativeSrc":"4036:3:9","nodeType":"YulTypedName","src":"4036:3:9","type":""},{"name":"length","nativeSrc":"4041:6:9","nodeType":"YulTypedName","src":"4041:6:9","type":""}],"src":"3987:250:9"},{"body":{"nativeSrc":"4291:221:9","nodeType":"YulBlock","src":"4291:221:9","statements":[{"nativeSrc":"4301:26:9","nodeType":"YulVariableDeclaration","src":"4301:26:9","value":{"arguments":[{"name":"value","nativeSrc":"4321:5:9","nodeType":"YulIdentifier","src":"4321:5:9"}],"functionName":{"name":"mload","nativeSrc":"4315:5:9","nodeType":"YulIdentifier","src":"4315:5:9"},"nativeSrc":"4315:12:9","nodeType":"YulFunctionCall","src":"4315:12:9"},"variables":[{"name":"length","nativeSrc":"4305:6:9","nodeType":"YulTypedName","src":"4305:6:9","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"4343:3:9","nodeType":"YulIdentifier","src":"4343:3:9"},{"name":"length","nativeSrc":"4348:6:9","nodeType":"YulIdentifier","src":"4348:6:9"}],"functionName":{"name":"mstore","nativeSrc":"4336:6:9","nodeType":"YulIdentifier","src":"4336:6:9"},"nativeSrc":"4336:19:9","nodeType":"YulFunctionCall","src":"4336:19:9"},"nativeSrc":"4336:19:9","nodeType":"YulExpressionStatement","src":"4336:19:9"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4403:5:9","nodeType":"YulIdentifier","src":"4403:5:9"},{"kind":"number","nativeSrc":"4410:4:9","nodeType":"YulLiteral","src":"4410:4:9","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4399:3:9","nodeType":"YulIdentifier","src":"4399:3:9"},"nativeSrc":"4399:16:9","nodeType":"YulFunctionCall","src":"4399:16:9"},{"arguments":[{"name":"pos","nativeSrc":"4421:3:9","nodeType":"YulIdentifier","src":"4421:3:9"},{"kind":"number","nativeSrc":"4426:4:9","nodeType":"YulLiteral","src":"4426:4:9","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4417:3:9","nodeType":"YulIdentifier","src":"4417:3:9"},"nativeSrc":"4417:14:9","nodeType":"YulFunctionCall","src":"4417:14:9"},{"name":"length","nativeSrc":"4433:6:9","nodeType":"YulIdentifier","src":"4433:6:9"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"4364:34:9","nodeType":"YulIdentifier","src":"4364:34:9"},"nativeSrc":"4364:76:9","nodeType":"YulFunctionCall","src":"4364:76:9"},"nativeSrc":"4364:76:9","nodeType":"YulExpressionStatement","src":"4364:76:9"},{"nativeSrc":"4449:57:9","nodeType":"YulAssignment","src":"4449:57:9","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4464:3:9","nodeType":"YulIdentifier","src":"4464:3:9"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"4477:6:9","nodeType":"YulIdentifier","src":"4477:6:9"},{"kind":"number","nativeSrc":"4485:2:9","nodeType":"YulLiteral","src":"4485:2:9","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4473:3:9","nodeType":"YulIdentifier","src":"4473:3:9"},"nativeSrc":"4473:15:9","nodeType":"YulFunctionCall","src":"4473:15:9"},{"arguments":[{"kind":"number","nativeSrc":"4494:2:9","nodeType":"YulLiteral","src":"4494:2:9","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"4490:3:9","nodeType":"YulIdentifier","src":"4490:3:9"},"nativeSrc":"4490:7:9","nodeType":"YulFunctionCall","src":"4490:7:9"}],"functionName":{"name":"and","nativeSrc":"4469:3:9","nodeType":"YulIdentifier","src":"4469:3:9"},"nativeSrc":"4469:29:9","nodeType":"YulFunctionCall","src":"4469:29:9"}],"functionName":{"name":"add","nativeSrc":"4460:3:9","nodeType":"YulIdentifier","src":"4460:3:9"},"nativeSrc":"4460:39:9","nodeType":"YulFunctionCall","src":"4460:39:9"},{"kind":"number","nativeSrc":"4501:4:9","nodeType":"YulLiteral","src":"4501:4:9","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4456:3:9","nodeType":"YulIdentifier","src":"4456:3:9"},"nativeSrc":"4456:50:9","nodeType":"YulFunctionCall","src":"4456:50:9"},"variableNames":[{"name":"end","nativeSrc":"4449:3:9","nodeType":"YulIdentifier","src":"4449:3:9"}]}]},"name":"abi_encode_bytes","nativeSrc":"4242:270:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4268:5:9","nodeType":"YulTypedName","src":"4268:5:9","type":""},{"name":"pos","nativeSrc":"4275:3:9","nodeType":"YulTypedName","src":"4275:3:9","type":""}],"returnVariables":[{"name":"end","nativeSrc":"4283:3:9","nodeType":"YulTypedName","src":"4283:3:9","type":""}],"src":"4242:270:9"},{"body":{"nativeSrc":"4636:98:9","nodeType":"YulBlock","src":"4636:98:9","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4653:9:9","nodeType":"YulIdentifier","src":"4653:9:9"},{"kind":"number","nativeSrc":"4664:2:9","nodeType":"YulLiteral","src":"4664:2:9","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4646:6:9","nodeType":"YulIdentifier","src":"4646:6:9"},"nativeSrc":"4646:21:9","nodeType":"YulFunctionCall","src":"4646:21:9"},"nativeSrc":"4646:21:9","nodeType":"YulExpressionStatement","src":"4646:21:9"},{"nativeSrc":"4676:52:9","nodeType":"YulAssignment","src":"4676:52:9","value":{"arguments":[{"name":"value0","nativeSrc":"4701:6:9","nodeType":"YulIdentifier","src":"4701:6:9"},{"arguments":[{"name":"headStart","nativeSrc":"4713:9:9","nodeType":"YulIdentifier","src":"4713:9:9"},{"kind":"number","nativeSrc":"4724:2:9","nodeType":"YulLiteral","src":"4724:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4709:3:9","nodeType":"YulIdentifier","src":"4709:3:9"},"nativeSrc":"4709:18:9","nodeType":"YulFunctionCall","src":"4709:18:9"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"4684:16:9","nodeType":"YulIdentifier","src":"4684:16:9"},"nativeSrc":"4684:44:9","nodeType":"YulFunctionCall","src":"4684:44:9"},"variableNames":[{"name":"tail","nativeSrc":"4676:4:9","nodeType":"YulIdentifier","src":"4676:4:9"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"4517:217:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4605:9:9","nodeType":"YulTypedName","src":"4605:9:9","type":""},{"name":"value0","nativeSrc":"4616:6:9","nodeType":"YulTypedName","src":"4616:6:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4627:4:9","nodeType":"YulTypedName","src":"4627:4:9","type":""}],"src":"4517:217:9"},{"body":{"nativeSrc":"4845:438:9","nodeType":"YulBlock","src":"4845:438:9","statements":[{"body":{"nativeSrc":"4891:16:9","nodeType":"YulBlock","src":"4891:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4900:1:9","nodeType":"YulLiteral","src":"4900:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"4903:1:9","nodeType":"YulLiteral","src":"4903:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4893:6:9","nodeType":"YulIdentifier","src":"4893:6:9"},"nativeSrc":"4893:12:9","nodeType":"YulFunctionCall","src":"4893:12:9"},"nativeSrc":"4893:12:9","nodeType":"YulExpressionStatement","src":"4893:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4866:7:9","nodeType":"YulIdentifier","src":"4866:7:9"},{"name":"headStart","nativeSrc":"4875:9:9","nodeType":"YulIdentifier","src":"4875:9:9"}],"functionName":{"name":"sub","nativeSrc":"4862:3:9","nodeType":"YulIdentifier","src":"4862:3:9"},"nativeSrc":"4862:23:9","nodeType":"YulFunctionCall","src":"4862:23:9"},{"kind":"number","nativeSrc":"4887:2:9","nodeType":"YulLiteral","src":"4887:2:9","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4858:3:9","nodeType":"YulIdentifier","src":"4858:3:9"},"nativeSrc":"4858:32:9","nodeType":"YulFunctionCall","src":"4858:32:9"},"nativeSrc":"4855:52:9","nodeType":"YulIf","src":"4855:52:9"},{"nativeSrc":"4916:36:9","nodeType":"YulVariableDeclaration","src":"4916:36:9","value":{"arguments":[{"name":"headStart","nativeSrc":"4942:9:9","nodeType":"YulIdentifier","src":"4942:9:9"}],"functionName":{"name":"calldataload","nativeSrc":"4929:12:9","nodeType":"YulIdentifier","src":"4929:12:9"},"nativeSrc":"4929:23:9","nodeType":"YulFunctionCall","src":"4929:23:9"},"variables":[{"name":"value","nativeSrc":"4920:5:9","nodeType":"YulTypedName","src":"4920:5:9","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4986:5:9","nodeType":"YulIdentifier","src":"4986:5:9"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4961:24:9","nodeType":"YulIdentifier","src":"4961:24:9"},"nativeSrc":"4961:31:9","nodeType":"YulFunctionCall","src":"4961:31:9"},"nativeSrc":"4961:31:9","nodeType":"YulExpressionStatement","src":"4961:31:9"},{"nativeSrc":"5001:15:9","nodeType":"YulAssignment","src":"5001:15:9","value":{"name":"value","nativeSrc":"5011:5:9","nodeType":"YulIdentifier","src":"5011:5:9"},"variableNames":[{"name":"value0","nativeSrc":"5001:6:9","nodeType":"YulIdentifier","src":"5001:6:9"}]},{"nativeSrc":"5025:46:9","nodeType":"YulVariableDeclaration","src":"5025:46:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5056:9:9","nodeType":"YulIdentifier","src":"5056:9:9"},{"kind":"number","nativeSrc":"5067:2:9","nodeType":"YulLiteral","src":"5067:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5052:3:9","nodeType":"YulIdentifier","src":"5052:3:9"},"nativeSrc":"5052:18:9","nodeType":"YulFunctionCall","src":"5052:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"5039:12:9","nodeType":"YulIdentifier","src":"5039:12:9"},"nativeSrc":"5039:32:9","nodeType":"YulFunctionCall","src":"5039:32:9"},"variables":[{"name":"offset","nativeSrc":"5029:6:9","nodeType":"YulTypedName","src":"5029:6:9","type":""}]},{"body":{"nativeSrc":"5114:16:9","nodeType":"YulBlock","src":"5114:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5123:1:9","nodeType":"YulLiteral","src":"5123:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"5126:1:9","nodeType":"YulLiteral","src":"5126:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5116:6:9","nodeType":"YulIdentifier","src":"5116:6:9"},"nativeSrc":"5116:12:9","nodeType":"YulFunctionCall","src":"5116:12:9"},"nativeSrc":"5116:12:9","nodeType":"YulExpressionStatement","src":"5116:12:9"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5086:6:9","nodeType":"YulIdentifier","src":"5086:6:9"},{"kind":"number","nativeSrc":"5094:18:9","nodeType":"YulLiteral","src":"5094:18:9","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5083:2:9","nodeType":"YulIdentifier","src":"5083:2:9"},"nativeSrc":"5083:30:9","nodeType":"YulFunctionCall","src":"5083:30:9"},"nativeSrc":"5080:50:9","nodeType":"YulIf","src":"5080:50:9"},{"nativeSrc":"5139:84:9","nodeType":"YulVariableDeclaration","src":"5139:84:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5195:9:9","nodeType":"YulIdentifier","src":"5195:9:9"},{"name":"offset","nativeSrc":"5206:6:9","nodeType":"YulIdentifier","src":"5206:6:9"}],"functionName":{"name":"add","nativeSrc":"5191:3:9","nodeType":"YulIdentifier","src":"5191:3:9"},"nativeSrc":"5191:22:9","nodeType":"YulFunctionCall","src":"5191:22:9"},{"name":"dataEnd","nativeSrc":"5215:7:9","nodeType":"YulIdentifier","src":"5215:7:9"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"5165:25:9","nodeType":"YulIdentifier","src":"5165:25:9"},"nativeSrc":"5165:58:9","nodeType":"YulFunctionCall","src":"5165:58:9"},"variables":[{"name":"value1_1","nativeSrc":"5143:8:9","nodeType":"YulTypedName","src":"5143:8:9","type":""},{"name":"value2_1","nativeSrc":"5153:8:9","nodeType":"YulTypedName","src":"5153:8:9","type":""}]},{"nativeSrc":"5232:18:9","nodeType":"YulAssignment","src":"5232:18:9","value":{"name":"value1_1","nativeSrc":"5242:8:9","nodeType":"YulIdentifier","src":"5242:8:9"},"variableNames":[{"name":"value1","nativeSrc":"5232:6:9","nodeType":"YulIdentifier","src":"5232:6:9"}]},{"nativeSrc":"5259:18:9","nodeType":"YulAssignment","src":"5259:18:9","value":{"name":"value2_1","nativeSrc":"5269:8:9","nodeType":"YulIdentifier","src":"5269:8:9"},"variableNames":[{"name":"value2","nativeSrc":"5259:6:9","nodeType":"YulIdentifier","src":"5259:6:9"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nativeSrc":"4739:544:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4795:9:9","nodeType":"YulTypedName","src":"4795:9:9","type":""},{"name":"dataEnd","nativeSrc":"4806:7:9","nodeType":"YulTypedName","src":"4806:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4818:6:9","nodeType":"YulTypedName","src":"4818:6:9","type":""},{"name":"value1","nativeSrc":"4826:6:9","nodeType":"YulTypedName","src":"4826:6:9","type":""},{"name":"value2","nativeSrc":"4834:6:9","nodeType":"YulTypedName","src":"4834:6:9","type":""}],"src":"4739:544:9"},{"body":{"nativeSrc":"5389:76:9","nodeType":"YulBlock","src":"5389:76:9","statements":[{"nativeSrc":"5399:26:9","nodeType":"YulAssignment","src":"5399:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"5411:9:9","nodeType":"YulIdentifier","src":"5411:9:9"},{"kind":"number","nativeSrc":"5422:2:9","nodeType":"YulLiteral","src":"5422:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5407:3:9","nodeType":"YulIdentifier","src":"5407:3:9"},"nativeSrc":"5407:18:9","nodeType":"YulFunctionCall","src":"5407:18:9"},"variableNames":[{"name":"tail","nativeSrc":"5399:4:9","nodeType":"YulIdentifier","src":"5399:4:9"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5441:9:9","nodeType":"YulIdentifier","src":"5441:9:9"},{"name":"value0","nativeSrc":"5452:6:9","nodeType":"YulIdentifier","src":"5452:6:9"}],"functionName":{"name":"mstore","nativeSrc":"5434:6:9","nodeType":"YulIdentifier","src":"5434:6:9"},"nativeSrc":"5434:25:9","nodeType":"YulFunctionCall","src":"5434:25:9"},"nativeSrc":"5434:25:9","nodeType":"YulExpressionStatement","src":"5434:25:9"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"5288:177:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5358:9:9","nodeType":"YulTypedName","src":"5358:9:9","type":""},{"name":"value0","nativeSrc":"5369:6:9","nodeType":"YulTypedName","src":"5369:6:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5380:4:9","nodeType":"YulTypedName","src":"5380:4:9","type":""}],"src":"5288:177:9"},{"body":{"nativeSrc":"5627:188:9","nodeType":"YulBlock","src":"5627:188:9","statements":[{"nativeSrc":"5637:26:9","nodeType":"YulAssignment","src":"5637:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"5649:9:9","nodeType":"YulIdentifier","src":"5649:9:9"},{"kind":"number","nativeSrc":"5660:2:9","nodeType":"YulLiteral","src":"5660:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5645:3:9","nodeType":"YulIdentifier","src":"5645:3:9"},"nativeSrc":"5645:18:9","nodeType":"YulFunctionCall","src":"5645:18:9"},"variableNames":[{"name":"tail","nativeSrc":"5637:4:9","nodeType":"YulIdentifier","src":"5637:4:9"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5679:9:9","nodeType":"YulIdentifier","src":"5679:9:9"},{"name":"value0","nativeSrc":"5690:6:9","nodeType":"YulIdentifier","src":"5690:6:9"}],"functionName":{"name":"mstore","nativeSrc":"5672:6:9","nodeType":"YulIdentifier","src":"5672:6:9"},"nativeSrc":"5672:25:9","nodeType":"YulFunctionCall","src":"5672:25:9"},"nativeSrc":"5672:25:9","nodeType":"YulExpressionStatement","src":"5672:25:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5717:9:9","nodeType":"YulIdentifier","src":"5717:9:9"},{"kind":"number","nativeSrc":"5728:2:9","nodeType":"YulLiteral","src":"5728:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5713:3:9","nodeType":"YulIdentifier","src":"5713:3:9"},"nativeSrc":"5713:18:9","nodeType":"YulFunctionCall","src":"5713:18:9"},{"arguments":[{"name":"value1","nativeSrc":"5737:6:9","nodeType":"YulIdentifier","src":"5737:6:9"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5753:3:9","nodeType":"YulLiteral","src":"5753:3:9","type":"","value":"160"},{"kind":"number","nativeSrc":"5758:1:9","nodeType":"YulLiteral","src":"5758:1:9","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5749:3:9","nodeType":"YulIdentifier","src":"5749:3:9"},"nativeSrc":"5749:11:9","nodeType":"YulFunctionCall","src":"5749:11:9"},{"kind":"number","nativeSrc":"5762:1:9","nodeType":"YulLiteral","src":"5762:1:9","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5745:3:9","nodeType":"YulIdentifier","src":"5745:3:9"},"nativeSrc":"5745:19:9","nodeType":"YulFunctionCall","src":"5745:19:9"}],"functionName":{"name":"and","nativeSrc":"5733:3:9","nodeType":"YulIdentifier","src":"5733:3:9"},"nativeSrc":"5733:32:9","nodeType":"YulFunctionCall","src":"5733:32:9"}],"functionName":{"name":"mstore","nativeSrc":"5706:6:9","nodeType":"YulIdentifier","src":"5706:6:9"},"nativeSrc":"5706:60:9","nodeType":"YulFunctionCall","src":"5706:60:9"},"nativeSrc":"5706:60:9","nodeType":"YulExpressionStatement","src":"5706:60:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5786:9:9","nodeType":"YulIdentifier","src":"5786:9:9"},{"kind":"number","nativeSrc":"5797:2:9","nodeType":"YulLiteral","src":"5797:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5782:3:9","nodeType":"YulIdentifier","src":"5782:3:9"},"nativeSrc":"5782:18:9","nodeType":"YulFunctionCall","src":"5782:18:9"},{"name":"value2","nativeSrc":"5802:6:9","nodeType":"YulIdentifier","src":"5802:6:9"}],"functionName":{"name":"mstore","nativeSrc":"5775:6:9","nodeType":"YulIdentifier","src":"5775:6:9"},"nativeSrc":"5775:34:9","nodeType":"YulFunctionCall","src":"5775:34:9"},"nativeSrc":"5775:34:9","nodeType":"YulExpressionStatement","src":"5775:34:9"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nativeSrc":"5470:345:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5580:9:9","nodeType":"YulTypedName","src":"5580:9:9","type":""},{"name":"value2","nativeSrc":"5591:6:9","nodeType":"YulTypedName","src":"5591:6:9","type":""},{"name":"value1","nativeSrc":"5599:6:9","nodeType":"YulTypedName","src":"5599:6:9","type":""},{"name":"value0","nativeSrc":"5607:6:9","nodeType":"YulTypedName","src":"5607:6:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5618:4:9","nodeType":"YulTypedName","src":"5618:4:9","type":""}],"src":"5470:345:9"},{"body":{"nativeSrc":"5924:383:9","nodeType":"YulBlock","src":"5924:383:9","statements":[{"body":{"nativeSrc":"5970:16:9","nodeType":"YulBlock","src":"5970:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5979:1:9","nodeType":"YulLiteral","src":"5979:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"5982:1:9","nodeType":"YulLiteral","src":"5982:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5972:6:9","nodeType":"YulIdentifier","src":"5972:6:9"},"nativeSrc":"5972:12:9","nodeType":"YulFunctionCall","src":"5972:12:9"},"nativeSrc":"5972:12:9","nodeType":"YulExpressionStatement","src":"5972:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5945:7:9","nodeType":"YulIdentifier","src":"5945:7:9"},{"name":"headStart","nativeSrc":"5954:9:9","nodeType":"YulIdentifier","src":"5954:9:9"}],"functionName":{"name":"sub","nativeSrc":"5941:3:9","nodeType":"YulIdentifier","src":"5941:3:9"},"nativeSrc":"5941:23:9","nodeType":"YulFunctionCall","src":"5941:23:9"},{"kind":"number","nativeSrc":"5966:2:9","nodeType":"YulLiteral","src":"5966:2:9","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"5937:3:9","nodeType":"YulIdentifier","src":"5937:3:9"},"nativeSrc":"5937:32:9","nodeType":"YulFunctionCall","src":"5937:32:9"},"nativeSrc":"5934:52:9","nodeType":"YulIf","src":"5934:52:9"},{"nativeSrc":"5995:14:9","nodeType":"YulVariableDeclaration","src":"5995:14:9","value":{"kind":"number","nativeSrc":"6008:1:9","nodeType":"YulLiteral","src":"6008:1:9","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5999:5:9","nodeType":"YulTypedName","src":"5999:5:9","type":""}]},{"nativeSrc":"6018:32:9","nodeType":"YulAssignment","src":"6018:32:9","value":{"arguments":[{"name":"headStart","nativeSrc":"6040:9:9","nodeType":"YulIdentifier","src":"6040:9:9"}],"functionName":{"name":"calldataload","nativeSrc":"6027:12:9","nodeType":"YulIdentifier","src":"6027:12:9"},"nativeSrc":"6027:23:9","nodeType":"YulFunctionCall","src":"6027:23:9"},"variableNames":[{"name":"value","nativeSrc":"6018:5:9","nodeType":"YulIdentifier","src":"6018:5:9"}]},{"nativeSrc":"6059:15:9","nodeType":"YulAssignment","src":"6059:15:9","value":{"name":"value","nativeSrc":"6069:5:9","nodeType":"YulIdentifier","src":"6069:5:9"},"variableNames":[{"name":"value0","nativeSrc":"6059:6:9","nodeType":"YulIdentifier","src":"6059:6:9"}]},{"nativeSrc":"6083:47:9","nodeType":"YulVariableDeclaration","src":"6083:47:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6115:9:9","nodeType":"YulIdentifier","src":"6115:9:9"},{"kind":"number","nativeSrc":"6126:2:9","nodeType":"YulLiteral","src":"6126:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6111:3:9","nodeType":"YulIdentifier","src":"6111:3:9"},"nativeSrc":"6111:18:9","nodeType":"YulFunctionCall","src":"6111:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"6098:12:9","nodeType":"YulIdentifier","src":"6098:12:9"},"nativeSrc":"6098:32:9","nodeType":"YulFunctionCall","src":"6098:32:9"},"variables":[{"name":"value_1","nativeSrc":"6087:7:9","nodeType":"YulTypedName","src":"6087:7:9","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6164:7:9","nodeType":"YulIdentifier","src":"6164:7:9"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6139:24:9","nodeType":"YulIdentifier","src":"6139:24:9"},"nativeSrc":"6139:33:9","nodeType":"YulFunctionCall","src":"6139:33:9"},"nativeSrc":"6139:33:9","nodeType":"YulExpressionStatement","src":"6139:33:9"},{"nativeSrc":"6181:17:9","nodeType":"YulAssignment","src":"6181:17:9","value":{"name":"value_1","nativeSrc":"6191:7:9","nodeType":"YulIdentifier","src":"6191:7:9"},"variableNames":[{"name":"value1","nativeSrc":"6181:6:9","nodeType":"YulIdentifier","src":"6181:6:9"}]},{"nativeSrc":"6207:16:9","nodeType":"YulVariableDeclaration","src":"6207:16:9","value":{"kind":"number","nativeSrc":"6222:1:9","nodeType":"YulLiteral","src":"6222:1:9","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"6211:7:9","nodeType":"YulTypedName","src":"6211:7:9","type":""}]},{"nativeSrc":"6232:43:9","nodeType":"YulAssignment","src":"6232:43:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6260:9:9","nodeType":"YulIdentifier","src":"6260:9:9"},{"kind":"number","nativeSrc":"6271:2:9","nodeType":"YulLiteral","src":"6271:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6256:3:9","nodeType":"YulIdentifier","src":"6256:3:9"},"nativeSrc":"6256:18:9","nodeType":"YulFunctionCall","src":"6256:18:9"}],"functionName":{"name":"calldataload","nativeSrc":"6243:12:9","nodeType":"YulIdentifier","src":"6243:12:9"},"nativeSrc":"6243:32:9","nodeType":"YulFunctionCall","src":"6243:32:9"},"variableNames":[{"name":"value_2","nativeSrc":"6232:7:9","nodeType":"YulIdentifier","src":"6232:7:9"}]},{"nativeSrc":"6284:17:9","nodeType":"YulAssignment","src":"6284:17:9","value":{"name":"value_2","nativeSrc":"6294:7:9","nodeType":"YulIdentifier","src":"6294:7:9"},"variableNames":[{"name":"value2","nativeSrc":"6284:6:9","nodeType":"YulIdentifier","src":"6284:6:9"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256","nativeSrc":"5820:487:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5874:9:9","nodeType":"YulTypedName","src":"5874:9:9","type":""},{"name":"dataEnd","nativeSrc":"5885:7:9","nodeType":"YulTypedName","src":"5885:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5897:6:9","nodeType":"YulTypedName","src":"5897:6:9","type":""},{"name":"value1","nativeSrc":"5905:6:9","nodeType":"YulTypedName","src":"5905:6:9","type":""},{"name":"value2","nativeSrc":"5913:6:9","nodeType":"YulTypedName","src":"5913:6:9","type":""}],"src":"5820:487:9"},{"body":{"nativeSrc":"6427:362:9","nodeType":"YulBlock","src":"6427:362:9","statements":[{"body":{"nativeSrc":"6473:16:9","nodeType":"YulBlock","src":"6473:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6482:1:9","nodeType":"YulLiteral","src":"6482:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"6485:1:9","nodeType":"YulLiteral","src":"6485:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6475:6:9","nodeType":"YulIdentifier","src":"6475:6:9"},"nativeSrc":"6475:12:9","nodeType":"YulFunctionCall","src":"6475:12:9"},"nativeSrc":"6475:12:9","nodeType":"YulExpressionStatement","src":"6475:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6448:7:9","nodeType":"YulIdentifier","src":"6448:7:9"},{"name":"headStart","nativeSrc":"6457:9:9","nodeType":"YulIdentifier","src":"6457:9:9"}],"functionName":{"name":"sub","nativeSrc":"6444:3:9","nodeType":"YulIdentifier","src":"6444:3:9"},"nativeSrc":"6444:23:9","nodeType":"YulFunctionCall","src":"6444:23:9"},{"kind":"number","nativeSrc":"6469:2:9","nodeType":"YulLiteral","src":"6469:2:9","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6440:3:9","nodeType":"YulIdentifier","src":"6440:3:9"},"nativeSrc":"6440:32:9","nodeType":"YulFunctionCall","src":"6440:32:9"},"nativeSrc":"6437:52:9","nodeType":"YulIf","src":"6437:52:9"},{"nativeSrc":"6498:14:9","nodeType":"YulVariableDeclaration","src":"6498:14:9","value":{"kind":"number","nativeSrc":"6511:1:9","nodeType":"YulLiteral","src":"6511:1:9","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6502:5:9","nodeType":"YulTypedName","src":"6502:5:9","type":""}]},{"nativeSrc":"6521:25:9","nodeType":"YulAssignment","src":"6521:25:9","value":{"arguments":[{"name":"headStart","nativeSrc":"6536:9:9","nodeType":"YulIdentifier","src":"6536:9:9"}],"functionName":{"name":"mload","nativeSrc":"6530:5:9","nodeType":"YulIdentifier","src":"6530:5:9"},"nativeSrc":"6530:16:9","nodeType":"YulFunctionCall","src":"6530:16:9"},"variableNames":[{"name":"value","nativeSrc":"6521:5:9","nodeType":"YulIdentifier","src":"6521:5:9"}]},{"nativeSrc":"6555:15:9","nodeType":"YulAssignment","src":"6555:15:9","value":{"name":"value","nativeSrc":"6565:5:9","nodeType":"YulIdentifier","src":"6565:5:9"},"variableNames":[{"name":"value0","nativeSrc":"6555:6:9","nodeType":"YulIdentifier","src":"6555:6:9"}]},{"nativeSrc":"6579:40:9","nodeType":"YulVariableDeclaration","src":"6579:40:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6604:9:9","nodeType":"YulIdentifier","src":"6604:9:9"},{"kind":"number","nativeSrc":"6615:2:9","nodeType":"YulLiteral","src":"6615:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6600:3:9","nodeType":"YulIdentifier","src":"6600:3:9"},"nativeSrc":"6600:18:9","nodeType":"YulFunctionCall","src":"6600:18:9"}],"functionName":{"name":"mload","nativeSrc":"6594:5:9","nodeType":"YulIdentifier","src":"6594:5:9"},"nativeSrc":"6594:25:9","nodeType":"YulFunctionCall","src":"6594:25:9"},"variables":[{"name":"value_1","nativeSrc":"6583:7:9","nodeType":"YulTypedName","src":"6583:7:9","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6653:7:9","nodeType":"YulIdentifier","src":"6653:7:9"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6628:24:9","nodeType":"YulIdentifier","src":"6628:24:9"},"nativeSrc":"6628:33:9","nodeType":"YulFunctionCall","src":"6628:33:9"},"nativeSrc":"6628:33:9","nodeType":"YulExpressionStatement","src":"6628:33:9"},{"nativeSrc":"6670:17:9","nodeType":"YulAssignment","src":"6670:17:9","value":{"name":"value_1","nativeSrc":"6680:7:9","nodeType":"YulIdentifier","src":"6680:7:9"},"variableNames":[{"name":"value1","nativeSrc":"6670:6:9","nodeType":"YulIdentifier","src":"6670:6:9"}]},{"nativeSrc":"6696:16:9","nodeType":"YulVariableDeclaration","src":"6696:16:9","value":{"kind":"number","nativeSrc":"6711:1:9","nodeType":"YulLiteral","src":"6711:1:9","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"6700:7:9","nodeType":"YulTypedName","src":"6700:7:9","type":""}]},{"nativeSrc":"6721:36:9","nodeType":"YulAssignment","src":"6721:36:9","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6742:9:9","nodeType":"YulIdentifier","src":"6742:9:9"},{"kind":"number","nativeSrc":"6753:2:9","nodeType":"YulLiteral","src":"6753:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6738:3:9","nodeType":"YulIdentifier","src":"6738:3:9"},"nativeSrc":"6738:18:9","nodeType":"YulFunctionCall","src":"6738:18:9"}],"functionName":{"name":"mload","nativeSrc":"6732:5:9","nodeType":"YulIdentifier","src":"6732:5:9"},"nativeSrc":"6732:25:9","nodeType":"YulFunctionCall","src":"6732:25:9"},"variableNames":[{"name":"value_2","nativeSrc":"6721:7:9","nodeType":"YulIdentifier","src":"6721:7:9"}]},{"nativeSrc":"6766:17:9","nodeType":"YulAssignment","src":"6766:17:9","value":{"name":"value_2","nativeSrc":"6776:7:9","nodeType":"YulIdentifier","src":"6776:7:9"},"variableNames":[{"name":"value2","nativeSrc":"6766:6:9","nodeType":"YulIdentifier","src":"6766:6:9"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256_fromMemory","nativeSrc":"6312:477:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6377:9:9","nodeType":"YulTypedName","src":"6377:9:9","type":""},{"name":"dataEnd","nativeSrc":"6388:7:9","nodeType":"YulTypedName","src":"6388:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6400:6:9","nodeType":"YulTypedName","src":"6400:6:9","type":""},{"name":"value1","nativeSrc":"6408:6:9","nodeType":"YulTypedName","src":"6408:6:9","type":""},{"name":"value2","nativeSrc":"6416:6:9","nodeType":"YulTypedName","src":"6416:6:9","type":""}],"src":"6312:477:9"},{"body":{"nativeSrc":"6875:170:9","nodeType":"YulBlock","src":"6875:170:9","statements":[{"body":{"nativeSrc":"6921:16:9","nodeType":"YulBlock","src":"6921:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6930:1:9","nodeType":"YulLiteral","src":"6930:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"6933:1:9","nodeType":"YulLiteral","src":"6933:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6923:6:9","nodeType":"YulIdentifier","src":"6923:6:9"},"nativeSrc":"6923:12:9","nodeType":"YulFunctionCall","src":"6923:12:9"},"nativeSrc":"6923:12:9","nodeType":"YulExpressionStatement","src":"6923:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6896:7:9","nodeType":"YulIdentifier","src":"6896:7:9"},{"name":"headStart","nativeSrc":"6905:9:9","nodeType":"YulIdentifier","src":"6905:9:9"}],"functionName":{"name":"sub","nativeSrc":"6892:3:9","nodeType":"YulIdentifier","src":"6892:3:9"},"nativeSrc":"6892:23:9","nodeType":"YulFunctionCall","src":"6892:23:9"},{"kind":"number","nativeSrc":"6917:2:9","nodeType":"YulLiteral","src":"6917:2:9","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6888:3:9","nodeType":"YulIdentifier","src":"6888:3:9"},"nativeSrc":"6888:32:9","nodeType":"YulFunctionCall","src":"6888:32:9"},"nativeSrc":"6885:52:9","nodeType":"YulIf","src":"6885:52:9"},{"nativeSrc":"6946:29:9","nodeType":"YulVariableDeclaration","src":"6946:29:9","value":{"arguments":[{"name":"headStart","nativeSrc":"6965:9:9","nodeType":"YulIdentifier","src":"6965:9:9"}],"functionName":{"name":"mload","nativeSrc":"6959:5:9","nodeType":"YulIdentifier","src":"6959:5:9"},"nativeSrc":"6959:16:9","nodeType":"YulFunctionCall","src":"6959:16:9"},"variables":[{"name":"value","nativeSrc":"6950:5:9","nodeType":"YulTypedName","src":"6950:5:9","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7009:5:9","nodeType":"YulIdentifier","src":"7009:5:9"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6984:24:9","nodeType":"YulIdentifier","src":"6984:24:9"},"nativeSrc":"6984:31:9","nodeType":"YulFunctionCall","src":"6984:31:9"},"nativeSrc":"6984:31:9","nodeType":"YulExpressionStatement","src":"6984:31:9"},{"nativeSrc":"7024:15:9","nodeType":"YulAssignment","src":"7024:15:9","value":{"name":"value","nativeSrc":"7034:5:9","nodeType":"YulIdentifier","src":"7034:5:9"},"variableNames":[{"name":"value0","nativeSrc":"7024:6:9","nodeType":"YulIdentifier","src":"7024:6:9"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"6794:251:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6841:9:9","nodeType":"YulTypedName","src":"6841:9:9","type":""},{"name":"dataEnd","nativeSrc":"6852:7:9","nodeType":"YulTypedName","src":"6852:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6864:6:9","nodeType":"YulTypedName","src":"6864:6:9","type":""}],"src":"6794:251:9"},{"body":{"nativeSrc":"7224:164:9","nodeType":"YulBlock","src":"7224:164:9","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7241:9:9","nodeType":"YulIdentifier","src":"7241:9:9"},{"kind":"number","nativeSrc":"7252:2:9","nodeType":"YulLiteral","src":"7252:2:9","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7234:6:9","nodeType":"YulIdentifier","src":"7234:6:9"},"nativeSrc":"7234:21:9","nodeType":"YulFunctionCall","src":"7234:21:9"},"nativeSrc":"7234:21:9","nodeType":"YulExpressionStatement","src":"7234:21:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7275:9:9","nodeType":"YulIdentifier","src":"7275:9:9"},{"kind":"number","nativeSrc":"7286:2:9","nodeType":"YulLiteral","src":"7286:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7271:3:9","nodeType":"YulIdentifier","src":"7271:3:9"},"nativeSrc":"7271:18:9","nodeType":"YulFunctionCall","src":"7271:18:9"},{"kind":"number","nativeSrc":"7291:2:9","nodeType":"YulLiteral","src":"7291:2:9","type":"","value":"14"}],"functionName":{"name":"mstore","nativeSrc":"7264:6:9","nodeType":"YulIdentifier","src":"7264:6:9"},"nativeSrc":"7264:30:9","nodeType":"YulFunctionCall","src":"7264:30:9"},"nativeSrc":"7264:30:9","nodeType":"YulExpressionStatement","src":"7264:30:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7314:9:9","nodeType":"YulIdentifier","src":"7314:9:9"},{"kind":"number","nativeSrc":"7325:2:9","nodeType":"YulLiteral","src":"7325:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7310:3:9","nodeType":"YulIdentifier","src":"7310:3:9"},"nativeSrc":"7310:18:9","nodeType":"YulFunctionCall","src":"7310:18:9"},{"hexValue":"496e76616c6964207369676e6572","kind":"string","nativeSrc":"7330:16:9","nodeType":"YulLiteral","src":"7330:16:9","type":"","value":"Invalid signer"}],"functionName":{"name":"mstore","nativeSrc":"7303:6:9","nodeType":"YulIdentifier","src":"7303:6:9"},"nativeSrc":"7303:44:9","nodeType":"YulFunctionCall","src":"7303:44:9"},"nativeSrc":"7303:44:9","nodeType":"YulExpressionStatement","src":"7303:44:9"},{"nativeSrc":"7356:26:9","nodeType":"YulAssignment","src":"7356:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"7368:9:9","nodeType":"YulIdentifier","src":"7368:9:9"},{"kind":"number","nativeSrc":"7379:2:9","nodeType":"YulLiteral","src":"7379:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7364:3:9","nodeType":"YulIdentifier","src":"7364:3:9"},"nativeSrc":"7364:18:9","nodeType":"YulFunctionCall","src":"7364:18:9"},"variableNames":[{"name":"tail","nativeSrc":"7356:4:9","nodeType":"YulIdentifier","src":"7356:4:9"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7050:338:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7201:9:9","nodeType":"YulTypedName","src":"7201:9:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7215:4:9","nodeType":"YulTypedName","src":"7215:4:9","type":""}],"src":"7050:338:9"},{"body":{"nativeSrc":"7440:185:9","nodeType":"YulBlock","src":"7440:185:9","statements":[{"body":{"nativeSrc":"7479:111:9","nodeType":"YulBlock","src":"7479:111:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7500:1:9","nodeType":"YulLiteral","src":"7500:1:9","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"7507:3:9","nodeType":"YulLiteral","src":"7507:3:9","type":"","value":"224"},{"kind":"number","nativeSrc":"7512:10:9","nodeType":"YulLiteral","src":"7512:10:9","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"7503:3:9","nodeType":"YulIdentifier","src":"7503:3:9"},"nativeSrc":"7503:20:9","nodeType":"YulFunctionCall","src":"7503:20:9"}],"functionName":{"name":"mstore","nativeSrc":"7493:6:9","nodeType":"YulIdentifier","src":"7493:6:9"},"nativeSrc":"7493:31:9","nodeType":"YulFunctionCall","src":"7493:31:9"},"nativeSrc":"7493:31:9","nodeType":"YulExpressionStatement","src":"7493:31:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7544:1:9","nodeType":"YulLiteral","src":"7544:1:9","type":"","value":"4"},{"kind":"number","nativeSrc":"7547:4:9","nodeType":"YulLiteral","src":"7547:4:9","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"7537:6:9","nodeType":"YulIdentifier","src":"7537:6:9"},"nativeSrc":"7537:15:9","nodeType":"YulFunctionCall","src":"7537:15:9"},"nativeSrc":"7537:15:9","nodeType":"YulExpressionStatement","src":"7537:15:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7572:1:9","nodeType":"YulLiteral","src":"7572:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"7575:4:9","nodeType":"YulLiteral","src":"7575:4:9","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"7565:6:9","nodeType":"YulIdentifier","src":"7565:6:9"},"nativeSrc":"7565:15:9","nodeType":"YulFunctionCall","src":"7565:15:9"},"nativeSrc":"7565:15:9","nodeType":"YulExpressionStatement","src":"7565:15:9"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"7456:5:9","nodeType":"YulIdentifier","src":"7456:5:9"},{"arguments":[{"kind":"number","nativeSrc":"7467:1:9","nodeType":"YulLiteral","src":"7467:1:9","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7463:3:9","nodeType":"YulIdentifier","src":"7463:3:9"},"nativeSrc":"7463:6:9","nodeType":"YulFunctionCall","src":"7463:6:9"}],"functionName":{"name":"eq","nativeSrc":"7453:2:9","nodeType":"YulIdentifier","src":"7453:2:9"},"nativeSrc":"7453:17:9","nodeType":"YulFunctionCall","src":"7453:17:9"},"nativeSrc":"7450:140:9","nodeType":"YulIf","src":"7450:140:9"},{"nativeSrc":"7599:20:9","nodeType":"YulAssignment","src":"7599:20:9","value":{"arguments":[{"name":"value","nativeSrc":"7610:5:9","nodeType":"YulIdentifier","src":"7610:5:9"},{"kind":"number","nativeSrc":"7617:1:9","nodeType":"YulLiteral","src":"7617:1:9","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7606:3:9","nodeType":"YulIdentifier","src":"7606:3:9"},"nativeSrc":"7606:13:9","nodeType":"YulFunctionCall","src":"7606:13:9"},"variableNames":[{"name":"ret","nativeSrc":"7599:3:9","nodeType":"YulIdentifier","src":"7599:3:9"}]}]},"name":"increment_t_uint256","nativeSrc":"7393:232:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7422:5:9","nodeType":"YulTypedName","src":"7422:5:9","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"7432:3:9","nodeType":"YulTypedName","src":"7432:3:9","type":""}],"src":"7393:232:9"},{"body":{"nativeSrc":"7777:124:9","nodeType":"YulBlock","src":"7777:124:9","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7800:3:9","nodeType":"YulIdentifier","src":"7800:3:9"},{"name":"value0","nativeSrc":"7805:6:9","nodeType":"YulIdentifier","src":"7805:6:9"},{"name":"value1","nativeSrc":"7813:6:9","nodeType":"YulIdentifier","src":"7813:6:9"}],"functionName":{"name":"calldatacopy","nativeSrc":"7787:12:9","nodeType":"YulIdentifier","src":"7787:12:9"},"nativeSrc":"7787:33:9","nodeType":"YulFunctionCall","src":"7787:33:9"},"nativeSrc":"7787:33:9","nodeType":"YulExpressionStatement","src":"7787:33:9"},{"nativeSrc":"7829:26:9","nodeType":"YulVariableDeclaration","src":"7829:26:9","value":{"arguments":[{"name":"pos","nativeSrc":"7843:3:9","nodeType":"YulIdentifier","src":"7843:3:9"},{"name":"value1","nativeSrc":"7848:6:9","nodeType":"YulIdentifier","src":"7848:6:9"}],"functionName":{"name":"add","nativeSrc":"7839:3:9","nodeType":"YulIdentifier","src":"7839:3:9"},"nativeSrc":"7839:16:9","nodeType":"YulFunctionCall","src":"7839:16:9"},"variables":[{"name":"_1","nativeSrc":"7833:2:9","nodeType":"YulTypedName","src":"7833:2:9","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"7871:2:9","nodeType":"YulIdentifier","src":"7871:2:9"},{"kind":"number","nativeSrc":"7875:1:9","nodeType":"YulLiteral","src":"7875:1:9","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7864:6:9","nodeType":"YulIdentifier","src":"7864:6:9"},"nativeSrc":"7864:13:9","nodeType":"YulFunctionCall","src":"7864:13:9"},"nativeSrc":"7864:13:9","nodeType":"YulExpressionStatement","src":"7864:13:9"},{"nativeSrc":"7886:9:9","nodeType":"YulAssignment","src":"7886:9:9","value":{"name":"_1","nativeSrc":"7893:2:9","nodeType":"YulIdentifier","src":"7893:2:9"},"variableNames":[{"name":"end","nativeSrc":"7886:3:9","nodeType":"YulIdentifier","src":"7886:3:9"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"7630:271:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7745:3:9","nodeType":"YulTypedName","src":"7745:3:9","type":""},{"name":"value1","nativeSrc":"7750:6:9","nodeType":"YulTypedName","src":"7750:6:9","type":""},{"name":"value0","nativeSrc":"7758:6:9","nodeType":"YulTypedName","src":"7758:6:9","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7769:3:9","nodeType":"YulTypedName","src":"7769:3:9","type":""}],"src":"7630:271:9"},{"body":{"nativeSrc":"8080:161:9","nodeType":"YulBlock","src":"8080:161:9","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8097:9:9","nodeType":"YulIdentifier","src":"8097:9:9"},{"kind":"number","nativeSrc":"8108:2:9","nodeType":"YulLiteral","src":"8108:2:9","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8090:6:9","nodeType":"YulIdentifier","src":"8090:6:9"},"nativeSrc":"8090:21:9","nodeType":"YulFunctionCall","src":"8090:21:9"},"nativeSrc":"8090:21:9","nodeType":"YulExpressionStatement","src":"8090:21:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8131:9:9","nodeType":"YulIdentifier","src":"8131:9:9"},{"kind":"number","nativeSrc":"8142:2:9","nodeType":"YulLiteral","src":"8142:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8127:3:9","nodeType":"YulIdentifier","src":"8127:3:9"},"nativeSrc":"8127:18:9","nodeType":"YulFunctionCall","src":"8127:18:9"},{"kind":"number","nativeSrc":"8147:2:9","nodeType":"YulLiteral","src":"8147:2:9","type":"","value":"11"}],"functionName":{"name":"mstore","nativeSrc":"8120:6:9","nodeType":"YulIdentifier","src":"8120:6:9"},"nativeSrc":"8120:30:9","nodeType":"YulFunctionCall","src":"8120:30:9"},"nativeSrc":"8120:30:9","nodeType":"YulExpressionStatement","src":"8120:30:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8170:9:9","nodeType":"YulIdentifier","src":"8170:9:9"},{"kind":"number","nativeSrc":"8181:2:9","nodeType":"YulLiteral","src":"8181:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8166:3:9","nodeType":"YulIdentifier","src":"8166:3:9"},"nativeSrc":"8166:18:9","nodeType":"YulFunctionCall","src":"8166:18:9"},{"hexValue":"43616c6c206661696c6564","kind":"string","nativeSrc":"8186:13:9","nodeType":"YulLiteral","src":"8186:13:9","type":"","value":"Call failed"}],"functionName":{"name":"mstore","nativeSrc":"8159:6:9","nodeType":"YulIdentifier","src":"8159:6:9"},"nativeSrc":"8159:41:9","nodeType":"YulFunctionCall","src":"8159:41:9"},"nativeSrc":"8159:41:9","nodeType":"YulExpressionStatement","src":"8159:41:9"},{"nativeSrc":"8209:26:9","nodeType":"YulAssignment","src":"8209:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"8221:9:9","nodeType":"YulIdentifier","src":"8221:9:9"},{"kind":"number","nativeSrc":"8232:2:9","nodeType":"YulLiteral","src":"8232:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8217:3:9","nodeType":"YulIdentifier","src":"8217:3:9"},"nativeSrc":"8217:18:9","nodeType":"YulFunctionCall","src":"8217:18:9"},"variableNames":[{"name":"tail","nativeSrc":"8209:4:9","nodeType":"YulIdentifier","src":"8209:4:9"}]}]},"name":"abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7906:335:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8057:9:9","nodeType":"YulTypedName","src":"8057:9:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8071:4:9","nodeType":"YulTypedName","src":"8071:4:9","type":""}],"src":"7906:335:9"},{"body":{"nativeSrc":"8420:169:9","nodeType":"YulBlock","src":"8420:169:9","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8437:9:9","nodeType":"YulIdentifier","src":"8437:9:9"},{"kind":"number","nativeSrc":"8448:2:9","nodeType":"YulLiteral","src":"8448:2:9","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8430:6:9","nodeType":"YulIdentifier","src":"8430:6:9"},"nativeSrc":"8430:21:9","nodeType":"YulFunctionCall","src":"8430:21:9"},"nativeSrc":"8430:21:9","nodeType":"YulExpressionStatement","src":"8430:21:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8471:9:9","nodeType":"YulIdentifier","src":"8471:9:9"},{"kind":"number","nativeSrc":"8482:2:9","nodeType":"YulLiteral","src":"8482:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8467:3:9","nodeType":"YulIdentifier","src":"8467:3:9"},"nativeSrc":"8467:18:9","nodeType":"YulFunctionCall","src":"8467:18:9"},{"kind":"number","nativeSrc":"8487:2:9","nodeType":"YulLiteral","src":"8487:2:9","type":"","value":"19"}],"functionName":{"name":"mstore","nativeSrc":"8460:6:9","nodeType":"YulIdentifier","src":"8460:6:9"},"nativeSrc":"8460:30:9","nodeType":"YulFunctionCall","src":"8460:30:9"},"nativeSrc":"8460:30:9","nodeType":"YulExpressionStatement","src":"8460:30:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8510:9:9","nodeType":"YulIdentifier","src":"8510:9:9"},{"kind":"number","nativeSrc":"8521:2:9","nodeType":"YulLiteral","src":"8521:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8506:3:9","nodeType":"YulIdentifier","src":"8506:3:9"},"nativeSrc":"8506:18:9","nodeType":"YulFunctionCall","src":"8506:18:9"},{"hexValue":"44656c656761746563616c6c206661696c6564","kind":"string","nativeSrc":"8526:21:9","nodeType":"YulLiteral","src":"8526:21:9","type":"","value":"Delegatecall failed"}],"functionName":{"name":"mstore","nativeSrc":"8499:6:9","nodeType":"YulIdentifier","src":"8499:6:9"},"nativeSrc":"8499:49:9","nodeType":"YulFunctionCall","src":"8499:49:9"},"nativeSrc":"8499:49:9","nodeType":"YulExpressionStatement","src":"8499:49:9"},{"nativeSrc":"8557:26:9","nodeType":"YulAssignment","src":"8557:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"8569:9:9","nodeType":"YulIdentifier","src":"8569:9:9"},{"kind":"number","nativeSrc":"8580:2:9","nodeType":"YulLiteral","src":"8580:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8565:3:9","nodeType":"YulIdentifier","src":"8565:3:9"},"nativeSrc":"8565:18:9","nodeType":"YulFunctionCall","src":"8565:18:9"},"variableNames":[{"name":"tail","nativeSrc":"8557:4:9","nodeType":"YulIdentifier","src":"8557:4:9"}]}]},"name":"abi_encode_tuple_t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8246:343:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8397:9:9","nodeType":"YulTypedName","src":"8397:9:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8411:4:9","nodeType":"YulTypedName","src":"8411:4:9","type":""}],"src":"8246:343:9"},{"body":{"nativeSrc":"8768:171:9","nodeType":"YulBlock","src":"8768:171:9","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8785:9:9","nodeType":"YulIdentifier","src":"8785:9:9"},{"kind":"number","nativeSrc":"8796:2:9","nodeType":"YulLiteral","src":"8796:2:9","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8778:6:9","nodeType":"YulIdentifier","src":"8778:6:9"},"nativeSrc":"8778:21:9","nodeType":"YulFunctionCall","src":"8778:21:9"},"nativeSrc":"8778:21:9","nodeType":"YulExpressionStatement","src":"8778:21:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8819:9:9","nodeType":"YulIdentifier","src":"8819:9:9"},{"kind":"number","nativeSrc":"8830:2:9","nodeType":"YulLiteral","src":"8830:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8815:3:9","nodeType":"YulIdentifier","src":"8815:3:9"},"nativeSrc":"8815:18:9","nodeType":"YulFunctionCall","src":"8815:18:9"},{"kind":"number","nativeSrc":"8835:2:9","nodeType":"YulLiteral","src":"8835:2:9","type":"","value":"21"}],"functionName":{"name":"mstore","nativeSrc":"8808:6:9","nodeType":"YulIdentifier","src":"8808:6:9"},"nativeSrc":"8808:30:9","nodeType":"YulFunctionCall","src":"8808:30:9"},"nativeSrc":"8808:30:9","nodeType":"YulExpressionStatement","src":"8808:30:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8858:9:9","nodeType":"YulIdentifier","src":"8858:9:9"},{"kind":"number","nativeSrc":"8869:2:9","nodeType":"YulLiteral","src":"8869:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8854:3:9","nodeType":"YulIdentifier","src":"8854:3:9"},"nativeSrc":"8854:18:9","nodeType":"YulFunctionCall","src":"8854:18:9"},{"hexValue":"556e737570706f72746564206f7065726174696f6e","kind":"string","nativeSrc":"8874:23:9","nodeType":"YulLiteral","src":"8874:23:9","type":"","value":"Unsupported operation"}],"functionName":{"name":"mstore","nativeSrc":"8847:6:9","nodeType":"YulIdentifier","src":"8847:6:9"},"nativeSrc":"8847:51:9","nodeType":"YulFunctionCall","src":"8847:51:9"},"nativeSrc":"8847:51:9","nodeType":"YulExpressionStatement","src":"8847:51:9"},{"nativeSrc":"8907:26:9","nodeType":"YulAssignment","src":"8907:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"8919:9:9","nodeType":"YulIdentifier","src":"8919:9:9"},{"kind":"number","nativeSrc":"8930:2:9","nodeType":"YulLiteral","src":"8930:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8915:3:9","nodeType":"YulIdentifier","src":"8915:3:9"},"nativeSrc":"8915:18:9","nodeType":"YulFunctionCall","src":"8915:18:9"},"variableNames":[{"name":"tail","nativeSrc":"8907:4:9","nodeType":"YulIdentifier","src":"8907:4:9"}]}]},"name":"abi_encode_tuple_t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8594:345:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8745:9:9","nodeType":"YulTypedName","src":"8745:9:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8759:4:9","nodeType":"YulTypedName","src":"8759:4:9","type":""}],"src":"8594:345:9"},{"body":{"nativeSrc":"9118:169:9","nodeType":"YulBlock","src":"9118:169:9","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9135:9:9","nodeType":"YulIdentifier","src":"9135:9:9"},{"kind":"number","nativeSrc":"9146:2:9","nodeType":"YulLiteral","src":"9146:2:9","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"9128:6:9","nodeType":"YulIdentifier","src":"9128:6:9"},"nativeSrc":"9128:21:9","nodeType":"YulFunctionCall","src":"9128:21:9"},"nativeSrc":"9128:21:9","nodeType":"YulExpressionStatement","src":"9128:21:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9169:9:9","nodeType":"YulIdentifier","src":"9169:9:9"},{"kind":"number","nativeSrc":"9180:2:9","nodeType":"YulLiteral","src":"9180:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9165:3:9","nodeType":"YulIdentifier","src":"9165:3:9"},"nativeSrc":"9165:18:9","nodeType":"YulFunctionCall","src":"9165:18:9"},{"kind":"number","nativeSrc":"9185:2:9","nodeType":"YulLiteral","src":"9185:2:9","type":"","value":"19"}],"functionName":{"name":"mstore","nativeSrc":"9158:6:9","nodeType":"YulIdentifier","src":"9158:6:9"},"nativeSrc":"9158:30:9","nodeType":"YulFunctionCall","src":"9158:30:9"},"nativeSrc":"9158:30:9","nodeType":"YulExpressionStatement","src":"9158:30:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9208:9:9","nodeType":"YulIdentifier","src":"9208:9:9"},{"kind":"number","nativeSrc":"9219:2:9","nodeType":"YulLiteral","src":"9219:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9204:3:9","nodeType":"YulIdentifier","src":"9204:3:9"},"nativeSrc":"9204:18:9","nodeType":"YulFunctionCall","src":"9204:18:9"},{"hexValue":"416c726561647920696e697469616c697a6564","kind":"string","nativeSrc":"9224:21:9","nodeType":"YulLiteral","src":"9224:21:9","type":"","value":"Already initialized"}],"functionName":{"name":"mstore","nativeSrc":"9197:6:9","nodeType":"YulIdentifier","src":"9197:6:9"},"nativeSrc":"9197:49:9","nodeType":"YulFunctionCall","src":"9197:49:9"},"nativeSrc":"9197:49:9","nodeType":"YulExpressionStatement","src":"9197:49:9"},{"nativeSrc":"9255:26:9","nodeType":"YulAssignment","src":"9255:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"9267:9:9","nodeType":"YulIdentifier","src":"9267:9:9"},{"kind":"number","nativeSrc":"9278:2:9","nodeType":"YulLiteral","src":"9278:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9263:3:9","nodeType":"YulIdentifier","src":"9263:3:9"},"nativeSrc":"9263:18:9","nodeType":"YulFunctionCall","src":"9263:18:9"},"variableNames":[{"name":"tail","nativeSrc":"9255:4:9","nodeType":"YulIdentifier","src":"9255:4:9"}]}]},"name":"abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8944:343:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9095:9:9","nodeType":"YulTypedName","src":"9095:9:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9109:4:9","nodeType":"YulTypedName","src":"9109:4:9","type":""}],"src":"8944:343:9"},{"body":{"nativeSrc":"9324:95:9","nodeType":"YulBlock","src":"9324:95:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9341:1:9","nodeType":"YulLiteral","src":"9341:1:9","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9348:3:9","nodeType":"YulLiteral","src":"9348:3:9","type":"","value":"224"},{"kind":"number","nativeSrc":"9353:10:9","nodeType":"YulLiteral","src":"9353:10:9","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9344:3:9","nodeType":"YulIdentifier","src":"9344:3:9"},"nativeSrc":"9344:20:9","nodeType":"YulFunctionCall","src":"9344:20:9"}],"functionName":{"name":"mstore","nativeSrc":"9334:6:9","nodeType":"YulIdentifier","src":"9334:6:9"},"nativeSrc":"9334:31:9","nodeType":"YulFunctionCall","src":"9334:31:9"},"nativeSrc":"9334:31:9","nodeType":"YulExpressionStatement","src":"9334:31:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9381:1:9","nodeType":"YulLiteral","src":"9381:1:9","type":"","value":"4"},{"kind":"number","nativeSrc":"9384:4:9","nodeType":"YulLiteral","src":"9384:4:9","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"9374:6:9","nodeType":"YulIdentifier","src":"9374:6:9"},"nativeSrc":"9374:15:9","nodeType":"YulFunctionCall","src":"9374:15:9"},"nativeSrc":"9374:15:9","nodeType":"YulExpressionStatement","src":"9374:15:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9405:1:9","nodeType":"YulLiteral","src":"9405:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"9408:4:9","nodeType":"YulLiteral","src":"9408:4:9","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9398:6:9","nodeType":"YulIdentifier","src":"9398:6:9"},"nativeSrc":"9398:15:9","nodeType":"YulFunctionCall","src":"9398:15:9"},"nativeSrc":"9398:15:9","nodeType":"YulExpressionStatement","src":"9398:15:9"}]},"name":"panic_error_0x21","nativeSrc":"9292:127:9","nodeType":"YulFunctionDefinition","src":"9292:127:9"},{"body":{"nativeSrc":"9571:141:9","nodeType":"YulBlock","src":"9571:141:9","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9588:9:9","nodeType":"YulIdentifier","src":"9588:9:9"},{"name":"value0","nativeSrc":"9599:6:9","nodeType":"YulIdentifier","src":"9599:6:9"}],"functionName":{"name":"mstore","nativeSrc":"9581:6:9","nodeType":"YulIdentifier","src":"9581:6:9"},"nativeSrc":"9581:25:9","nodeType":"YulFunctionCall","src":"9581:25:9"},"nativeSrc":"9581:25:9","nodeType":"YulExpressionStatement","src":"9581:25:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9626:9:9","nodeType":"YulIdentifier","src":"9626:9:9"},{"kind":"number","nativeSrc":"9637:2:9","nodeType":"YulLiteral","src":"9637:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9622:3:9","nodeType":"YulIdentifier","src":"9622:3:9"},"nativeSrc":"9622:18:9","nodeType":"YulFunctionCall","src":"9622:18:9"},{"kind":"number","nativeSrc":"9642:2:9","nodeType":"YulLiteral","src":"9642:2:9","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"9615:6:9","nodeType":"YulIdentifier","src":"9615:6:9"},"nativeSrc":"9615:30:9","nodeType":"YulFunctionCall","src":"9615:30:9"},"nativeSrc":"9615:30:9","nodeType":"YulExpressionStatement","src":"9615:30:9"},{"nativeSrc":"9654:52:9","nodeType":"YulAssignment","src":"9654:52:9","value":{"arguments":[{"name":"value1","nativeSrc":"9679:6:9","nodeType":"YulIdentifier","src":"9679:6:9"},{"arguments":[{"name":"headStart","nativeSrc":"9691:9:9","nodeType":"YulIdentifier","src":"9691:9:9"},{"kind":"number","nativeSrc":"9702:2:9","nodeType":"YulLiteral","src":"9702:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9687:3:9","nodeType":"YulIdentifier","src":"9687:3:9"},"nativeSrc":"9687:18:9","nodeType":"YulFunctionCall","src":"9687:18:9"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"9662:16:9","nodeType":"YulIdentifier","src":"9662:16:9"},"nativeSrc":"9662:44:9","nodeType":"YulFunctionCall","src":"9662:44:9"},"variableNames":[{"name":"tail","nativeSrc":"9654:4:9","nodeType":"YulIdentifier","src":"9654:4:9"}]}]},"name":"abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"9424:288:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9532:9:9","nodeType":"YulTypedName","src":"9532:9:9","type":""},{"name":"value1","nativeSrc":"9543:6:9","nodeType":"YulTypedName","src":"9543:6:9","type":""},{"name":"value0","nativeSrc":"9551:6:9","nodeType":"YulTypedName","src":"9551:6:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9562:4:9","nodeType":"YulTypedName","src":"9562:4:9","type":""}],"src":"9424:288:9"},{"body":{"nativeSrc":"9854:150:9","nodeType":"YulBlock","src":"9854:150:9","statements":[{"nativeSrc":"9864:27:9","nodeType":"YulVariableDeclaration","src":"9864:27:9","value":{"arguments":[{"name":"value0","nativeSrc":"9884:6:9","nodeType":"YulIdentifier","src":"9884:6:9"}],"functionName":{"name":"mload","nativeSrc":"9878:5:9","nodeType":"YulIdentifier","src":"9878:5:9"},"nativeSrc":"9878:13:9","nodeType":"YulFunctionCall","src":"9878:13:9"},"variables":[{"name":"length","nativeSrc":"9868:6:9","nodeType":"YulTypedName","src":"9868:6:9","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"9939:6:9","nodeType":"YulIdentifier","src":"9939:6:9"},{"kind":"number","nativeSrc":"9947:4:9","nodeType":"YulLiteral","src":"9947:4:9","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9935:3:9","nodeType":"YulIdentifier","src":"9935:3:9"},"nativeSrc":"9935:17:9","nodeType":"YulFunctionCall","src":"9935:17:9"},{"name":"pos","nativeSrc":"9954:3:9","nodeType":"YulIdentifier","src":"9954:3:9"},{"name":"length","nativeSrc":"9959:6:9","nodeType":"YulIdentifier","src":"9959:6:9"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"9900:34:9","nodeType":"YulIdentifier","src":"9900:34:9"},"nativeSrc":"9900:66:9","nodeType":"YulFunctionCall","src":"9900:66:9"},"nativeSrc":"9900:66:9","nodeType":"YulExpressionStatement","src":"9900:66:9"},{"nativeSrc":"9975:23:9","nodeType":"YulAssignment","src":"9975:23:9","value":{"arguments":[{"name":"pos","nativeSrc":"9986:3:9","nodeType":"YulIdentifier","src":"9986:3:9"},{"name":"length","nativeSrc":"9991:6:9","nodeType":"YulIdentifier","src":"9991:6:9"}],"functionName":{"name":"add","nativeSrc":"9982:3:9","nodeType":"YulIdentifier","src":"9982:3:9"},"nativeSrc":"9982:16:9","nodeType":"YulFunctionCall","src":"9982:16:9"},"variableNames":[{"name":"end","nativeSrc":"9975:3:9","nodeType":"YulIdentifier","src":"9975:3:9"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"9717:287:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"9830:3:9","nodeType":"YulTypedName","src":"9830:3:9","type":""},{"name":"value0","nativeSrc":"9835:6:9","nodeType":"YulTypedName","src":"9835:6:9","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9846:3:9","nodeType":"YulTypedName","src":"9846:3:9","type":""}],"src":"9717:287:9"},{"body":{"nativeSrc":"10090:103:9","nodeType":"YulBlock","src":"10090:103:9","statements":[{"body":{"nativeSrc":"10136:16:9","nodeType":"YulBlock","src":"10136:16:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10145:1:9","nodeType":"YulLiteral","src":"10145:1:9","type":"","value":"0"},{"kind":"number","nativeSrc":"10148:1:9","nodeType":"YulLiteral","src":"10148:1:9","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10138:6:9","nodeType":"YulIdentifier","src":"10138:6:9"},"nativeSrc":"10138:12:9","nodeType":"YulFunctionCall","src":"10138:12:9"},"nativeSrc":"10138:12:9","nodeType":"YulExpressionStatement","src":"10138:12:9"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10111:7:9","nodeType":"YulIdentifier","src":"10111:7:9"},{"name":"headStart","nativeSrc":"10120:9:9","nodeType":"YulIdentifier","src":"10120:9:9"}],"functionName":{"name":"sub","nativeSrc":"10107:3:9","nodeType":"YulIdentifier","src":"10107:3:9"},"nativeSrc":"10107:23:9","nodeType":"YulFunctionCall","src":"10107:23:9"},{"kind":"number","nativeSrc":"10132:2:9","nodeType":"YulLiteral","src":"10132:2:9","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10103:3:9","nodeType":"YulIdentifier","src":"10103:3:9"},"nativeSrc":"10103:32:9","nodeType":"YulFunctionCall","src":"10103:32:9"},"nativeSrc":"10100:52:9","nodeType":"YulIf","src":"10100:52:9"},{"nativeSrc":"10161:26:9","nodeType":"YulAssignment","src":"10161:26:9","value":{"arguments":[{"name":"headStart","nativeSrc":"10177:9:9","nodeType":"YulIdentifier","src":"10177:9:9"}],"functionName":{"name":"mload","nativeSrc":"10171:5:9","nodeType":"YulIdentifier","src":"10171:5:9"},"nativeSrc":"10171:16:9","nodeType":"YulFunctionCall","src":"10171:16:9"},"variableNames":[{"name":"value0","nativeSrc":"10161:6:9","nodeType":"YulIdentifier","src":"10161:6:9"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"10009:184:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10056:9:9","nodeType":"YulTypedName","src":"10056:9:9","type":""},{"name":"dataEnd","nativeSrc":"10067:7:9","nodeType":"YulTypedName","src":"10067:7:9","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10079:6:9","nodeType":"YulTypedName","src":"10079:6:9","type":""}],"src":"10009:184:9"},{"body":{"nativeSrc":"10379:217:9","nodeType":"YulBlock","src":"10379:217:9","statements":[{"nativeSrc":"10389:27:9","nodeType":"YulAssignment","src":"10389:27:9","value":{"arguments":[{"name":"headStart","nativeSrc":"10401:9:9","nodeType":"YulIdentifier","src":"10401:9:9"},{"kind":"number","nativeSrc":"10412:3:9","nodeType":"YulLiteral","src":"10412:3:9","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"10397:3:9","nodeType":"YulIdentifier","src":"10397:3:9"},"nativeSrc":"10397:19:9","nodeType":"YulFunctionCall","src":"10397:19:9"},"variableNames":[{"name":"tail","nativeSrc":"10389:4:9","nodeType":"YulIdentifier","src":"10389:4:9"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10432:9:9","nodeType":"YulIdentifier","src":"10432:9:9"},{"name":"value0","nativeSrc":"10443:6:9","nodeType":"YulIdentifier","src":"10443:6:9"}],"functionName":{"name":"mstore","nativeSrc":"10425:6:9","nodeType":"YulIdentifier","src":"10425:6:9"},"nativeSrc":"10425:25:9","nodeType":"YulFunctionCall","src":"10425:25:9"},"nativeSrc":"10425:25:9","nodeType":"YulExpressionStatement","src":"10425:25:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10470:9:9","nodeType":"YulIdentifier","src":"10470:9:9"},{"kind":"number","nativeSrc":"10481:2:9","nodeType":"YulLiteral","src":"10481:2:9","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10466:3:9","nodeType":"YulIdentifier","src":"10466:3:9"},"nativeSrc":"10466:18:9","nodeType":"YulFunctionCall","src":"10466:18:9"},{"arguments":[{"name":"value1","nativeSrc":"10490:6:9","nodeType":"YulIdentifier","src":"10490:6:9"},{"kind":"number","nativeSrc":"10498:4:9","nodeType":"YulLiteral","src":"10498:4:9","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10486:3:9","nodeType":"YulIdentifier","src":"10486:3:9"},"nativeSrc":"10486:17:9","nodeType":"YulFunctionCall","src":"10486:17:9"}],"functionName":{"name":"mstore","nativeSrc":"10459:6:9","nodeType":"YulIdentifier","src":"10459:6:9"},"nativeSrc":"10459:45:9","nodeType":"YulFunctionCall","src":"10459:45:9"},"nativeSrc":"10459:45:9","nodeType":"YulExpressionStatement","src":"10459:45:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10524:9:9","nodeType":"YulIdentifier","src":"10524:9:9"},{"kind":"number","nativeSrc":"10535:2:9","nodeType":"YulLiteral","src":"10535:2:9","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10520:3:9","nodeType":"YulIdentifier","src":"10520:3:9"},"nativeSrc":"10520:18:9","nodeType":"YulFunctionCall","src":"10520:18:9"},{"name":"value2","nativeSrc":"10540:6:9","nodeType":"YulIdentifier","src":"10540:6:9"}],"functionName":{"name":"mstore","nativeSrc":"10513:6:9","nodeType":"YulIdentifier","src":"10513:6:9"},"nativeSrc":"10513:34:9","nodeType":"YulFunctionCall","src":"10513:34:9"},"nativeSrc":"10513:34:9","nodeType":"YulExpressionStatement","src":"10513:34:9"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10567:9:9","nodeType":"YulIdentifier","src":"10567:9:9"},{"kind":"number","nativeSrc":"10578:2:9","nodeType":"YulLiteral","src":"10578:2:9","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10563:3:9","nodeType":"YulIdentifier","src":"10563:3:9"},"nativeSrc":"10563:18:9","nodeType":"YulFunctionCall","src":"10563:18:9"},{"name":"value3","nativeSrc":"10583:6:9","nodeType":"YulIdentifier","src":"10583:6:9"}],"functionName":{"name":"mstore","nativeSrc":"10556:6:9","nodeType":"YulIdentifier","src":"10556:6:9"},"nativeSrc":"10556:34:9","nodeType":"YulFunctionCall","src":"10556:34:9"},"nativeSrc":"10556:34:9","nodeType":"YulExpressionStatement","src":"10556:34:9"}]},"name":"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed","nativeSrc":"10198:398:9","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10324:9:9","nodeType":"YulTypedName","src":"10324:9:9","type":""},{"name":"value3","nativeSrc":"10335:6:9","nodeType":"YulTypedName","src":"10335:6:9","type":""},{"name":"value2","nativeSrc":"10343:6:9","nodeType":"YulTypedName","src":"10343:6:9","type":""},{"name":"value1","nativeSrc":"10351:6:9","nodeType":"YulTypedName","src":"10351:6:9","type":""},{"name":"value0","nativeSrc":"10359:6:9","nodeType":"YulTypedName","src":"10359:6:9","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10370:4:9","nodeType":"YulTypedName","src":"10370:4:9","type":""}],"src":"10198:398:9"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\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        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let value_2 := calldataload(add(headStart, 96))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\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_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := mload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid signer\")\n        tail := add(headStart, 96)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Call failed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Delegatecall failed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"Unsupported operation\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Already initialized\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_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 abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n}","id":9,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061007f5760003560e01c8063523e32601161004e578063523e326014610139578063c19d93fb14610159578063fc0c546a1461017d578063fffb51831461021357600080fd5b806301ffc9a71461008b578063150b7a02146100c05780631626ba7e146100f9578063519454471461011957600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a63660046109ef565b610235565b60405190151581526020015b60405180910390f35b3480156100cc57600080fd5b506100e06100db366004610a7a565b6102a2565b6040516001600160e01b031990911681526020016100b7565b34801561010557600080fd5b506100e0610114366004610b03565b6102b4565b61012c610127366004610bc6565b6103d5565b6040516100b79190610c90565b34801561014557600080fd5b506100e0610154366004610ca3565b6105d8565b34801561016557600080fd5b5061016f60005481565b6040519081526020016100b7565b34801561018957600080fd5b507f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0547f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f1547f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f254604080519384526001600160a01b039092166020840152908201526060016100b7565b34801561021f57600080fd5b5061023361022e366004610cf8565b610601565b005b60006001600160e01b031982166301ffc9a760e01b148061026657506001600160e01b03198216636faff5f160e01b145b8061028157506001600160e01b03198216635194544760e01b145b8061029c57506001600160e01b03198216630a85bd0160e11b145b92915050565b630a85bd0160e11b5b95945050505050565b600080600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190610d30565b92509250925046831461033657506000925061029c915050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e90602401602060405180830381865afa15801561037e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a29190610d6b565b90506103af81888861067c565b156103c85750630b135d3f60e11b935061029c92505050565b5060009695505050505050565b60606103e0336106f0565b6104225760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b60448201526064015b60405180910390fd5b600080815461043090610d88565b9091555060ff82166000036104e857600080876001600160a01b031687878760405161045d929190610daf565b60006040518083038185875af1925050503d806000811461049a576040519150601f19603f3d011682016040523d82523d6000602084013e61049f565b606091505b5091509150816104df5760405162461bcd60e51b815260206004820152600b60248201526a10d85b1b0819985a5b195960aa1b6044820152606401610419565b91506102ab9050565b8160ff1660010361059857600080876001600160a01b03168686604051610510929190610daf565b600060405180830381855af49150503d806000811461054b576040519150601f19603f3d011682016040523d82523d6000602084013e610550565b606091505b5091509150816104df5760405162461bcd60e51b815260206004820152601360248201527211195b1959d85d1958d85b1b0819985a5b1959606a1b6044820152606401610419565b60405162461bcd60e51b81526020600482015260156024820152742ab739bab83837b93a32b21037b832b930ba34b7b760591b6044820152606401610419565b60006105e3846106f0565b156105f65750630291f19360e51b6105fa565b5060005b9392505050565b7f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0805480156106685760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610419565b509283556001830191909155600290910155565b6000836001600160a01b03163b6000036106de5760008061069d85856107f7565b50909250905060008160038111156106b7576106b7610dbf565b1480156106d55750856001600160a01b0316826001600160a01b0316145b925050506105fa565b6106e9848484610844565b90506105fa565b600080600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107589190610d30565b92509250925046831461077057506000949350505050565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa1580156107b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d99190610d6b565b6001600160a01b0316856001600160a01b0316149350505050919050565b600080600083516041036108315760208401516040850151606086015160001a61082388828585610920565b95509550955050505061083d565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401610866929190610dd5565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b1790525161089b9190610df6565b600060405180830381855afa9150503d80600081146108d6576040519150601f19603f3d011682016040523d82523d6000602084013e6108db565b606091505b50915091508180156108ef57506020815110155b801561091657508051630b135d3f60e11b906109149083016020908101908401610e12565b145b9695505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561095b57506000915060039050826109e5565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156109af573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109db575060009250600191508290506109e5565b9250600091508190505b9450945094915050565b600060208284031215610a0157600080fd5b81356001600160e01b0319811681146105fa57600080fd5b6001600160a01b0381168114610a2e57600080fd5b50565b60008083601f840112610a4357600080fd5b50813567ffffffffffffffff811115610a5b57600080fd5b602083019150836020828501011115610a7357600080fd5b9250929050565b600080600080600060808688031215610a9257600080fd5b8535610a9d81610a19565b94506020860135610aad81610a19565b935060408601359250606086013567ffffffffffffffff811115610ad057600080fd5b610adc88828901610a31565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610b1657600080fd5b82359150602083013567ffffffffffffffff811115610b3457600080fd5b8301601f81018513610b4557600080fd5b803567ffffffffffffffff811115610b5f57610b5f610aed565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610b8e57610b8e610aed565b604052818152828201602001871015610ba657600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080600060808688031215610bde57600080fd5b8535610be981610a19565b945060208601359350604086013567ffffffffffffffff811115610c0c57600080fd5b610c1888828901610a31565b909450925050606086013560ff81168114610c3257600080fd5b809150509295509295909350565b60005b83811015610c5b578181015183820152602001610c43565b50506000910152565b60008151808452610c7c816020860160208601610c40565b601f01601f19169290920160200192915050565b6020815260006105fa6020830184610c64565b600080600060408486031215610cb857600080fd5b8335610cc381610a19565b9250602084013567ffffffffffffffff811115610cdf57600080fd5b610ceb86828701610a31565b9497909650939450505050565b600080600060608486031215610d0d57600080fd5b833592506020840135610d1f81610a19565b929592945050506040919091013590565b600080600060608486031215610d4557600080fd5b83516020850151909350610d5881610a19565b6040949094015192959394509192915050565b600060208284031215610d7d57600080fd5b81516105fa81610a19565b600060018201610da857634e487b7160e01b600052601160045260246000fd5b5060010190565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000610dee6040830184610c64565b949350505050565b60008251610e08818460208701610c40565b9190910192915050565b600060208284031215610e2457600080fd5b505191905056fea264697066735822122009e00011b5b82562847cb4b277466b312de5046da5e2f489fc7f36ee3192ddae64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x523E3260 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0xFFFB5183 EQ PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x86 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAB PUSH2 0xA6 CALLDATASIZE PUSH1 0x4 PUSH2 0x9EF JUMP JUMPDEST PUSH2 0x235 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE0 PUSH2 0xDB CALLDATASIZE PUSH1 0x4 PUSH2 0xA7A JUMP JUMPDEST PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE0 PUSH2 0x114 CALLDATASIZE PUSH1 0x4 PUSH2 0xB03 JUMP JUMPDEST PUSH2 0x2B4 JUMP JUMPDEST PUSH2 0x12C PUSH2 0x127 CALLDATASIZE PUSH1 0x4 PUSH2 0xBC6 JUMP JUMPDEST PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0xC90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE0 PUSH2 0x154 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA3 JUMP JUMPDEST PUSH2 0x5D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F0 SLOAD PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F1 SLOAD PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F2 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0xB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x233 PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0xCF8 JUMP JUMPDEST PUSH2 0x601 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x266 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x281 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x51945447 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x29C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31C SWAP2 SWAP1 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x336 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH2 0x29C SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A2 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST SWAP1 POP PUSH2 0x3AF DUP2 DUP9 DUP9 PUSH2 0x67C JUMP JUMPDEST ISZERO PUSH2 0x3C8 JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP4 POP PUSH2 0x29C SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3E0 CALLER PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x422 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD PUSH2 0x430 SWAP1 PUSH2 0xD88 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0xFF DUP3 AND PUSH1 0x0 SUB PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x45D SWAP3 SWAP2 SWAP1 PUSH2 0xDAF 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 0x49A 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 0x49F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x10D85B1B0819985A5B1959 PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x419 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AB SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x510 SWAP3 SWAP2 SWAP1 PUSH2 0xDAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x54B 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 0x550 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x11195B1959D85D1958D85B1B0819985A5B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x2AB739BAB83837B93A32B21037B832B930BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x419 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E3 DUP5 PUSH2 0x6F0 JUMP JUMPDEST ISZERO PUSH2 0x5F6 JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL PUSH2 0x5FA JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F0 DUP1 SLOAD DUP1 ISZERO PUSH2 0x668 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x105B1C9958591E481A5B9A5D1A585B1A5E9959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x419 JUMP JUMPDEST POP SWAP3 DUP4 SSTORE PUSH1 0x1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 PUSH2 0x69D DUP6 DUP6 PUSH2 0x7F7 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x6B7 JUMPI PUSH2 0x6B7 PUSH2 0xDBF JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x6D5 JUMPI POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x6E9 DUP5 DUP5 DUP5 PUSH2 0x844 JUMP JUMPDEST SWAP1 POP PUSH2 0x5FA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x734 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x758 SWAP2 SWAP1 PUSH2 0xD30 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x770 JUMPI POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7D9 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x831 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x823 DUP9 DUP3 DUP6 DUP6 PUSH2 0x920 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x83D JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x866 SWAP3 SWAP2 SWAP1 PUSH2 0xDD5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB135D3F PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x89B SWAP2 SWAP1 PUSH2 0xDF6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x8D6 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 0x8DB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x8EF JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x916 JUMPI POP DUP1 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 PUSH2 0x914 SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH2 0xE12 JUMP JUMPDEST EQ JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x95B JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9DB JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x9E5 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xA9D DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xAAD DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xADC DUP9 DUP3 DUP10 ADD PUSH2 0xA31 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0xB45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB5F JUMPI PUSH2 0xB5F PUSH2 0xAED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB8E JUMPI PUSH2 0xB8E PUSH2 0xAED JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0xBA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xBDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xBE9 DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC18 DUP9 DUP3 DUP10 ADD PUSH2 0xA31 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xC32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC5B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC43 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xC7C DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x5FA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xC64 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xCB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xCC3 DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCEB DUP7 DUP3 DUP8 ADD PUSH2 0xA31 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xD1F DUP2 PUSH2 0xA19 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xD58 DUP2 PUSH2 0xA19 JUMP JUMPDEST PUSH1 0x40 SWAP5 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP6 SWAP4 SWAP5 POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5FA DUP2 PUSH2 0xA19 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0xDA8 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xDEE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xC64 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xE08 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xC40 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD 0xE0 STOP GT 0xB5 0xB8 0x25 PUSH3 0x847CB4 0xB2 PUSH24 0x466B312DE5046DA5E2F489FC7F36EE3192DDAE64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"555:4672:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4503:351;;;;;;;;;;-1:-1:-1;4503:351:6;;;;;:::i;:::-;;:::i;:::-;;;470:14:9;;463:22;445:41;;433:2;418:18;4503:351:6;;;;;;;;4204:234;;;;;;;;;;-1:-1:-1;4204:234:6;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;1958:33:9;;;1940:52;;1928:2;1913:18;4204:234:6;1796:202:9;3565:522:6;;;;;;;;;;-1:-1:-1;3565:522:6;;;;;:::i;:::-;;:::i;1246:735::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3239:249::-;;;;;;;;;;-1:-1:-1;3239:249:6;;;;;:::i;:::-;;:::i;761:20::-;;;;;;;;;;;;;;;;;;;5434:25:9;;;5422:2;5407:18;761:20:6;5288:177:9;2055:372:6;;;;;;;;;;-1:-1:-1;1036:34:6;2308:11;2355:12;2349:19;2398:12;2392:19;2055:372;;;5672:25:9;;;-1:-1:-1;;;;;5733:32:9;;;5728:2;5713:18;;5706:60;5782:18;;;5775:34;5660:2;5645:18;2055:372:6;5470:345:9;2570:580:6;;;;;;;;;;-1:-1:-1;2570:580:6;;;;;:::i;:::-;;:::i;:::-;;4503:351;4587:4;-1:-1:-1;;;;;;4611:40:6;;-1:-1:-1;;;4611:40:6;;:104;;-1:-1:-1;;;;;;;4667:48:6;;-1:-1:-1;;;4667:48:6;4611:104;:171;;;-1:-1:-1;;;;;;;4731:51:6;;-1:-1:-1;;;4731:51:6;4611:171;:235;;;-1:-1:-1;;;;;;;4798:48:6;;-1:-1:-1;;;4798:48:6;4611:235;4603:244;4503:351;-1:-1:-1;;4503:351:6:o;4204:234::-;-1:-1:-1;;;4204:234:6;;;;;;;;:::o;3565:522::-;3674:17;3704:15;3721:21;3744:15;3763:4;-1:-1:-1;;;;;3763:23:6;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3703:85;;;;;;3814:13;3803:7;:24;3799:46;;-1:-1:-1;3843:1:6;;-1:-1:-1;3829:16:6;;-1:-1:-1;;3829:16:6;3799:46;3872:39;;-1:-1:-1;;;3872:39:6;;;;;5434:25:9;;;3856:13:6;;-1:-1:-1;;;;;3872:30:6;;;;;5407:18:9;;3872:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3856:55;;3926:60;3963:5;3970:4;3976:9;3926:36;:60::i;:::-;3922:132;;;-1:-1:-1;;;;4009:34:6;-1:-1:-1;4002:41:6;;-1:-1:-1;;;4002:41:6;3922:132;-1:-1:-1;4078:1:6;;3565:522;-1:-1:-1;;;;;;3565:522:6:o;1246:735::-;1392:19;1431:26;1446:10;1431:14;:26::i;:::-;1423:53;;;;-1:-1:-1;;;1423:53:6;;7252:2:9;1423:53:6;;;7234:21:9;7291:2;7271:18;;;7264:30;-1:-1:-1;;;7310:18:9;;;7303:44;7364:18;;1423:53:6;;;;;;;;;1489:5;;1487:7;;;;;:::i;:::-;;;;-1:-1:-1;1509:14:6;;;1522:1;1509:14;1505:470;;1560:12;1574:16;1594:2;-1:-1:-1;;;;;1594:7:6;1609:5;1616:4;;1594:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1559:62;;;;1643:7;1635:31;;;;-1:-1:-1;;;1635:31:6;;8108:2:9;1635:31:6;;;8090:21:9;8147:2;8127:18;;;8120:30;-1:-1:-1;;;8166:18:9;;;8159:41;8217:18;;1635:31:6;7906:335:9;1635:31:6;1687:3;-1:-1:-1;1680:10:6;;-1:-1:-1;1680:10:6;1505:470;1711:9;:14;;1724:1;1711:14;1707:268;;1770:12;1784:16;1804:2;-1:-1:-1;;;;;1804:15:6;1820:4;;1804:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1769:56;;;;1847:7;1839:39;;;;-1:-1:-1;;;1839:39:6;;8448:2:9;1839:39:6;;;8430:21:9;8487:2;8467:18;;;8460:30;-1:-1:-1;;;8506:18:9;;;8499:49;8565:18;;1839:39:6;8246:343:9;1707:268:6;1933:31;;-1:-1:-1;;;1933:31:6;;8796:2:9;1933:31:6;;;8778:21:9;8835:2;8815:18;;;8808:30;-1:-1:-1;;;8854:18:9;;;8847:51;8915:18;;1933:31:6;8594:345:9;3239:249:6;3339:6;3361:22;3376:6;3361:14;:22::i;:::-;3357:98;;;-1:-1:-1;;;;3399:45:6;;3357:98;-1:-1:-1;3479:1:6;3239:249;;;;;;:::o;2570:580::-;1036:34;2870:11;;2908:18;;2900:50;;;;-1:-1:-1;;;2900:50:6;;9146:2:9;2900:50:6;;;9128:21:9;9185:2;9165:18;;;9158:30;-1:-1:-1;;;9204:18:9;;;9197:49;9263:18;;2900:50:6;8944:343:9;2900:50:6;-1:-1:-1;3023:21:6;;;3074:1;3064:12;;3057:35;;;;3122:1;3112:12;;;3105:29;2570:580::o;1041:429:4:-;1147:4;1167:6;-1:-1:-1;;;;;1167:18:4;;1189:1;1167:23;1163:301;;1207:17;1226:22;1254:33;1271:4;1277:9;1254:16;:33::i;:::-;-1:-1:-1;1206:81:4;;-1:-1:-1;1206:81:4;-1:-1:-1;1315:26:4;1308:3;:33;;;;;;;;:::i;:::-;;:56;;;;;1358:6;-1:-1:-1;;;;;1345:19:4;:9;-1:-1:-1;;;;;1345:19:4;;1308:56;1301:63;;;;;;1163:301;1402:51;1429:6;1437:4;1443:9;1402:26;:51::i;:::-;1395:58;;;;4934:291:6;4997:4;5014:15;5031:21;5054:15;5073:4;-1:-1:-1;;;;;5073:23:6;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5013:85;;;;;;5124:13;5113:7;:24;5109:42;;-1:-1:-1;5146:5:6;;4934:291;-1:-1:-1;;;;4934:291:6:o;5109:42::-;5179:39;;-1:-1:-1;;;5179:39:6;;;;;5434:25:9;;;-1:-1:-1;;;;;5179:30:6;;;;;5407:18:9;;5179:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5169:49:6;:6;-1:-1:-1;;;;;5169:49:6;;5162:56;;;;;4934:291;;;:::o;2129:778:3:-;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:3;;2823:1;;-1:-1:-1;2827:35:3;;2295:606;2129:778;;;;;:::o;1877:458:4:-;2020:4;2037:12;2051:19;2074:6;-1:-1:-1;;;;;2074:17:4;2148:4;2154:9;2105:60;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2105:60:4;;;;;;;;;;;;;;-1:-1:-1;;;;;2105:60:4;-1:-1:-1;;;2105:60:4;;;2074:101;;;2105:60;2074:101;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2036:139;;;;2193:7;:42;;;;;2233:2;2216:6;:13;:19;;2193:42;:134;;;;-1:-1:-1;2251:29:4;;-1:-1:-1;;;2292:34:4;2251:29;;;;;;;;;;;;:::i;:::-;:76;2193:134;2185:143;1877:458;-1:-1:-1;;;;;;1877:458:4:o;5203:1551:3:-;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:3;;-1:-1:-1;6385:30:3;;-1:-1:-1;6417:1:3;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;10425:25:9;;;10498:4;10486:17;;10466:18;;;10459:45;;;;10520:18;;;10513:34;;;10563:18;;;10556:34;;;6541:24:3;;10397:19:9;;6541:24:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:3;;-1:-1:-1;;6541:24:3;;;-1:-1:-1;;;;;;;6579:20:3;;6575:113;;-1:-1:-1;6631:1:3;;-1:-1:-1;6635:29:3;;-1:-1:-1;6631:1:3;;-1:-1:-1;6615:62:3;;6575:113;6706:6;-1:-1:-1;6714:20:3;;-1:-1:-1;6714:20:3;;-1:-1:-1;5203:1551:3;;;;;;;;;:::o;14:286:9:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:9;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:9;;562:42;;552:70;;618:1;615;608:12;552:70;497:131;:::o;633:347::-;684:8;694:6;748:3;741:4;733:6;729:17;725:27;715:55;;766:1;763;756:12;715:55;-1:-1:-1;789:20:9;;832:18;821:30;;818:50;;;864:1;861;854:12;818:50;901:4;893:6;889:17;877:29;;953:3;946:4;937:6;929;925:19;921:30;918:39;915:59;;;970:1;967;960:12;915:59;633:347;;;;;:::o;985:806::-;1082:6;1090;1098;1106;1114;1167:3;1155:9;1146:7;1142:23;1138:33;1135:53;;;1184:1;1181;1174:12;1135:53;1223:9;1210:23;1242:31;1267:5;1242:31;:::i;:::-;1292:5;-1:-1:-1;1349:2:9;1334:18;;1321:32;1362:33;1321:32;1362:33;:::i;:::-;1414:7;-1:-1:-1;1494:2:9;1479:18;;1466:32;;-1:-1:-1;1575:2:9;1560:18;;1547:32;1602:18;1591:30;;1588:50;;;1634:1;1631;1624:12;1588:50;1673:58;1723:7;1714:6;1703:9;1699:22;1673:58;:::i;:::-;985:806;;;;-1:-1:-1;985:806:9;;-1:-1:-1;1750:8:9;;1647:84;985:806;-1:-1:-1;;;985:806:9:o;2003:127::-;2064:10;2059:3;2055:20;2052:1;2045:31;2095:4;2092:1;2085:15;2119:4;2116:1;2109:15;2135:1012;2212:6;2220;2273:2;2261:9;2252:7;2248:23;2244:32;2241:52;;;2289:1;2286;2279:12;2241:52;2325:9;2312:23;2302:33;;2386:2;2375:9;2371:18;2358:32;2413:18;2405:6;2402:30;2399:50;;;2445:1;2442;2435:12;2399:50;2468:22;;2521:4;2513:13;;2509:27;-1:-1:-1;2499:55:9;;2550:1;2547;2540:12;2499:55;2590:2;2577:16;2616:18;2608:6;2605:30;2602:56;;;2638:18;;:::i;:::-;2687:2;2681:9;2779:2;2741:17;;-1:-1:-1;;2737:31:9;;;2770:2;2733:40;2729:54;2717:67;;2814:18;2799:34;;2835:22;;;2796:62;2793:88;;;2861:18;;:::i;:::-;2897:2;2890:22;2921;;;2962:15;;;2979:2;2958:24;2955:37;-1:-1:-1;2952:57:9;;;3005:1;3002;2995:12;2952:57;3061:6;3056:2;3052;3048:11;3043:2;3035:6;3031:15;3018:50;3114:1;3109:2;3100:6;3092;3088:19;3084:28;3077:39;3135:6;3125:16;;;;;2135:1012;;;;;:::o;3152:830::-;3247:6;3255;3263;3271;3279;3332:3;3320:9;3311:7;3307:23;3303:33;3300:53;;;3349:1;3346;3339:12;3300:53;3388:9;3375:23;3407:31;3432:5;3407:31;:::i;:::-;3457:5;-1:-1:-1;3535:2:9;3520:18;;3507:32;;-1:-1:-1;3616:2:9;3601:18;;3588:32;3643:18;3632:30;;3629:50;;;3675:1;3672;3665:12;3629:50;3714:58;3764:7;3755:6;3744:9;3740:22;3714:58;:::i;:::-;3791:8;;-1:-1:-1;3688:84:9;-1:-1:-1;;3878:2:9;3863:18;;3850:32;3926:4;3913:18;;3901:31;;3891:59;;3946:1;3943;3936:12;3891:59;3969:7;3959:17;;;3152:830;;;;;;;;:::o;3987:250::-;4072:1;4082:113;4096:6;4093:1;4090:13;4082:113;;;4172:11;;;4166:18;4153:11;;;4146:39;4118:2;4111:10;4082:113;;;-1:-1:-1;;4229:1:9;4211:16;;4204:27;3987:250::o;4242:270::-;4283:3;4321:5;4315:12;4348:6;4343:3;4336:19;4364:76;4433:6;4426:4;4421:3;4417:14;4410:4;4403:5;4399:16;4364:76;:::i;:::-;4494:2;4473:15;-1:-1:-1;;4469:29:9;4460:39;;;;4501:4;4456:50;;4242:270;-1:-1:-1;;4242:270:9:o;4517:217::-;4664:2;4653:9;4646:21;4627:4;4684:44;4724:2;4713:9;4709:18;4701:6;4684:44;:::i;4739:544::-;4818:6;4826;4834;4887:2;4875:9;4866:7;4862:23;4858:32;4855:52;;;4903:1;4900;4893:12;4855:52;4942:9;4929:23;4961:31;4986:5;4961:31;:::i;:::-;5011:5;-1:-1:-1;5067:2:9;5052:18;;5039:32;5094:18;5083:30;;5080:50;;;5126:1;5123;5116:12;5080:50;5165:58;5215:7;5206:6;5195:9;5191:22;5165:58;:::i;:::-;4739:544;;5242:8;;-1:-1:-1;5139:84:9;;-1:-1:-1;;;;4739:544:9:o;5820:487::-;5897:6;5905;5913;5966:2;5954:9;5945:7;5941:23;5937:32;5934:52;;;5982:1;5979;5972:12;5934:52;6027:23;;;-1:-1:-1;6126:2:9;6111:18;;6098:32;6139:33;6098:32;6139:33;:::i;:::-;5820:487;;6191:7;;-1:-1:-1;;;6271:2:9;6256:18;;;;6243:32;;5820:487::o;6312:477::-;6400:6;6408;6416;6469:2;6457:9;6448:7;6444:23;6440:32;6437:52;;;6485:1;6482;6475:12;6437:52;6530:16;;6615:2;6600:18;;6594:25;6530:16;;-1:-1:-1;6628:33:9;6594:25;6628:33;:::i;:::-;6753:2;6738:18;;;;6732:25;6312:477;;6680:7;;-1:-1:-1;6732:25:9;;6312:477;-1:-1:-1;;6312:477:9:o;6794:251::-;6864:6;6917:2;6905:9;6896:7;6892:23;6888:32;6885:52;;;6933:1;6930;6923:12;6885:52;6965:9;6959:16;6984:31;7009:5;6984:31;:::i;7393:232::-;7432:3;7453:17;;;7450:140;;7512:10;7507:3;7503:20;7500:1;7493:31;7547:4;7544:1;7537:15;7575:4;7572:1;7565:15;7450:140;-1:-1:-1;7617:1:9;7606:13;;7393:232::o;7630:271::-;7813:6;7805;7800:3;7787:33;7769:3;7839:16;;7864:13;;;7839:16;7630:271;-1:-1:-1;7630:271:9:o;9292:127::-;9353:10;9348:3;9344:20;9341:1;9334:31;9384:4;9381:1;9374:15;9408:4;9405:1;9398:15;9424:288;9599:6;9588:9;9581:25;9642:2;9637;9626:9;9622:18;9615:30;9562:4;9662:44;9702:2;9691:9;9687:18;9679:6;9662:44;:::i;:::-;9654:52;9424:288;-1:-1:-1;;;;9424:288:9:o;9717:287::-;9846:3;9884:6;9878:13;9900:66;9959:6;9954:3;9947:4;9939:6;9935:17;9900:66;:::i;:::-;9982:16;;;;;9717:287;-1:-1:-1;;9717:287:9:o;10009:184::-;10079:6;10132:2;10120:9;10111:7;10107:23;10103:32;10100:52;;;10148:1;10145;10138:12;10100:52;-1:-1:-1;10171:16:9;;10009:184;-1:-1:-1;10009:184:9:o"},"gasEstimates":{"creation":{"codeDepositCost":"736200","executionCost":"773","totalCost":"736973"},"external":{"execute(address,uint256,bytes,uint8)":"infinite","initialize(uint256,address,uint256)":"68876","isValidSignature(bytes32,bytes)":"infinite","isValidSigner(address,bytes)":"infinite","onERC721Received(address,address,uint256,bytes)":"infinite","state()":"2317","supportsInterface(bytes4)":"537","token()":"6587"},"internal":{"_isValidSigner(address)":"infinite"}},"methodIdentifiers":{"execute(address,uint256,bytes,uint8)":"51945447","initialize(uint256,address,uint256)":"fffb5183","isValidSignature(bytes32,bytes)":"1626ba7e","isValidSigner(address,bytes)":"523e3260","onERC721Received(address,address,uint256,bytes)":"150b7a02","state()":"c19d93fb","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"isValidSigner\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"ERC6551 Team\",\"kind\":\"dev\",\"methods\":{\"execute(address,uint256,bytes,uint8)\":{\"details\":\"Executes a transaction from the token owner\"},\"initialize(uint256,address,uint256)\":{\"details\":\"Initialization function that stores token data This is called by the registry during account creation\"},\"isValidSignature(bytes32,bytes)\":{\"details\":\"Validates signatures according to ERC-1271\"},\"isValidSigner(address,bytes)\":{\"details\":\"Validates if a signer is authorized to perform actions\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Implements IERC721Receiver interface to allow the account to receive ERC721 tokens\"},\"supportsInterface(bytes4)\":{\"details\":\"Implements interface detection\"},\"token()\":{\"details\":\"Returns the token bound to this account\"}},\"stateVariables\":{\"TOKEN_DATA_SLOT\":{\"details\":\"Storage slot for token data This is written during initialization by the registry Structure: chainId (uint256), tokenContract (address), tokenId (uint256)\"},\"state\":{\"details\":\"Account state nonce, incremented on each transaction\"}},\"title\":\"A simple implementation of ERC6551Account\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC6551Account.sol\":\"ERC6551Account\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n */\\ninterface IERC1271 {\\n    /**\\n     * @dev Should return whether the signature provided is valid for the provided data\\n     * @param hash      Hash of the data to be signed\\n     * @param signature Signature byte array associated with `hash`\\n     */\\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x3d4cd07258d675b6dfa3d9dfd623a77b38fb9935f4a5381ff4bc969948720976\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title ERC-721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC-721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\\n     * reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS\\n    }\\n\\n    /**\\n     * @dev The signature derives the `address(0)`.\\n     */\\n    error ECDSAInvalidSignature();\\n\\n    /**\\n     * @dev The signature has an invalid length.\\n     */\\n    error ECDSAInvalidSignatureLength(uint256 length);\\n\\n    /**\\n     * @dev The signature has an S value that is in the upper half order.\\n     */\\n    error ECDSAInvalidSignatureS(bytes32 s);\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\n     * and a bytes32 providing additional information about the error.\\n     *\\n     * If no error is returned, then the address can be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            assembly (\\\"memory-safe\\\") {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        unchecked {\\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\\n            return tryRecover(hash, v, r, s);\\n        }\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS, s);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\\n        }\\n\\n        return (signer, RecoverError.NoError, bytes32(0));\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\n     */\\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert ECDSAInvalidSignature();\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert ECDSAInvalidSignatureS(errorArg);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/SignatureChecker.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ECDSA} from \\\"./ECDSA.sol\\\";\\nimport {IERC1271} from \\\"../../interfaces/IERC1271.sol\\\";\\n\\n/**\\n * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA\\n * signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like\\n * Argent and Safe Wallet (previously Gnosis Safe).\\n */\\nlibrary SignatureChecker {\\n    /**\\n     * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the\\n     * signature is validated against that smart contract using ERC-1271, otherwise it's validated using `ECDSA.recover`.\\n     *\\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\\n     */\\n    function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) internal view returns (bool) {\\n        if (signer.code.length == 0) {\\n            (address recovered, ECDSA.RecoverError err, ) = ECDSA.tryRecover(hash, signature);\\n            return err == ECDSA.RecoverError.NoError && recovered == signer;\\n        } else {\\n            return isValidERC1271SignatureNow(signer, hash, signature);\\n        }\\n    }\\n\\n    /**\\n     * @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\\n     * against the signer smart contract using ERC-1271.\\n     *\\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\\n     */\\n    function isValidERC1271SignatureNow(\\n        address signer,\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal view returns (bool) {\\n        (bool success, bytes memory result) = signer.staticcall(\\n            abi.encodeCall(IERC1271.isValidSignature, (hash, signature))\\n        );\\n        return (success &&\\n            result.length >= 32 &&\\n            abi.decode(result, (bytes32)) == bytes32(IERC1271.isValidSignature.selector));\\n    }\\n}\\n\",\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"contracts/ERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC1271.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\\\";\\nimport \\\"./interfaces/IERC6551Account.sol\\\";\\nimport \\\"./interfaces/IERC6551Executable.sol\\\";\\n\\n/**\\n * @title A simple implementation of ERC6551Account\\n * @author ERC6551 Team\\n */\\ncontract ERC6551Account is\\n    IERC165,\\n    IERC1271,\\n    IERC6551Account,\\n    IERC6551Executable,\\n    IERC721Receiver\\n{\\n    /**\\n     * @dev Account state nonce, incremented on each transaction\\n     */\\n    uint256 public state;\\n\\n    /**\\n     * @dev Storage slot for token data\\n     * This is written during initialization by the registry\\n     * Structure: chainId (uint256), tokenContract (address), tokenId (uint256)\\n     */\\n    bytes32 private constant TOKEN_DATA_SLOT =\\n        keccak256(\\\"erc6551.account.token\\\");\\n\\n    /**\\n     * @dev Allows the account to receive ETH\\n     */\\n    receive() external payable {}\\n\\n    /**\\n     * @dev Executes a transaction from the token owner\\n     */\\n    function execute(\\n        address to,\\n        uint256 value,\\n        bytes calldata data,\\n        uint8 operation\\n    ) external payable returns (bytes memory result) {\\n        require(_isValidSigner(msg.sender), \\\"Invalid signer\\\");\\n\\n        ++state;\\n\\n        if (operation == 0) {\\n            // Call\\n            (bool success, bytes memory ret) = to.call{value: value}(data);\\n            require(success, \\\"Call failed\\\");\\n            return ret;\\n        } else if (operation == 1) {\\n            // Delegatecall\\n            (bool success, bytes memory ret) = to.delegatecall(data);\\n            require(success, \\\"Delegatecall failed\\\");\\n            return ret;\\n        } else {\\n            revert(\\\"Unsupported operation\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the token bound to this account\\n     */\\n    function token()\\n        external\\n        view\\n        returns (uint256 chainId, address tokenContract, uint256 tokenId)\\n    {\\n        // Read the token data from storage\\n        bytes32 slot = TOKEN_DATA_SLOT;\\n        assembly {\\n            chainId := sload(slot)\\n            tokenContract := sload(add(slot, 1))\\n            tokenId := sload(add(slot, 2))\\n        }\\n    }\\n\\n    /**\\n     * @dev Initialization function that stores token data\\n     * This is called by the registry during account creation\\n     */\\n    function initialize(\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external {\\n        // Ensure this can only be called once during creation\\n        bytes32 slot = TOKEN_DATA_SLOT;\\n        uint256 storedChainId;\\n        assembly {\\n            storedChainId := sload(slot)\\n        }\\n        require(storedChainId == 0, \\\"Already initialized\\\");\\n\\n        // Store token data in storage\\n        assembly {\\n            sstore(slot, chainId)\\n            sstore(add(slot, 1), tokenContract)\\n            sstore(add(slot, 2), tokenId)\\n        }\\n    }\\n\\n    /**\\n     * @dev Validates if a signer is authorized to perform actions\\n     */\\n    function isValidSigner(\\n        address signer,\\n        bytes calldata\\n    ) external view returns (bytes4) {\\n        if (_isValidSigner(signer)) {\\n            return IERC6551Account.isValidSigner.selector;\\n        }\\n\\n        return bytes4(0);\\n    }\\n\\n    /**\\n     * @dev Validates signatures according to ERC-1271\\n     */\\n    function isValidSignature(\\n        bytes32 hash,\\n        bytes memory signature\\n    ) external view returns (bytes4 magicValue) {\\n        (uint256 chainId, address tokenContract, uint256 tokenId) = this\\n            .token();\\n\\n        if (chainId != block.chainid) return bytes4(0);\\n\\n        address owner = IERC721(tokenContract).ownerOf(tokenId);\\n\\n        if (SignatureChecker.isValidSignatureNow(owner, hash, signature)) {\\n            return IERC1271.isValidSignature.selector;\\n        }\\n\\n        return bytes4(0);\\n    }\\n\\n    /**\\n     * @dev Implements IERC721Receiver interface to allow the account to receive ERC721 tokens\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external override returns (bytes4) {\\n        return IERC721Receiver.onERC721Received.selector;\\n    }\\n\\n    /**\\n     * @dev Implements interface detection\\n     */\\n    function supportsInterface(\\n        bytes4 interfaceId\\n    ) external pure returns (bool) {\\n        return (interfaceId == type(IERC165).interfaceId ||\\n            interfaceId == type(IERC6551Account).interfaceId ||\\n            interfaceId == type(IERC6551Executable).interfaceId ||\\n            interfaceId == type(IERC721Receiver).interfaceId);\\n    }\\n\\n    /**\\n     * @dev Internal helper to check if a signer is valid\\n     */\\n    function _isValidSigner(address signer) internal view returns (bool) {\\n        (uint256 chainId, address tokenContract, uint256 tokenId) = this\\n            .token();\\n\\n        if (chainId != block.chainid) return false;\\n\\n        return signer == IERC721(tokenContract).ownerOf(tokenId);\\n    }\\n}\\n\",\"keccak256\":\"0x014180d46b1a152b86d820e6cb76e4223784471073c8da7d6ba387cd5997f28b\",\"license\":\"MIT\"},\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/// @dev the ERC-165 identifier for this interface is `0x6faff5f1`\\ninterface IERC6551Account {\\n    /**\\n     * @dev Allows the account to receive Ether.\\n     *\\n     * Accounts MUST implement a `receive` function.\\n     *\\n     * Accounts MAY perform arbitrary logic to restrict conditions\\n     * under which Ether can be received.\\n     */\\n    receive() external payable;\\n\\n    /**\\n     * @dev Returns the identifier of the non-fungible token which owns the account.\\n     *\\n     * The return value of this function MUST be constant - it MUST NOT change over time.\\n     *\\n     * @return chainId       The EIP-155 ID of the chain the token exists on\\n     * @return tokenContract The contract address of the token\\n     * @return tokenId       The ID of the token\\n     */\\n    function token()\\n        external\\n        view\\n        returns (uint256 chainId, address tokenContract, uint256 tokenId);\\n\\n    /**\\n     * @dev Returns a value that SHOULD be modified each time the account changes state.\\n     *\\n     * @return The current account state\\n     */\\n    function state() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns a magic value indicating whether a given signer is authorized to act on behalf\\n     * of the account.\\n     *\\n     * MUST return the bytes4 magic value 0x523e3260 if the given signer is valid.\\n     *\\n     * By default, the holder of the non-fungible token the account is bound to MUST be considered\\n     * a valid signer.\\n     *\\n     * Accounts MAY implement additional authorization logic which invalidates the holder as a\\n     * signer or grants signing permissions to other non-holder accounts.\\n     *\\n     * @param  signer     The address to check signing authorization for\\n     * @param  context    Additional data used to determine whether the signer is valid\\n     * @return magicValue Magic value indicating whether the signer is valid\\n     */\\n    function isValidSigner(address signer, bytes calldata context)\\n        external\\n        view\\n        returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0xda097894cc052f451ad669c5a07a9eda3f53a948f8080714850dc68cc1040b42\",\"license\":\"MIT\"},\"contracts/interfaces/IERC6551Executable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/// @dev the ERC-165 identifier for this interface is `0x51945447`\\ninterface IERC6551Executable {\\n    /**\\n     * @dev Executes a low-level operation if the caller is a valid signer on the account.\\n     *\\n     * Reverts and bubbles up error if operation fails.\\n     *\\n     * Accounts implementing this interface MUST accept the following operation parameter values:\\n     * - 0 = CALL\\n     * - 1 = DELEGATECALL\\n     * - 2 = CREATE\\n     * - 3 = CREATE2\\n     *\\n     * Accounts implementing this interface MAY support additional operations or restrict a signer's\\n     * ability to execute certain operations.\\n     *\\n     * @param to        The target address of the operation\\n     * @param value     The Ether value to be sent to the target\\n     * @param data      The encoded operation calldata\\n     * @param operation A value indicating the type of operation to perform\\n     * @return The result of the operation\\n     */\\n    function execute(address to, uint256 value, bytes calldata data, uint8 operation)\\n        external\\n        payable\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x9bdb7a7e324bf36203ec6ff68c454446cae3993c1054b0356a081fa52ec43a29\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":639,"contract":"contracts/ERC6551Account.sol:ERC6551Account","label":"state","offset":0,"slot":"0","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IERC6551Account.sol":{"IERC6551Account":{"abi":[{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"context","type":"bytes"}],"name":"isValidSigner","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"the ERC-165 identifier for this interface is `0x6faff5f1`","kind":"dev","methods":{"isValidSigner(address,bytes)":{"details":"Returns a magic value indicating whether a given signer is authorized to act on behalf of the account. MUST return the bytes4 magic value 0x523e3260 if the given signer is valid. By default, the holder of the non-fungible token the account is bound to MUST be considered a valid signer. Accounts MAY implement additional authorization logic which invalidates the holder as a signer or grants signing permissions to other non-holder accounts.","params":{"context":"Additional data used to determine whether the signer is valid","signer":"The address to check signing authorization for"},"returns":{"magicValue":"Magic value indicating whether the signer is valid"}},"state()":{"details":"Returns a value that SHOULD be modified each time the account changes state.","returns":{"_0":"The current account state"}},"token()":{"details":"Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.","returns":{"chainId":"      The EIP-155 ID of the chain the token exists on","tokenContract":"The contract address of the token","tokenId":"      The ID of the token"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isValidSigner(address,bytes)":"523e3260","state()":"c19d93fb","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"}],\"name\":\"isValidSigner\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is `0x6faff5f1`\",\"kind\":\"dev\",\"methods\":{\"isValidSigner(address,bytes)\":{\"details\":\"Returns a magic value indicating whether a given signer is authorized to act on behalf of the account. MUST return the bytes4 magic value 0x523e3260 if the given signer is valid. By default, the holder of the non-fungible token the account is bound to MUST be considered a valid signer. Accounts MAY implement additional authorization logic which invalidates the holder as a signer or grants signing permissions to other non-holder accounts.\",\"params\":{\"context\":\"Additional data used to determine whether the signer is valid\",\"signer\":\"The address to check signing authorization for\"},\"returns\":{\"magicValue\":\"Magic value indicating whether the signer is valid\"}},\"state()\":{\"details\":\"Returns a value that SHOULD be modified each time the account changes state.\",\"returns\":{\"_0\":\"The current account state\"}},\"token()\":{\"details\":\"Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.\",\"returns\":{\"chainId\":\"      The EIP-155 ID of the chain the token exists on\",\"tokenContract\":\"The contract address of the token\",\"tokenId\":\"      The ID of the token\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC6551Account.sol\":\"IERC6551Account\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/// @dev the ERC-165 identifier for this interface is `0x6faff5f1`\\ninterface IERC6551Account {\\n    /**\\n     * @dev Allows the account to receive Ether.\\n     *\\n     * Accounts MUST implement a `receive` function.\\n     *\\n     * Accounts MAY perform arbitrary logic to restrict conditions\\n     * under which Ether can be received.\\n     */\\n    receive() external payable;\\n\\n    /**\\n     * @dev Returns the identifier of the non-fungible token which owns the account.\\n     *\\n     * The return value of this function MUST be constant - it MUST NOT change over time.\\n     *\\n     * @return chainId       The EIP-155 ID of the chain the token exists on\\n     * @return tokenContract The contract address of the token\\n     * @return tokenId       The ID of the token\\n     */\\n    function token()\\n        external\\n        view\\n        returns (uint256 chainId, address tokenContract, uint256 tokenId);\\n\\n    /**\\n     * @dev Returns a value that SHOULD be modified each time the account changes state.\\n     *\\n     * @return The current account state\\n     */\\n    function state() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns a magic value indicating whether a given signer is authorized to act on behalf\\n     * of the account.\\n     *\\n     * MUST return the bytes4 magic value 0x523e3260 if the given signer is valid.\\n     *\\n     * By default, the holder of the non-fungible token the account is bound to MUST be considered\\n     * a valid signer.\\n     *\\n     * Accounts MAY implement additional authorization logic which invalidates the holder as a\\n     * signer or grants signing permissions to other non-holder accounts.\\n     *\\n     * @param  signer     The address to check signing authorization for\\n     * @param  context    Additional data used to determine whether the signer is valid\\n     * @return magicValue Magic value indicating whether the signer is valid\\n     */\\n    function isValidSigner(address signer, bytes calldata context)\\n        external\\n        view\\n        returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0xda097894cc052f451ad669c5a07a9eda3f53a948f8080714850dc68cc1040b42\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IERC6551Executable.sol":{"IERC6551Executable":{"abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint8","name":"operation","type":"uint8"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"the ERC-165 identifier for this interface is `0x51945447`","kind":"dev","methods":{"execute(address,uint256,bytes,uint8)":{"details":"Executes a low-level operation if the caller is a valid signer on the account. Reverts and bubbles up error if operation fails. Accounts implementing this interface MUST accept the following operation parameter values: - 0 = CALL - 1 = DELEGATECALL - 2 = CREATE - 3 = CREATE2 Accounts implementing this interface MAY support additional operations or restrict a signer's ability to execute certain operations.","params":{"data":"The encoded operation calldata","operation":"A value indicating the type of operation to perform","to":"The target address of the operation","value":"The Ether value to be sent to the target"},"returns":{"_0":"The result of the operation"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"execute(address,uint256,bytes,uint8)":"51945447"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is `0x51945447`\",\"kind\":\"dev\",\"methods\":{\"execute(address,uint256,bytes,uint8)\":{\"details\":\"Executes a low-level operation if the caller is a valid signer on the account. Reverts and bubbles up error if operation fails. Accounts implementing this interface MUST accept the following operation parameter values: - 0 = CALL - 1 = DELEGATECALL - 2 = CREATE - 3 = CREATE2 Accounts implementing this interface MAY support additional operations or restrict a signer's ability to execute certain operations.\",\"params\":{\"data\":\"The encoded operation calldata\",\"operation\":\"A value indicating the type of operation to perform\",\"to\":\"The target address of the operation\",\"value\":\"The Ether value to be sent to the target\"},\"returns\":{\"_0\":\"The result of the operation\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC6551Executable.sol\":\"IERC6551Executable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Executable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/// @dev the ERC-165 identifier for this interface is `0x51945447`\\ninterface IERC6551Executable {\\n    /**\\n     * @dev Executes a low-level operation if the caller is a valid signer on the account.\\n     *\\n     * Reverts and bubbles up error if operation fails.\\n     *\\n     * Accounts implementing this interface MUST accept the following operation parameter values:\\n     * - 0 = CALL\\n     * - 1 = DELEGATECALL\\n     * - 2 = CREATE\\n     * - 3 = CREATE2\\n     *\\n     * Accounts implementing this interface MAY support additional operations or restrict a signer's\\n     * ability to execute certain operations.\\n     *\\n     * @param to        The target address of the operation\\n     * @param value     The Ether value to be sent to the target\\n     * @param data      The encoded operation calldata\\n     * @param operation A value indicating the type of operation to perform\\n     * @return The result of the operation\\n     */\\n    function execute(address to, uint256 value, bytes calldata data, uint8 operation)\\n        external\\n        payable\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x9bdb7a7e324bf36203ec6ff68c454446cae3993c1054b0356a081fa52ec43a29\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}}}}}